def getVideos(self, stype='last', page=1, genre=[], nums_onpage=20, query=''): if not VIDEO_CACHING: self.videos = {} params = {"type" : stype, "nums" : nums_onpage, "page" : page, "genre" : "|".join(genre) } if stype == 'text': params['query'] = query root = self.getData("/api/xml/vod_list?"+urllib.urlencode(params), "getting video list by type %s" % stype) videos_count = int(root.findtext('total')) self.currentPageIds = [] for v in root.find('rows'): vid = int(v.findtext('id')) self.currentPageIds += [vid] name = v.findtext('name').encode('utf-8') video = Video(name) video.name_orig = v.findtext('name_orig').encode('utf-8') video.descr = unescapeEntities(v.findtext('description')).encode('utf-8') video.image = v.findtext('poster') video.year = v.findtext('year') video.rate_imdb = floatConvert(v.findtext('rate_imdb')) video.rate_kinopoisk = floatConvert(v.findtext('rate_kinopoisk')) video.rate_mpaa = v.findtext('rate_mpaa') video.country = v.findtext('country').encode('utf-8') video.genre = v.findtext('genre_str').encode('utf-8') self.videos[vid] = video return videos_count
def getDayEpg(self, cid, date = None): if not date: date = syncTime() params = {"m" : "epg", "act" : "show_day_xml", "day" : date.strftime("%d%m%y"), "cid" : cid} root = self.getData("/?"+urllib.urlencode(params), "EPG for channel %s" % cid) epglist = [] archive = int(root.attrib.get("have_archive").encode("utf-8")) self.channels[cid].archive = archive for program in root: t = int(program.attrib.get("t_start").encode("utf-8")) time = datetime.datetime.fromtimestamp(t) progname = unescapeEntities(program.attrib.get("progname")).encode("utf-8") pdescr = unescapeEntities(program.attrib.get("pdescr")).encode("utf-8") epglist += [(time, progname, pdescr)] return epglist
def getGmtEpg(self, id): params = {"m" : "channels", "act" : "get_stream_url", "cid" : id, "gmt": (syncTime() + secTd(self.aTime)).strftime("%s"), "just_info" : 1 } root = self.getData("/?"+urllib.urlencode(params), "get GmtEpg of stream %s" % id) prog = unescapeEntities(root.attrib.get("programm")).encode("utf-8") tstart = datetime.datetime.fromtimestamp( int(root.attrib.get("start").encode("utf-8")) ) #unix tend = datetime.datetime.fromtimestamp( int(root.attrib.get("next").encode("utf-8")) ) self.channels[id].aepg = EpgEntry(prog, tstart, tend)
def getVideoInfo(self, vid): params = {"id": vid} root = self.getData("/api/xml/vod_info?" + urllib.urlencode(params), "getting video info %s" % vid) v = root.find('film') name = v.findtext('name').encode('utf-8') video = Video(name) video.name_orig = v.findtext('name_orig').encode('utf-8') video.descr = unescapeEntities( v.findtext('description')).encode('utf-8') video.image = v.findtext('poster') video.year = v.findtext('year') video.rate_imdb = floatConvert(v.findtext('rate_imdb')) video.rate_kinopoisk = floatConvert(v.findtext('rate_kinopoisk')) video.rate_mpaa = v.findtext('rate_mpaa') video.country = v.findtext('country').encode('utf-8') video.genre = v.findtext('genre_str').encode('utf-8') video.length = v.findtext('length') and int(v.findtext('length')) video.director = v.findtext('director').encode('utf-8') video.scenario = v.findtext('scenario').encode('utf-8') video.actors = v.findtext('actors').encode('utf-8') video.studio = v.findtext('studio') video.awards = v.findtext('awards') video.budget = v.findtext('budget') video.files = [] for f in v.find('videos'): episode = {} fid = int(f.findtext('id')) episode["format"] = f.findtext('format') episode["length"] = f.findtext('length') episode["title"] = f.findtext('title').encode( 'utf-8') or video.name episode["tracks"] = [] episode_name = "" if episode['title'] != video.name: episode_name = episode['title'] episode["name"] = video.name + " " + episode_name i = 1 while True: if f.find("track%d_codec" % i): episode["tracks"] += [ "%s-%s" % (f.findtext( "track%d_codec" % i), f.find("track%d_lang" % i)) ] i += 1 else: break video.files += [fid] self.filmFiles[fid] = episode self.videos[vid] = video
def getDayEpg(self, cid, date=None): if not date: date = syncTime() params = { "m": "epg", "act": "show_day_xml", "day": date.strftime("%d%m%y"), "cid": cid } root = self.getData("/?" + urllib.urlencode(params), "EPG for channel %s" % cid) epglist = [] archive = int(root.attrib.get("have_archive").encode("utf-8")) self.channels[cid].archive = archive for program in root: t = int(program.attrib.get("t_start").encode("utf-8")) time = datetime.datetime.fromtimestamp(t) progname = unescapeEntities( program.attrib.get("progname")).encode("utf-8") pdescr = unescapeEntities( program.attrib.get("pdescr")).encode("utf-8") epglist += [(time, progname, pdescr)] return epglist
def getGmtEpg(self, id): params = { "m": "channels", "act": "get_stream_url", "cid": id, "gmt": (syncTime() + secTd(self.aTime)).strftime("%s"), "just_info": 1 } root = self.getData("/?" + urllib.urlencode(params), "get GmtEpg of stream %s" % id) prog = unescapeEntities(root.attrib.get("programm")).encode("utf-8") tstart = datetime.datetime.fromtimestamp( int(root.attrib.get("start").encode("utf-8"))) #unix tend = datetime.datetime.fromtimestamp( int(root.attrib.get("next").encode("utf-8"))) self.channels[id].aepg = EpgEntry(prog, tstart, tend)
def getVideoInfo(self, vid): params = {"id": vid} root = self.getData("/api/xml/vod_info?"+urllib.urlencode(params), "getting video info %s" % vid) v = root.find('film') name = v.findtext('name').encode('utf-8') video = Video(name) video.name_orig = v.findtext('name_orig').encode('utf-8') video.descr = unescapeEntities(v.findtext('description')).encode('utf-8') video.image = v.findtext('poster') video.year = v.findtext('year') video.rate_imdb = floatConvert(v.findtext('rate_imdb')) video.rate_kinopoisk = floatConvert(v.findtext('rate_kinopoisk')) video.rate_mpaa = v.findtext('rate_mpaa') video.country = v.findtext('country').encode('utf-8') video.genre = v.findtext('genre_str').encode('utf-8') video.length = v.findtext('length') and int(v.findtext('length')) video.director = v.findtext('director').encode('utf-8') video.scenario = v.findtext('scenario').encode('utf-8') video.actors = v.findtext('actors').encode('utf-8') video.studio = v.findtext('studio') video.awards = v.findtext('awards') video.budget = v.findtext('budget') video.files = [] for f in v.find('videos'): episode = {} fid = int(f.findtext('id')) episode["format"] = f.findtext('format') episode["length"] = f.findtext('length') episode["title"] = f.findtext('title').encode('utf-8') or video.name episode["tracks"] = [] episode_name = "" if episode['title'] != video.name: episode_name = episode['title'] episode["name"] = video.name + " " + episode_name i = 1 while True: if f.find("track%d_codec" % i): episode["tracks"] += ["%s-%s" % (f.findtext("track%d_codec" % i), f.find("track%d_lang" % i))] i +=1 else: break video.files += [fid] self.filmFiles[fid] = episode self.videos[vid]= video
def getStreamUrl(self, cid, pin): params = {"m" : "channels", "act" : "get_stream_url", "cid" : cid} if self.aTime: params["gmt"] = (syncTime() + secTd(self.aTime)).strftime("%s") params["protect_code"] = pin root = self.getData("/?"+urllib.urlencode(params), "URL of stream %s" % cid) if self.aTime: prog = unescapeEntities(root.attrib.get("programm")) if prog: prog = prog.encode("utf-8") tstart = datetime.datetime.fromtimestamp( int(root.attrib.get("start").encode("utf-8")) ) #unix tend = datetime.datetime.fromtimestamp( int(root.attrib.get("next").encode("utf-8")) ) self.channels[cid].aepg = EpgEntry(prog, tstart, tend) url = root.attrib.get("url").encode("utf-8").split(' ')[0].replace('http/ts://', 'http://') if url == "protected": return 0 return url
def getStreamUrl(self, cid, pin): params = {"m": "channels", "act": "get_stream_url", "cid": cid} if self.aTime: params["gmt"] = (syncTime() + secTd(self.aTime)).strftime("%s") params["protect_code"] = pin root = self.getData("/?" + urllib.urlencode(params), "URL of stream %s" % cid) if self.aTime: prog = unescapeEntities(root.attrib.get("programm")) if prog: prog = prog.encode("utf-8") tstart = datetime.datetime.fromtimestamp( int(root.attrib.get("start").encode("utf-8"))) #unix tend = datetime.datetime.fromtimestamp( int(root.attrib.get("next").encode("utf-8"))) self.channels[cid].aepg = EpgEntry(prog, tstart, tend) url = root.attrib.get("url").encode("utf-8").split(' ')[0].replace( 'http/ts://', 'http://') if url == "protected": return 0 return url
def getVideos(self, stype='last', page=1, genre=[], nums_onpage=20, query=''): if not VIDEO_CACHING: self.videos = {} params = { "type": stype, "nums": nums_onpage, "page": page, "genre": "|".join(genre) } if stype == 'text': params['query'] = query root = self.getData("/api/xml/vod_list?" + urllib.urlencode(params), "getting video list by type %s" % stype) videos_count = int(root.findtext('total')) self.currentPageIds = [] for v in root.find('rows'): vid = int(v.findtext('id')) self.currentPageIds += [vid] name = v.findtext('name').encode('utf-8') video = Video(name) video.name_orig = v.findtext('name_orig').encode('utf-8') video.descr = unescapeEntities( v.findtext('description')).encode('utf-8') video.image = v.findtext('poster') video.year = v.findtext('year') video.rate_imdb = floatConvert(v.findtext('rate_imdb')) video.rate_kinopoisk = floatConvert(v.findtext('rate_kinopoisk')) video.rate_mpaa = v.findtext('rate_mpaa') video.country = v.findtext('country').encode('utf-8') video.genre = v.findtext('genre_str').encode('utf-8') self.videos[vid] = video return videos_count