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() |