123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- import os, re, sys, traceback, urllib
-
- from plex_test_case import PlexTestCase, PlexCall
- from Framework.api.objectkit import ObjectContainer
- from content.util import stream_type
- import syspath
- #for f in syspath.folders:
-
- def get_content(data, title="Title"):
- if not data.startswith("search"):
- data = data.replace("/", "%2F")
- data = urllib.quote(data)
- status, headers, body = t.request(u'/video/playstream/%s?title=%s' % (data, title))
- else: # Search object
- query = raw_input("Search: ")
- data = data.format(query)
- status, headers, body = t.request(u'/video/playstream/%s&query=%s' % (data, query))
- #print body
- #result = re.findall('title="([^"]+)"\s+thumb="([^"]+)"\s+key="([^"]+)"\s+summary="([^"]+)"', body)
- result = re.findall('<(\w+)\s(.+?)/>', body)
- result2 = []
- for item0 in result:
- item_type = item0[0]
- data2 = re.search('key="(.+?)"', item0[1]).group(1) if re.search('key="(.+?)"',item0[1]) else ""
- data2 = data2.replace("/video/playstream/", "")
- if not data2.startswith("search"):
- data2 = data2.split("?")[0]
- data2 = urllib.unquote(data2)
- data2 = data2.replace("%2F", "/")
- title = re.search('title="(.+?)"', item0[1]).group(1) if re.search('title="(.+?)"',item0[1]) else ""
- desc = re.search('summary="(.+?)"', item0[1]).group(1) if re.search('summary="(.+?)"',item0[1]) else ""
- result2.append((title, data2, "", desc, item_type))
- return result2
-
- def get_streams(data, title="Title"):
- data = data.replace("/", "%2F")
- data = urllib.quote(data)
- status, headers, body = t.request(u'/video/playstream/%s?title=%s' % (data, title))
- print body
- #TODO
- return []
-
-
- # os.environ["PLEXBUNDLEDPLUGINSPATH"] = r"C:\Data\Programming\Plex"
- os.environ["PLEXLOCALAPPDATA"] = r"C:\Data\Programming\Plex"
- t = PlexCall()
- #for item in get_content("config::home", "Home"):
- # print item
-
-
- if len(sys.argv)>1:
- data= sys.argv[1]
- else:
- data = "config::home"
-
- #options = sources.options_read("ltc")
- #print options
- history = []
- cur = ("Home",data,None,None)
- content = get_content(cur[1])
-
- exit_loop = False
- while True:
- print "\n======================================================="
- print "data= ", cur[1]
- print "======================================================="
- for i,item in enumerate(content):
- s = "%i: %s - %s %s"%(i,item[0],item[1],item[2])
- print s #.encode(sys.stdout.encoding,"replace")
-
- while True:
- a = raw_input("Enter number, (-) for download, q for exit: ")
- if a in ("q","Q","x","X"):
- exit_loop = True
- print "Exiting"
- break
- try:
- n = int(a)
- break
- except:
- print "Not number!"
- if exit_loop: break
- download = False
- if n<0:
- n = abs(n)
- download = True
- cur2 = content[n]
- data0 = cur2[1].split("::")[1] if "::" in cur2[1] else cur2[1]
- if not data0:
- pass
- # elif cur2[1] == "back":
- # cur = history.pop()
- elif cur2[4] == "Video": #is_video(cur2[1]):
- if stream_type(cur2[1]):
- stream = util.item()
- stream["url"] = cur2[1]
- stream["name"] = cur2[0]
- streams = [stream]
- else:
- try:
- if not download:
- streams = get_streams(cur2[1])
- else:
- stream = util.item()
- stream["url"] = cur2[1]
- stream["name"] = cur2[0]
- stream["url"] = util.streamproxy_encode2(stream["url"])
- print stream["url"]
- streams = [stream]
- except Exception as e:
- print unicode(e)
- traceback.print_exc()
- streams = []
- if streams:
- if not download:
- util.play_video(streams)
- else:
- #urlp = util.streamproxy_encode2(streams[0]["url"])
- #print urlp
- #util.player(urlp)
- #Downloader.download_video(streams)
- pass
- else:
- print "**No stream to play - %s "%(
- cur2[1])
- raw_input("Press any key")
- #import os
- #os.system('"c:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "%s"'%cur2[1])
-
- else:
- if "{0}" in cur2[1]:
- a = raw_input("Enter value:")
- cur2 = (cur2[0],cur2[1].format(a),cur2[2],cur2[3])
- history.append(cur)
- cur = cur2
- try:
- # Regular item
- content = get_content(cur[1])
- except Exception as e:
- print unicode(e)
- traceback.print_exc()
- raw_input("Continue?")
|