Last active 1443733079

Gets plex streaming urls. Pipe into cast.py (https://gist.github.com/blha303/8b100c205b8c35b3c8ce) for best results. List episodes and movies from plex by omitting titles (i.e getplex.py -m "" or getplex.py -s "Bla")

Revision 3a3c84ac6b4b61dde309f3036ca58f9a0da42204

getplex.py Raw
1#!/usr/bin/env python2.7
2from plexapi.server import PlexServer
3import argparse
4
5DEFAULT_URI = "http://192.168.1.50:32400"
6
7def 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
19def get_server(uri=DEFAULT_URI):
20 return PlexServer(uri)
21
22def lookup_movie(server, movie):
23 return server.library.section("Movies").get(movie)
24
25def lookup_episode(server, show, episode):
26 return server.library.section("TV Shows").get(show).episode(episode)
27
28def 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
51if __name__ == "__main__":
52 main()