getplex.py
                        
                             · 2.0 KiB · Python
                        
                    
                    
                      
                        Raw
                      
                      
                        
                          
                        
                    
                    
                
                
            #!/usr/bin/env python2.7
from plexapi.server import PlexServer
import argparse
DEFAULT_URI = "http://192.168.1.50:32400"
def fmtcols(l):
    maxlen = max(len(i) for i in l)
    if len(l) % 2 != 0:
        l.append(" ")
    split = len(l)/2
    l1 = l[0:split]
    l2 = l[split:]
    o = []
    for key, value in zip(l1,l2):
        o.append(u"{0:<{2}s} {1}".format(key, value, maxlen))
    return u"\n".join(o)
def get_server(uri=DEFAULT_URI):
    return PlexServer(uri)
def lookup_movie(server, movie):
    return server.library.section("Movies").get(movie)
def lookup_episode(server, show, episode):
    return server.library.section("TV Shows").get(show).episode(episode)
def main():
    parser = argparse.ArgumentParser()
    group = parser.add_mutually_exclusive_group()
    group.add_argument("-m", "--movie", help="Specify movie. Must be exact title.")
    group.add_argument("-s", "--show", help="Specify show. Must be exact title.")
    parser.add_argument("-e", "--episode", help="Specify episode. Get list of episodes by specifying show")
    parser.add_argument("-S", "--server", nargs="?", help="Specify server. Defaults to {}".format(DEFAULT_URI), default=DEFAULT_URI)
    args = parser.parse_args()
    server = get_server(args.server)
    if args.movie is not None:
        if args.movie is "":
            print fmtcols([u"{}".format(movie.title) for movie in server.library.section("Movies").all()])
        else:
            print lookup_movie(server, args.movie).getStreamUrl()
    elif args.show is not None:
        if args.show is "":
            print fmtcols([u"{}".format(show.title) for show in server.library.section("TV Shows").all()])
        else:
            if args.episode:
                print lookup_episode(server, args.show, args.episode).getStreamUrl()
            else:
                print fmtcols([u"S{}E{} {}".format(ep.parentIndex.zfill(2), ep.index.zfill(2), ep.title) for ep in server.library.section("TV Shows").get(args.show).episodes()])
if __name__ == "__main__":
    main()
                | 1 | #!/usr/bin/env python2.7 | 
| 2 | from plexapi.server import PlexServer | 
| 3 | import argparse | 
| 4 | |
| 5 | DEFAULT_URI = "http://192.168.1.50:32400" | 
| 6 | |
| 7 | def fmtcols(l): | 
| 8 | maxlen = max(len(i) for i in l) | 
| 9 | if len(l) % 2 != 0: | 
| 10 | l.append(" ") | 
| 11 | split = len(l)/2 | 
| 12 | l1 = l[0:split] | 
| 13 | l2 = l[split:] | 
| 14 | o = [] | 
| 15 | for key, value in zip(l1,l2): | 
| 16 | o.append(u"{0:<{2}s} {1}".format(key, value, maxlen)) | 
| 17 | return u"\n".join(o) | 
| 18 | |
| 19 | def get_server(uri=DEFAULT_URI): | 
| 20 | return PlexServer(uri) | 
| 21 | |
| 22 | def lookup_movie(server, movie): | 
| 23 | return server.library.section("Movies").get(movie) | 
| 24 | |
| 25 | def lookup_episode(server, show, episode): | 
| 26 | return server.library.section("TV Shows").get(show).episode(episode) | 
| 27 | |
| 28 | def main(): | 
| 29 | parser = argparse.ArgumentParser() | 
| 30 | group = parser.add_mutually_exclusive_group() | 
| 31 | group.add_argument("-m", "--movie", help="Specify movie. Must be exact title.") | 
| 32 | group.add_argument("-s", "--show", help="Specify show. Must be exact title.") | 
| 33 | parser.add_argument("-e", "--episode", help="Specify episode. Get list of episodes by specifying show") | 
| 34 | parser.add_argument("-S", "--server", nargs="?", help="Specify server. Defaults to {}".format(DEFAULT_URI), default=DEFAULT_URI) | 
| 35 | args = parser.parse_args() | 
| 36 | server = get_server(args.server) | 
| 37 | if args.movie is not None: | 
| 38 | if args.movie is "": | 
| 39 | print fmtcols([u"{}".format(movie.title) for movie in server.library.section("Movies").all()]) | 
| 40 | else: | 
| 41 | print lookup_movie(server, args.movie).getStreamUrl() | 
| 42 | elif args.show is not None: | 
| 43 | if args.show is "": | 
| 44 | print fmtcols([u"{}".format(show.title) for show in server.library.section("TV Shows").all()]) | 
| 45 | else: | 
| 46 | if args.episode: | 
| 47 | print lookup_episode(server, args.show, args.episode).getStreamUrl() | 
| 48 | else: | 
| 49 | print fmtcols([u"S{}E{} {}".format(ep.parentIndex.zfill(2), ep.index.zfill(2), ep.title) for ep in server.library.section("TV Shows").get(args.show).episodes()]) | 
| 50 | |
| 51 | if __name__ == "__main__": | 
| 52 | main() |