def onClick(self, controlId): if controlId == self.btn_close: self.close() elif controlId == self.btn_submit: reportText = self.getControl(self.br_input).getText() if len(reportText) == 0: xbmc.executebuiltin( "XBMC.Notification(%s, %s, %s, %s)" % ('The Crew Bug Report', 'Bug Report Incomplete', 4000, control.addonIcon())) return self.close() result = webform.webform().bug_report('The Crew', reportText) if result is None: # Wait before submitting another report you f****n spammer xbmc.executebuiltin( "XBMC.Notification(%s, %s, %s, %s)" % ('The Crew Bug Report', 'Wait Before Next Submission', 4000, control.addonIcon())) elif result is False: # Failed to send. Site timed out or is down. Ya'll suck xbmc.executebuiltin( "XBMC.Notification(%s, %s, %s, %s)" % ('The Crew Bug Report', 'Submission Failed', 4000, control.addonIcon())) elif result is True: # Bug Report worked, F**K YEAH! xbmc.executebuiltin( "XBMC.Notification(%s, %s, %s, %s)" % ('The Crew Bug Report', 'Bug Report Completed', 4000, control.addonIcon()))
def playtorrentItem(name, id): torrInDownload = [] try: name = name.split('/')[-1] except: name = name try: downloads = realdebrid().transferList() torrInDownload = [ i for i in downloads if i['filename'].lower() == name.lower() ][0] except: pass if len(torrInDownload) > 0: item = control.item(label=name) item.setArt({'icon': control.addonIcon()}) item.setProperty('Fanart_Image', control.addonFanart()) infolabel = {"Title": name} item.setInfo(type='Video', infoLabels=infolabel) item.setProperty('IsPlayable', 'true') item = control.item(path=torrInDownload['download']) control.resolve(int(sys.argv[1]), True, item) else: newTorr = [] try: result = torrentItemToDownload(name, id) if result != None: newTorr.append(result) except: pass time.sleep(1) torrItem = newTorr[0] if len(torrItem) > 0: control.infoDialog('Playing Torrent Item', torrItem['filename'], time=3) item = control.item(label=name) item.setArt({'icon': control.addonIcon()}) item.setProperty('Fanart_Image', control.addonFanart()) infolabel = {"Title": name} item.setInfo(type='Video', infoLabels=infolabel) item.setProperty('IsPlayable', 'true') item = control.item(path=torrItem['download']) control.resolve(int(sys.argv[1]), True, item)
def reader(url): sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) VALID_EXT = debrid.VALID_EXT try: html = feedparser.parse(url) rssEntries = html.entries for item in rssEntries: try: title = item.title link = item.link label = title item = control.item(label=label) item.setArt({'icon': control.addonIcon()}) item.setProperty('Fanart_Image', control.addonFanart()) infolabel = {"Title": label} url = '%s?action=%s&id=%s' % (sysaddon, 'rdAddTorrent', urllib.quote_plus(link)) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass except: pass control.directory(syshandle, cacheToDisc=True)
def reader_cat(): sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) VALID_EXT = debrid.VALID_EXT rsslist = rssList() rsslist = [i for i in rsslist] try: for x in rsslist: link = x['rss'] u = link.split("//")[-1].split("/")[0].split('?')[0] title = u label = title item = control.item(label=label) item.setArt({'icon': control.addonIcon()}) item.setProperty('Fanart_Image', control.addonFanart()) infolabel = {"Title": label} url = '%s?action=%s&id=%s' % (sysaddon, 'rss_reader', link) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass control.directory(syshandle, cacheToDisc=True)
def play_next_episode(episode): time.sleep(3) while xbmc.getCondVisibility("Window.IsVisible(yesnodialog)") or xbmc.getCondVisibility("Window.IsVisible(busydialog)") or xbmc.getCondVisibility("Window.IsVisible(okdialog)"): time.sleep(1) item = episode from resources.lib.modules import control try: icon = item['poster'] except: icon = control.addonIcon() title = item['title'] year = item['year'] imdb = item['imdb'] tvdb = item['tvdb'] tmdb = '0' season = item['season'] episode = item['episode'] tvshowtitle = item['tvshowtitle'] premiered = item['premiered'] meta = item smartPlayMode = True select = control.setting('hosts.mode') sysmeta = urllib.quote_plus(json.dumps(meta)) systitle = urllib.quote_plus(item['title']) systvshowtitle = urllib.quote_plus(item['tvshowtitle']) syspremiered = urllib.quote_plus(item['premiered']) sysaddon = sys.argv[0] control.infoDialog('Playing Next Episode...', tvshowtitle, icon=icon, time=3000) time.sleep(2) url = 'RunPlugin(%s?action=play&title=%s&year=%s&imdb=%s&tvdb=%s&season=%s&episode=%s&tvshowtitle=%s&premiered=%s&meta=%s)' % (sysaddon, systitle, year, imdb, tvdb, season, episode, systvshowtitle, syspremiered, sysmeta) control.execute(url)
def docu_play(self, url): try: docu_page = client.request(url) docu_item = client.parseDOM(docu_page, 'meta', attrs={'itemprop': 'embedUrl'}, ret='content')[0] if 'http:' not in docu_item and 'https:' not in docu_item: docu_item = 'https:' + docu_item url = docu_item try: docu_title = re.findall( 'meta property="og:title" content="(.+?)"', docu_page)[0] except Exception: docu_title = re.findall('<title>(.+?)</title>', docu_page)[0] try: docu_icon = re.findall( 'meta property="og:image" content="(.+?)"', docu_page)[0] except Exception: docu_icon = control.addonIcon() if 'youtube' in url: if 'list=' not in url: video_id = client.parseDOM( docu_page, 'div', attrs={'class': 'youtube-player'}, ret='data-id')[0] url = 'plugin://plugin.video.youtube/play/?video_id=%s' % video_id else: playlist_id = url.split('list=')[1] url = 'plugin://plugin.video.youtube/play/?playlist_id=%s&play=1' % playlist_id else: url = source_utils.uResolve(url) if url is None: log_utils.log( 'Top Documentary Films: Unable to resolve url: ' + str(url)) control.infoDialog('Invalid Host - Report To Developer: ' + str(url), sound=True, icon='INFO') return li = control.item(docu_title, path=url) li.setArt({"thumb": docu_icon, "icon": docu_icon}) li.setInfo(type="video", infoLabels={"Title": docu_title}) li.setProperty('IsPlayable', 'true') control.resolve(handle=int(sys.argv[1]), succeeded=True, listitem=li) except Exception as e: log_utils.log('docu_play: Exception - ' + str(e)) pass
def submitForm(self): reportText = self.BugForm.getText() self.close() from resources.lib.modules import webform result = webform.webform().bug_report('Atreides', reportText) if result is None: # Wait before submitting another report you f****n spammer xbmc.executebuiltin( "XBMC.Notification(%s, %s, %s, %s)" % ('Atreides Bug Report', 'Wait Before Next Submission', 4000, control.addonIcon())) elif result is False: # Failed to send. Site timed out or is down. Ya'll suck xbmc.executebuiltin("XBMC.Notification(%s, %s, %s, %s)" % ('Atreides Bug Report', 'Submission Failed', 4000, control.addonIcon())) elif result is True: # Bug Report worked, F**K YEAH! xbmc.executebuiltin("XBMC.Notification(%s, %s, %s, %s)" % ('Atreides Bug Report', 'Bug Report Completed', 4000, control.addonIcon()))
def torrentInfo(id): r = realdebrid().torrentInfo(id) links = r['links'] files = r['files'] count = 0 for x in files: try: oriGinalName = x['path'] if oriGinalName.startswith('/'): name = oriGinalName.split('/')[-1] ext = name.split('.')[-1].encode('utf-8') if ext in VALID_EXT: isPlayable = True else: isPlayable = False if not ext.lower() in VALID_EXT: raise Exception() label = ext.upper() + " | " + name item = control.item(label=label) item.setArt({'icon': control.addonIcon()}) item.setProperty('Fanart_Image', control.addonFanart()) # itemID = x['id'] # playlink = links[count] # count += 1 infolabel = {"Title": label} item.setInfo(type='Video', infoLabels=infolabel) item.setProperty('IsPlayable', 'true') url = url = '%s?action=%s&name=%s&id=%s' % ( sysaddon, 'playtorrentItem', name, id) #item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: pass control.content(syshandle, 'movies') control.directory(syshandle, cacheToDisc=True)
def manager(): sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) VALID_EXT = debrid.VALID_EXT updt = '%s?action=%s' % (sysaddon, 'rss_update') item = control.item(label='[UPDATE NOW]') control.addItem(handle=syshandle, url=updt, listitem=item, isFolder=False) clear = '%s?action=%s' % (sysaddon, 'rss_clear') item = control.item(label='[CLEAR DATABASE]') control.addItem(handle=syshandle, url=clear, listitem=item, isFolder=False) try: r = rssDB(mode='get') try: r = sorted(r, key=lambda x: int(x['added']), reverse=True) except: pass for item in r: try: cm = [] date = item['added'] id = item['id'] name = item['title'] label = date + " | " + name item = control.item(label=label) item.setArt({'icon': control.addonIcon()}) item.setProperty('Fanart_Image', control.addonFanart()) infolabel = {"Title": label} cm.append( ('Delete Torrent Item', 'RunPlugin(%s?action=rdDeleteItem&id=%s&type=torrents)' % (sysaddon, id))) url = '%s?action=%s&id=%s' % (sysaddon, 'rdTorrentInfo', id) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass except: pass control.directory(syshandle, cacheToDisc=True)
def docu_play(self, url): try: docu_page = client.request(url) docu_item = client.parseDOM(docu_page, 'div', attrs={'class': 'video'})[0] url = client.parseDOM(docu_item, 'iframe', ret='src')[0] try: docu_title = re.findall('meta property="og:title" content="(.+?)"', docu_page)[0] except Exception: docu_title = re.findall('<title>(.+?)</title>', docu_page)[0] try: docu_icon = re.findall('meta property="og:image" content="(.+?)"', docu_page)[0] except Exception: docu_icon = control.addonIcon() if 'youtube' in url: if 'list=' not in url: video_id = url.split('embed/')[-1] url = 'plugin://plugin.video.youtube/play/?video_id=%s' % video_id else: playlist_id = url.split("=")[-1] url = 'plugin://plugin.video.youtube/play/?playlist_id=%s&play=1' % playlist_id elif 'archive.org/embed' in url: archive_page = client.request(url) video_element = client.parseDOM(archive_page, 'source', ret='src')[0] url = urlparse.urljoin('https://archive.org/', video_element) else: url = source_utils.uResolve(url) if url is None: log_utils.log('Documentary Heaven: Unable to resolve url: ' + str(url)) control.infoDialog('Invalid Host - Report To Developer: ' + str(url), sound=True, icon='INFO') return li = control.item(docu_title, path=url) li.setArt({"thumb": docu_icon, "icon": docu_icon}) li.setInfo(type="video", infoLabels={"Title": docu_title}) li.setProperty('IsPlayable', 'true') control.resolve(handle=int(sys.argv[1]), succeeded=True, listitem=li) except Exception as e: log_utils.log('docu_play: Exception - ' + str(e)) pass
def torrentList(): r = realdebrid().torrentList() for item in r: cm = [] status = item['status'] id = item['id'] name = item['filename'] label = status.upper() + " | " + name item = control.item(label=label) item.setArt({'icon': control.addonIcon()}) item.setProperty('Fanart_Image', control.addonFanart()) infolabel = {"Title": label} cm.append(('Delete Torrent Item', 'RunPlugin(%s?action=rdDeleteItem&id=%s&type=torrents)' % (sysaddon, id))) url = '%s?action=%s&id=%s' % (sysaddon, 'rdTorrentInfo', id) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) control.directory(syshandle, cacheToDisc=True)
def onInit(self): self.action_exitkeys_id = [10, 13] try: image = self.item['poster'] except: image = '0' if "fanart" in self.item: fanartimage = self.item['fanart'] else: fanartimage = '0' if "fanart" in self.item: landscapeimage = self.item['fanart'] else: landscapeimage = control.addonIcon() if "thumb" in self.item: thumb = self.item['thumb'] else: thumb = '0' if thumb != '0' and thumb != None: image = fanartimage = landscapeimage = thumb elif fanartimage != '0' and fanartimage != None: image = thumb = landscapeimage = fanartimage elif image != '0' and image != None: fanartimage = thumb = landscapeimage = image overview = self.item['plot'] tvshowtitle = self.item['tvshowtitle'] name = self.item['title'] playcount = '' season = self.item['season'] episodeNum = self.item['episode'] episodeInfo = str(season) + 'x' + str(episodeNum) + '.' rating = str(round(float(self.item['rating']), 1)) year = self.item['year'] info = year # set the dialog data self.getControl(3000).setLabel(name) self.getControl(3001).setText(overview) self.getControl(3002).setLabel(episodeInfo) self.getControl(3004).setLabel(info) self.getControl(7777).setLabel(thumb) if rating is not None: self.getControl(3003).setLabel(rating) else: self.getControl(3003).setVisible(False) try: tvShowControl = self.getControl(3007) if tvShowControl != None: tvShowControl.setLabel(tvshowtitle) except: pass try: posterControl = self.getControl(3009) if posterControl != None: posterControl.setImage(image) except: pass try: fanartControl = self.getControl(3005) if fanartControl != None: fanartControl.setImage(fanartimage) except: pass try: thumbControl = self.getControl(3008) if thumbControl != None: self.getControl(3008).setImage(thumb) except: pass try: landscapeControl = self.getControl(3010) if landscapeControl != None: self.getControl(3010).setImage(landscapeimage) except: pass try: clearartimageControl = self.getControl(3006) if clearartimageControl != None: self.getControl(3006).setImage(clearartimage) except: pass try: seasonControl = self.getControl(3015) if seasonControl != None: seasonControl.setLabel(str(season)) except: pass try: episodeControl = self.getControl(3016) if episodeControl != None: episodeControl.setLabel(str(episodeNum)) except: pass try: resolutionControl = self.getControl(3011) if resolutionControl != None: resolution1 = self.item['streamdetails'].get('video') resolution = resolution1[0].get('height') resolutionControl.setLabel(str(resolution)) except: pass try: playcountControl = self.getControl(3018) if playcountControl != None: playcountControl.setLabel(str(playcount)) except: pass
def nextup(episode): if episode == None or episode == '': episode = {} episode['poster'] = control.addonIcon() episode['fanart'] = control.addonIcon() episode['plot'] = '' episode['title'] = 'No episode data found' episode['tvshowtitle'] = 'No show data found' episode['season'] = '0' episode['episode'] = '0' episode['plot'] = '' episode['rating'] = '0.0' episode['year'] = '0' print("NEXTUP >>> NO EPISODE DATA FOUND") return False nextup_action = control.setting('nextup.action') skin_native = control.setting('nextup.skin.native') try: if skin_native == 'true': nextUpPage = NextUpInfo( "script-nextup-notification-NextUpInfo.xml", control.addonPath, "default", "1080i") else: nextUpPage = NextUpInfo("script-nextup.xml", control.addonPath, "default", "1080i") nextUpPage.setItem(episode) nextUpPage.show() playTime = xbmc.Player().getTime() totalTime = xbmc.Player().getTotalTime() while xbmc.Player().isPlaying() and ( totalTime - playTime > 5 ) and not nextUpPage.isCancel() and not nextUpPage.isWatchNow(): xbmc.sleep(100) try: playTime = xbmc.Player().getTime() totalTime = xbmc.Player().getTotalTime() except: pass if nextUpPage.isWatchNow(): try: nexUpPage.closeDialog() except: pass xbmc.Player().stop() return True elif nextUpPage.isCancel(): try: nexUpPage.closeDialog() except: pass return False elif nextup_action == '0': # DEFAULT PLAY try: nexUpPage.closeDialog() except: pass return True else: try: nexUpPage.closeDialog() except: pass return False except: return False
import xbmcplugin from base64 import b64encode, b64decode from binascii import a2b_hex from resources.lib.modules import client, control, jsonbm, jsonmenu, log_utils, pydes, pyrsa try: from urllib.parse import quote_from_bytes as orig_quote except ImportError: from urllib import quote as orig_quote sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) artPath = control.artPath() addonIcon = control.addonIcon() addonFanart = control.addonFanart() def quote(s, safe=""): return orig_quote(s.encode("utf-8"), safe.encode("utf-8")) class tvtap: def __init__(self): self.User_Agent = 'Dalvik/2.1.0 (Linux; U; Android 5.1.1; AFTS Build/LVY48F)' self.Player_User_Agent = 'mediaPlayerhttp/1.9 (Linux;Android 5.1) ExoPlayerLib/2.6.1' self.token_url = 'https://taptube.net/tv/index.php?case=get_channel_link_with_token_latest' self.list_url = 'https://taptube.net/tv/index.php?case=get_all_channels' self.icon_url = 'https://taptube.net/tv/%s|User-Agent=%s' % ('%s', self.User_Agent)
selfAddon = xbmcaddon.Addon(id=AddonID) # ADDON SETTINGS wizard1 = control.setting('enable_wiz1') wizard2 = control.setting('enable_wiz2') wizard3 = control.setting('enable_wiz3') wizard4 = control.setting('enable_wiz4') wizard5 = control.setting('enable_wiz5') backupfull = control.setting('backup_database') backupaddons = control.setting('backup_addon_data') backupzip = control.setting("remote_backup") USB = xbmc.translatePath(os.path.join(backupzip)) # ICONS FANARTS ADDON_FANART = control.addonFanart() ADDON_ICON = control.addonIcon() # DIRECTORIES backupdir = xbmc.translatePath(os.path.join('special://home/backupdir', '')) packagesdir = xbmc.translatePath( os.path.join('special://home/addons/packages', '')) USERDATA = xbmc.translatePath(os.path.join('special://home/userdata', '')) ADDON_DATA = xbmc.translatePath(os.path.join(USERDATA, 'addon_data')) HOME = xbmc.translatePath('special://home/') HOME_ADDONS = xbmc.translatePath('special://home/addons') backup_zip = xbmc.translatePath( os.path.join(backupdir, 'backup_addon_data.zip')) # DIALOGS dialog = xbmcgui.Dialog() progressDialog = xbmcgui.DialogProgress()