def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources data = os.path.join(control.dataPath, 'movietv.db') try: control.deleteFile(data) except: pass data = os.path.join(control.dataPath, 'movietv2.db') download = True try: download = abs(datetime.datetime.fromtimestamp(os.path.getmtime(data)) - (datetime.datetime.now())) > datetime.timedelta(days=7) except: pass if download == True: result = client.source(base64.b64decode(self.data_link)) zip = zipfile.ZipFile(StringIO.StringIO(result)) zip.extractall(control.dataPath) zip.close() dbcon = database.connect(data) dbcur = dbcon.cursor() content = re.compile('(.+?)\?S\d*E\d*$').findall(url) try: url, handler = re.compile('(.+?)\?(S\d*E\d*)$').findall(url)[0] except: pass if len(content) == 0: dbcur.execute("SELECT * FROM movies") result = dbcur.fetchall() result = [eval(i[1].encode('utf-8')) for i in result] result = sum(result, []) result = [i for i in result if i[0] == url][0] else: dbcur.execute("SELECT * FROM tvshows") result = dbcur.fetchall() result = [eval(i[1].encode('utf-8')) for i in result] result = sum(result, []) result = [i for i in result if i[0] == url] result = [i for i in result if i[4] == handler][0] url = '%s|Referer=%s' % (result[1], urllib.quote_plus(urlparse.urljoin(self.base_link, result[0]))) sources.append({'source': 'MovieTV', 'quality': 'HD', 'provider': 'MovieTV', 'url': url}) return sources except: return sources
def get_show(self, imdb, tvdb, tvshowtitle, year): try: data = os.path.join(control.dataPath, 'movietv.db') try: control.deleteFile(data) except: pass data = os.path.join(control.dataPath, 'movietv2.db') download = True try: download = abs( datetime.datetime.fromtimestamp(os.path.getmtime(data)) - (datetime.datetime.now())) > datetime.timedelta(days=7) except: pass if download == True: result = client.source(base64.b64decode(self.data_link)) zip = zipfile.ZipFile(StringIO.StringIO(result)) zip.extractall(control.dataPath) zip.close() dbcon = database.connect(data) dbcur = dbcon.cursor() dbcur.execute("SELECT * FROM tvshows WHERE year = '%s'" % year) result = dbcur.fetchone() result = eval(result[1].encode('utf-8')) tvshowtitle = cleantitle.tv(tvshowtitle) years = [ '%s' % str(year), '%s' % str(int(year) + 1), '%s' % str(int(year) - 1) ] result = [i for i in result if tvshowtitle == cleantitle.tv(i[2])] result = [i[0] for i in result if any(x in i[3] for x in years)][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def keyboard(response): try: i = os.path.join(control.dataPath, 'img') f = control.openFile(i, 'w') f.write(client.request(response)) f.close() f = control.image(450, 5, 375, 115, i) d = control.windowDialog d.addControl(f) control.deleteFile(i) d.show() t = 'Type the letters in the image' k = control.keyboard('', t) k.doModal() c = k.getText() if k.isConfirmed() else None if c == '': c = None d.removeControl(f) d.close() return c except: return
def keyboard(response): try: i = os.path.join(control.dataPath,'img') f = control.openFile(i, 'w') f.write(client.request(response)) f.close() f = control.image(450,5,375,115, i) d = control.windowDialog d.addControl(f) control.deleteFile(i) d.show() t = 'Type the letters in the image' k = control.keyboard('', t) k.doModal() c = k.getText() if k.isConfirmed() else None if c == '': c = None d.removeControl(f) d.close() return c except: return
def get_show(self, imdb, tvdb, tvshowtitle, year): try: data = os.path.join(control.dataPath, 'movietv.db') try: control.deleteFile(data) except: pass data = os.path.join(control.dataPath, 'movietv2.db') download = True try: download = abs(datetime.datetime.fromtimestamp(os.path.getmtime(data)) - (datetime.datetime.now())) > datetime.timedelta(days=7) except: pass if download == True: result = client.source(base64.b64decode(self.data_link)) zip = zipfile.ZipFile(StringIO.StringIO(result)) zip.extractall(control.dataPath) zip.close() dbcon = database.connect(data) dbcur = dbcon.cursor() dbcur.execute("SELECT * FROM tvshows WHERE year = '%s'" % year) result = dbcur.fetchone() result = eval(result[1].encode('utf-8')) tvshowtitle = cleantitle.tv(tvshowtitle) years = ['%s' % str(year), '%s' % str(int(year)+1), '%s' % str(int(year)-1)] result = [i for i in result if tvshowtitle == cleantitle.tv(i[2])] result = [i[0] for i in result if any(x in i[3] for x in years)][0] try: url = re.compile('//.+?(/.+)').findall(result)[0] except: url = result url = client.replaceHTMLCodes(url) url = url.encode('utf-8') return url except: return
def resolve(self, url): try: m3u8 = [ '#EXTM3U', '#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",DEFAULT=YES,AUTOSELECT=YES,NAME="Stream 1",URI="{audio_stream}"', '', '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=0,NAME="{stream_name}",AUDIO="audio"', '{video_stream}' ] query = urlparse.parse_qs(url) query = dict([(key, query[key][0]) if query[key] else (key, '') for key in query]) auth = 'http://streamtorrent.tv/api/torrent/%s/%s.m3u8?json=true' % ( query['vid_id'], query['stream_id']) r = client.request(auth) r = json.loads(r) try: url = r['url'] except: url = None if not url == None: def dialog(url): try: self.disableScraper = control.yesnoDialog( 'To watch this video visit from any device', '[COLOR skyblue]%s[/COLOR]' % url, '', 'Torba', 'Cancel', 'Settings') except: pass workers.Thread(dialog, url).start() control.sleep(3000) for i in range(100): try: if not control.condVisibility( 'Window.IsActive(yesnoDialog)'): break r = client.request(auth) r = json.loads(r) try: url = r['url'] except: url = None if url == None: break workers.Thread(dialog, url).start() control.sleep(3000) except: pass if self.disableScraper: control.openSettings(query='2.0') return '' control.execute('Dialog.Close(yesnoDialog)') if not url == None: return stream_name = '%sp' % (query['height']) video_stream = r[stream_name] if not 'audio' in r: return video_stream audio_stream = r['audio'] content = ('\n'.join(m3u8)).format( **{ 'audio_stream': audio_stream, 'stream_name': stream_name, 'video_stream': video_stream }) path = os.path.join(control.dataPath, 'torbase.m3u8') control.makeFile(control.dataPath) control.deleteFile(path) file = control.openFile(path, 'w') file.write(content) file.close() return path except: return
def get_sources(self, url, hosthdDict, hostDict, locDict): try: sources = [] if url == None: return sources data = os.path.join(control.dataPath, 'movietv.db') try: control.deleteFile(data) except: pass data = os.path.join(control.dataPath, 'movietv2.db') download = True try: download = abs( datetime.datetime.fromtimestamp(os.path.getmtime(data)) - (datetime.datetime.now())) > datetime.timedelta(days=7) except: pass if download == True: result = client.source(base64.b64decode(self.data_link)) zip = zipfile.ZipFile(StringIO.StringIO(result)) zip.extractall(control.dataPath) zip.close() dbcon = database.connect(data) dbcur = dbcon.cursor() content = re.compile('(.+?)\?S\d*E\d*$').findall(url) try: url, handler = re.compile('(.+?)\?(S\d*E\d*)$').findall(url)[0] except: pass if len(content) == 0: dbcur.execute("SELECT * FROM movies") result = dbcur.fetchall() result = [eval(i[1].encode('utf-8')) for i in result] result = sum(result, []) result = [i for i in result if i[0] == url][0] else: dbcur.execute("SELECT * FROM tvshows") result = dbcur.fetchall() result = [eval(i[1].encode('utf-8')) for i in result] result = sum(result, []) result = [i for i in result if i[0] == url] result = [i for i in result if i[4] == handler][0] url = '%s|Referer=%s' % ( result[1], urllib.quote_plus(urlparse.urljoin(self.base_link, result[0]))) sources.append({ 'source': 'MovieTV', 'quality': 'HD', 'provider': 'MovieTV', 'url': url }) return sources except: return sources
def resolve(self, url): try: m3u8 = [ '#EXTM3U', '#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",DEFAULT=YES,AUTOSELECT=YES,NAME="Stream 1",URI="{audio_stream}"', '', '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=0,NAME="{stream_name}",AUDIO="audio"', '{video_stream}' ] query = urlparse.parse_qs(url) query = dict([(key, query[key][0]) if query[key] else (key, '') for key in query]) auth = 'http://streamtorrent.tv/api/torrent/%s/%s.m3u8?json=true' % (query['vid_id'], query['stream_id']) r = client.request(auth) r = json.loads(r) try: url = r['url'] except: url = None if not url == None: def dialog(url): try: self.disableScraper = control.yesnoDialog('To watch this video visit from any device', '[COLOR skyblue]%s[/COLOR]' % url, '', 'Torba', 'Cancel', 'Settings') except: pass workers.Thread(dialog, url).start() control.sleep(3000) for i in range(100): try: if not control.condVisibility('Window.IsActive(yesnoDialog)'): break r = client.request(auth) r = json.loads(r) try: url = r['url'] except: url = None if url == None: break workers.Thread(dialog, url).start() control.sleep(3000) except: pass if self.disableScraper: control.openSettings(query='2.0') return '' control.execute('Dialog.Close(yesnoDialog)') if not url == None: return stream_name = '%sp' % (query['height']) video_stream = r[stream_name] if not 'audio' in r: return video_stream audio_stream = r['audio'] content = ('\n'.join(m3u8)).format(**{'audio_stream': audio_stream, 'stream_name': stream_name, 'video_stream': video_stream}) path = os.path.join(control.dataPath, 'torbase.m3u8') control.makeFile(control.dataPath) ; control.deleteFile(path) file = control.openFile(path, 'w') ; file.write(content) ; file.close() return path except: return