def __init__(self): self.orion = orionoid.Orionoid() self.pack = False # Checked by provider.py self.priority = 0 self.language = ['un'] self.base_link = self.orion.link() self.domains = [network.Networker.linkDomain(self.base_link)] enabledPremiumize = debrid.Premiumize().accountValid() and ( tools.Settings.getBoolean('streaming.torrent.premiumize.enabled') or tools.Settings.getBoolean('streaming.usenet.premiumize.enabled')) enabledOffCloud = debrid.OffCloud().accountValid() and ( tools.Settings.getBoolean('streaming.torrent.offcloud.enabled') or tools.Settings.getBoolean('streaming.usenet.offcloud.enabled')) enabledRealDebrid = debrid.RealDebrid().accountValid( ) and tools.Settings.getBoolean('streaming.torrent.realdebrid.enabled') self.cache = tools.Settings.getBoolean('scraping.cache.enabled') and ( (enabledPremiumize and tools.Settings.getBoolean('scraping.cache.premiumize')) or (enabledOffCloud and tools.Settings.getBoolean('scraping.cache.offcloud')) or (enabledRealDebrid and tools.Settings.getBoolean('scraping.cache.realdebrid')))
def credentials(): premiumize = debridx.Premiumize() offcloud = debridx.OffCloud() realdebrid = debridx.RealDebrid() alldebrid = debridx.AllDebrid() rapidpremium = debridx.RapidPremium() return { 'premiumize': { 'enabled': premiumize.accountEnabled(), 'user': premiumize.accountUsername(), 'pass': premiumize.accountPassword(), }, 'offcloud': { 'enabled': offcloud.accountEnabled(), 'api': offcloud.accountApi(), }, 'realdebrid': { 'enabled': realdebrid.accountEnabled(), 'id': realdebrid.accountId(), 'secret': realdebrid.accountSecret(), 'token': realdebrid.accountToken(), 'refresh': realdebrid.accountRefresh(), }, 'alldebrid': { 'enabled': alldebrid.accountEnabled(), 'user': alldebrid.accountUsername(), 'pass': alldebrid.accountPassword(), }, 'rapidpremium': { 'enabled': rapidpremium.accountEnabled(), 'user': rapidpremium.accountUsername(), 'api': rapidpremium.accountApi(), } }
def __init__(self): Handle.__init__(self, id=self.Id, name=self.Name, abbreviation=self.Abbreviation) self.mService = debrid.RealDebrid() self.mServices = None
def _showRealDebrid(self): choice = self._option(33945, 33897, 33898) if choice == self.ChoiceLeft: return self.OptionCancelStep choice = self._option(33946, 33899, 33900) if choice == self.ChoiceLeft: tools.System.openLink( tools.Settings.getString('link.realdebrid', raw=True)) choice = self._option(33987, 33743, 33898) if choice == self.ChoiceLeft: return self._cancel() while True: tools.Settings.set('accounts.debrid.realdebrid.enabled', True) debrid.RealDebridInterface().accountAuthentication( openSettings=False) interface.Loader.show() valid = debrid.RealDebrid().accountVerify() interface.Loader.hide() if valid: tools.Settings.set( 'providers.universal.premium.member.realdebrid', True) choice = self._option(33947, 33743, 33821) if choice == self.ChoiceLeft: return self._cancel() return self.OptionContinue else: tools.Settings.set('accounts.debrid.realdebrid.enabled', False) choice = self._option(33990, 33743, 33902) if choice == self.ChoiceLeft: return self._cancel() return self.OptionContinue
def servicesRealDebrid(): try: realdebrid = debridx.RealDebrid() if realdebrid.accountEnabled() and realdebrid.accountValid(): return realdebrid.servicesList(onlyEnabled=True) except: pass return []
def handlesSingleHoster(self): global HandlesHoster if HandlesHoster == None: HandlesHoster = 0 services = [debrid.Premiumize(), debrid.OffCloud(), debrid.RealDebrid(), debrid.AllDebrid(), debrid.RapidPremium()] for service in services: if service.accountValid(): HandlesHoster += 1 return HandlesHoster <= 1
def handlesSingleCache(self): global HandlesCache if HandlesCache == None: HandlesCache = 0 services = [debrid.Premiumize(), debrid.OffCloud(), debrid.RealDebrid()] for service in services: if service.accountValid(): HandlesCache += 1 return HandlesCache <= 1
def _debridClear(self): if self.handle: if not isinstance(self.handle, basestring): self.handle = self.handle.id() self.handle = self.handle.lower() if self.handle == handler.HandlePremiumize().id(): debrid.Premiumize().deletePlayback() elif self.handle == handler.HandleRealDebrid().id(): debrid.RealDebrid().deletePlayback()
def _verifyAccountsRealdebrid(self, checkDisabled=True): name = 'RealDebrid' if self.__done(name): return try: if not checkDisabled or self.__enabled( 'accounts.debrid.realdebrid.enabled'): if debrid.RealDebrid().accountVerify(): status = Verification.StatusOperational else: status = Verification.StatusFailure else: status = Verification.StatusDisabled except: status = Verification.StatusFailure return self.__append(name=name, status=status)
def _debridClear(self): if self.handle: if not isinstance(self.handle, basestring): self.handle = self.handle.id() self.handle = self.handle.lower() source = self.source['source'] try: id = self.source['stream']['id'] except: id = self.url try: handle = self.source['stream']['handle'] except: handle = None if handle == handler.HandlePremiumize.Id and debrid.Premiumize.deletePossible(source): pack = self.source['pack'] if 'pack' in self.source else None debrid.Premiumize().deletePlayback(id, pack) elif handle == handler.HandleOffCloud.Id and debrid.OffCloud.deletePossible(source): try: category = self.source['stream']['category'] except: category = None pack = self.source['pack'] if 'pack' in self.source else None debrid.OffCloud().deletePlayback(id, pack, category) elif handle == handler.HandleRealDebrid.Id and debrid.RealDebrid.deletePossible(source): debrid.RealDebrid().deletePlayback(id)
def popup(self, time = 2000, wait = True): try: from resources.lib.extensions import debrid versionCurrent = tools.System.version() version = tools.Settings.getString('general.launch.splash.previous') tools.Settings.set('general.launch.splash.previous', versionCurrent) # Popup on every minor version update, if and only if the user has now premiumi account already. special = not versionCurrent == version and versionCurrent.endswith('.0') special = special and not debrid.Premiumize().accountValid() special = special and not debrid.RealDebrid().accountValid() special = special and not debrid.EasyNews().accountValid() if version == None or version == '' or special: self.popupFull(wait = wait) return True elif tools.Settings.getBoolean('general.launch.splash'): self.popupMini(time = time) # Do not wait on the mini splash. return True except: pass return False
def resolver(url, debrid, title = None, season = None, episode = None, close = True, source = None): try: debrid = debrid.lower() except: pass url = url.replace('filefactory.com/stream/', 'filefactory.com/file/') # Always try Premiumize first. try: if not debrid == 'premiumize' and not debrid == True: raise Exception() if not debridx.Premiumize().accountValid(): raise Exception() return debridx.PremiumizeInterface().add(link = url, title = title, season = season, episode = episode, close = close, source = source) except: pass try: if not debrid == 'realdebrid' and not debrid == True: raise Exception() if not debridx.RealDebrid().accountValid(): raise Exception() return debridx.RealDebridInterface().add(link = url, title = title, season = season, episode = episode, close = close, source = source) except: pass try: if not debrid == 'alldebrid' and not debrid == True: raise Exception() if not debridx.AllDebrid().accountValid(): raise Exception() return debridx.AllDebrid().add(link = url) except: pass try: if not debrid == 'rapidpremium' and not debrid == True: raise Exception() if not debridx.RapidPremium().accountValid(): raise Exception() return debridx.RapidPremium().add(link = url) except: pass return None
def __init__(self): Handle.__init__(self, 'RealDebrid') self.mService = debrid.RealDebrid() self.mServices = None
def _initialize(self, type): if type == None: return try: direct = 'direct' in type and type['direct'] type = type['source'].lower() except: type = type.lower() direct = type == Handler.TypeDirect if not type == Handler.TypeTorrent and not type == Handler.TypeUsenet: if direct: type = Handler.TypeDirect else: type = Handler.TypeHoster if type == self.mType: return self.mType = type self.mServices = [] self.mDefault = None global HandlerServicesDirect global HandlerServicesTorrent global HandlerServicesUsenet global HandlerServicesHoster global HandlerDefaultDirect global HandlerDefaultTorrent global HandlerDefaultUsenet global HandlerDefaultHoster if type == Handler.TypeDirect: if HandlerServicesDirect == None: HandlerServicesDirect = [] if tools.Settings.getBoolean('streaming.direct.enabled'): handle = HandleDirect() HandlerServicesDirect.append(handle) HandlerDefaultDirect = handle self.mServices = HandlerServicesDirect self.mDefault = HandlerDefaultDirect else: self.mServices = HandlerServicesDirect self.mDefault = HandlerDefaultDirect elif type == Handler.TypeTorrent: if HandlerServicesTorrent == None: HandlerServicesTorrent = [] if tools.Settings.getBoolean('streaming.torrent.enabled'): premiumize = debrid.Premiumize() offcloud = debrid.OffCloud() realdebrid = debrid.RealDebrid() default = tools.Settings.getInteger('streaming.torrent.default') if premiumize.accountValid() and premiumize.streamingTorrent(): handle = HandlePremiumize() HandlerServicesTorrent.append(handle) if default == 1: HandlerDefaultTorrent = handle if offcloud.accountValid() and offcloud.streamingTorrent(): handle = HandleOffCloud() HandlerServicesTorrent.append(handle) if default == 2: HandlerDefaultTorrent = handle if realdebrid.accountValid() and realdebrid.streamingTorrent(): handle = HandleRealDebrid() HandlerServicesTorrent.append(handle) if default == 3: HandlerDefaultTorrent = handle if tools.Settings.getBoolean('streaming.torrent.elementum.enabled') and tools.Settings.getBoolean('streaming.torrent.elementum.connected'): handle = HandleElementum() HandlerServicesTorrent.append(handle) if default == 4: HandlerDefaultTorrent = handle if tools.Settings.getBoolean('streaming.torrent.quasar.enabled') and tools.Settings.getBoolean('streaming.torrent.quasar.connected'): handle = HandleQuasar() HandlerServicesTorrent.append(handle) if default == 5: HandlerDefaultTorrent = handle self.mServices = HandlerServicesTorrent self.mDefault = HandlerDefaultTorrent else: self.mServices = HandlerServicesTorrent self.mDefault = HandlerDefaultTorrent elif type == Handler.TypeUsenet: if HandlerServicesUsenet == None: HandlerServicesUsenet = [] if tools.Settings.getBoolean('streaming.usenet.enabled'): premiumize = debrid.Premiumize() offcloud = debrid.OffCloud() default = tools.Settings.getInteger('streaming.usenet.default') if premiumize.accountValid() and premiumize.streamingUsenet(): handle = HandlePremiumize() HandlerServicesUsenet.append(handle) if default == 1: HandlerDefaultUsenet = handle if offcloud.accountValid() and offcloud.streamingUsenet(): handle = HandleOffCloud() HandlerServicesUsenet.append(handle) if default == 2: HandlerDefaultUsenet = handle self.mServices = HandlerServicesUsenet self.mDefault = HandlerDefaultUsenet else: self.mServices = HandlerServicesUsenet self.mDefault = HandlerDefaultUsenet elif type == Handler.TypeHoster: if HandlerServicesHoster == None: HandlerServicesHoster = [] if tools.Settings.getBoolean('streaming.hoster.enabled'): premiumize = debrid.Premiumize() offcloud = debrid.OffCloud() realdebrid = debrid.RealDebrid() alldebrid = debrid.AllDebrid() rapidpremium = debrid.RapidPremium() default = tools.Settings.getInteger('streaming.hoster.default') if premiumize.accountValid() and premiumize.streamingHoster(): handle = HandlePremiumize() HandlerServicesHoster.append(handle) if default == 1: HandlerDefaultHoster = handle if offcloud.accountValid() and offcloud.streamingHoster(): handle = HandleOffCloud() HandlerServicesHoster.append(handle) if default == 2: HandlerDefaultHoster = handle if realdebrid.accountValid() and realdebrid.streamingHoster(): handle = HandleRealDebrid() HandlerServicesHoster.append(handle) if default == 3: HandlerDefaultHoster = handle if alldebrid.accountValid() and alldebrid.streamingHoster(): handle = HandleAllDebrid() HandlerServicesHoster.append(handle) if default == 4: HandlerDefaultHoster = handle if rapidpremium.accountValid() and rapidpremium.streamingHoster(): handle = HandleRapidPremium() HandlerServicesHoster.append(handle) if default == 5: HandlerDefaultHoster = handle if tools.Settings.getBoolean('streaming.hoster.resolveurl.enabled'): handle = HandleResolveUrl() HandlerServicesHoster.append(handle) if default == 6: HandlerDefaultHoster = handle if tools.Settings.getBoolean('streaming.hoster.urlresolver.enabled'): handle = HandleUrlResolver() HandlerServicesHoster.append(handle) if default == 7: HandlerDefaultHoster = handle self.mServices = HandlerServicesHoster self.mDefault = HandlerDefaultHoster else: self.mServices = HandlerServicesHoster self.mDefault = HandlerDefaultHoster
def __init__(self): Handle.__init__(self, id = HandleRealDebrid.Id, name = HandleRealDebrid.Name, abbreviation = HandleRealDebrid.Abbreviation, debrid = True) self.mService = debrid.RealDebrid() self.mServices = None
elif action == 'realdebridList': from resources.lib.extensions import interface interface.Dialog.confirm(title = 'Planned Feature', message = 'This feature is planned for a future release. It will allow users to fully utilize RealDebrid functionality, such as manually adding downloads, deleting and moving files, and downloading files to local storage.') elif action == 'realdebridInformation': from resources.lib.extensions import debrid debrid.RealDebridInterface().downloadInformation() elif action == 'realdebridAccount': from resources.lib.extensions import debrid debrid.RealDebridInterface().account() elif action == 'realdebridWebsite': from resources.lib.extensions import debrid debrid.RealDebrid().website(open = True) elif action == 'realdebridClear': from resources.lib.extensions import debrid debrid.RealDebridInterface().clear() elif action == 'realdebridSettings': from resources.lib.extensions import tools tools.Settings.launch(category = tools.Settings.CategoryAccounts) #################################################### # EASYNEWS #################################################### elif action == 'easynewsNavigator': from resources.lib.indexers import navigator
def resolver(url, debrid, title=None, season=None, episode=None, close=True, source=None, pack=False, cached=False, hash=None, select=False, cloud=False): try: debrid = debrid.lower() except: pass url = url.replace('filefactory.com/stream/', 'filefactory.com/file/') if select: pack = True # Even non-season-pack archives should be selectable. # Always try Premiumize first. try: if not debrid == 'premiumize' and not debrid == True: raise Exception() if not debridx.Premiumize().accountValid(): raise Exception() return debridx.PremiumizeInterface().add(link=url, title=title, season=season, episode=episode, pack=pack, close=close, source=source, cached=cached, select=select, cloud=cloud) except: pass try: if not debrid == 'offcloud' and not debrid == True: raise Exception() if not debridx.OffCloud().accountValid(): raise Exception() return debridx.OffCloudInterface().add(link=url, title=title, season=season, episode=episode, pack=pack, close=close, source=source, cached=cached, select=select) except: pass try: if not debrid == 'realdebrid' and not debrid == True: raise Exception() if not debridx.RealDebrid().accountValid(): raise Exception() return debridx.RealDebridInterface().add(link=url, title=title, season=season, episode=episode, pack=pack, close=close, source=source, cached=cached, select=select) except: pass try: if not debrid == 'alldebrid' and not debrid == True: raise Exception() if not debridx.AllDebrid().accountValid(): raise Exception() return debridx.AllDebrid().add(link=url) except: pass try: if not debrid == 'rapidpremium' and not debrid == True: raise Exception() if not debridx.RapidPremium().accountValid(): raise Exception() return debridx.RapidPremium().add(link=url) except: pass return None
def sources(self, url, hostDict, hostprDict): sources = [] try: if url == None: raise Exception() realdebrid = debrid.RealDebrid() if not realdebrid.accountValid(): raise Exception() data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) title = data['tvshowtitle'] if 'tvshowtitle' in data else data[ 'title'] year = int( data['year'] ) if 'year' in data and not data['year'] == None else None season = int( data['season'] ) if 'season' in data and not data['season'] == None else None episode = int( data['episode'] ) if 'episode' in data and not data['episode'] == None else None pack = data['pack'] if 'pack' in data else False items = realdebrid.items() for item in items: if item['transfer']['progress']['completed'][ 'value'] == 1: # Only finished downloads. jsonName = item['name'] jsonLink = item['link'] jsonSize = item['size']['bytes'] # Metadata meta = metadata.Metadata(name=jsonName, title=title, year=year, season=season, episode=episode, pack=pack, size=jsonSize) if meta.ignore(False): continue # Add sources.append({ 'url': jsonLink, 'premium': True, 'debridonly': True, 'direct': True, 'memberonly': True, 'source': 'RealDebrid', 'language': self.language[0], 'quality': meta.videoQuality(), 'info': meta.information(), 'file': jsonName }) return sources except: return sources
def sources(self, url, hostDict, hostprDict): sources = [] try: debridHas = False if not debridHas: premiumize = debrid.Premiumize() debridHas = premiumize.accountEnabled() and premiumize.accountValid() if not debridHas: offcloud = debrid.OffCloud() debridHas = offcloud.accountEnabled() and offcloud.accountValid() if not debridHas: realdebrid = debrid.RealDebrid() debridHas = realdebrid.accountEnabled() and realdebrid.accountValid() if not debridHas: alldebrid = debrid.AllDebrid() debridHas = alldebrid.accountEnabled() and alldebrid.accountValid() if not debrid: rapidpremium = debrid.RapidPremium() debridHas = rapidpremium.accountEnabled() and rapidpremium.accountValid() data = urlparse.parse_qs(url) data = dict([(i, data[i][0]) if data[i] else (i, '') for i in data]) movie = False if 'tvshowtitle' in data else True title = data['tvshowtitle'] if 'tvshowtitle' in data else data['title'] year = str(data['year']) if 'year' in data and not data['year'] == None else '' season = str(data['season']) if 'season' in data and not data['season'] == None else '' episode = str(data['episode']) if 'episode' in data and not data['episode'] == None else '' imdb = data['imdb'] if 'imdb' in data else '' tvdb = data['tvdb'] if 'tvdb' in data else '' scraper = nanscrapers.relevant_scrapers(names_list = self.name.lower(), include_disabled = True, exclude = None)[0]() if self.base_link and not self.base_link == '': scraper.base_link = self.base_link if movie: result = scraper.scrape_movie(title = title, year = year, imdb = imdb, debrid = debridHas) else: showYear = year try: if 'premiered' in data and not data['premiered'] == None and not data['premiered'] == '': for format in ['%Y-%m-%d', '%Y-%d-%m', '%d-%m-%Y', '%m-%d-%Y']: try: showYear = str(int(convert.ConverterTime(value = data['premiered'], format = format).string(format = '%Y'))) if len(showYear) == 4: break except: pass except: pass result = scraper.scrape_episode(title = title, year = year, show_year = showYear, season = season, episode = episode, imdb = imdb, tvdb = tvdb, debrid = debridHas) if result: for item in result: item['external'] = True item['language']= self.language[0] item['debridonly'] = False item['url'] = item['url'].replace('http:http:', 'http:').replace('https:https:', 'https:').replace('http:https:', 'https:').replace('https:http:', 'http:') # Some of the links start with a double http. # External providers (eg: "Get Out"), sometimes has weird characters in the URL. # Ignore the links that have non-printable ASCII or UTF8 characters. try: item['url'].decode('utf-8') except: continue source = item['source'].lower().replace(' ', '') if source == 'direct' or source == 'directlink': source = urlparse.urlsplit(item['url'])[1].split(':')[0] if network.Networker.ipIs(source): source = 'Anonymous' else: split = source.split('.') for i in split: i = i.lower() if i in ['www', 'ftp']: continue source = i break item['source'] = source sources.append(item) return sources except: tools.Logger.error() return sources
def _showAccounts(self, first = True): if first: choice = self._option(35288, 33743, 33821) if choice == Wizard.ChoiceLeft: return self._cancel() orion = orionoid.Orionoid() enabled = interface.Format.fontBold(interface.Format.fontColor(interface.Translation.string(32301), interface.Format.ColorExcellent)) disabled = interface.Format.fontBold(interface.Format.fontColor(interface.Translation.string(32302), interface.Format.ColorBad)) special = interface.Translation.string(33105) premium = interface.Translation.string(33768) provider = interface.Translation.string(33681) general = interface.Translation.string(32310) items = [ interface.Format.fontBold(interface.Translation.string(33821)), interface.Format.fontBold('[' + special + '] ' + interface.Translation.string(35400) + ': ') + (enabled if orion.accountValid() else disabled), interface.Format.fontBold('[' + general + '] ' + interface.Translation.string(32315) + ': ') + (enabled if tools.Settings.getBoolean('accounts.informants.trakt.enabled') else disabled), interface.Format.fontBold('[' + general + '] ' + interface.Translation.string(32034) + ': ') + (enabled if tools.Settings.getBoolean('accounts.informants.imdb.enabled') else disabled), interface.Format.fontBold('[' + general + '] ' + interface.Translation.string(35260) + ': ') + (enabled if tools.Settings.getBoolean('accounts.artwork.fanart.enabled') else disabled), interface.Format.fontBold('[' + premium + '] ' + interface.Translation.string(33566) + ': ') + (enabled if debrid.Premiumize().accountValid() else disabled), interface.Format.fontBold('[' + premium + '] ' + interface.Translation.string(35200) + ': ') + (enabled if debrid.OffCloud().accountValid() else disabled), interface.Format.fontBold('[' + premium + '] ' + interface.Translation.string(33567) + ': ') + (enabled if debrid.RealDebrid().accountValid() else disabled), interface.Format.fontBold('[' + premium + '] ' + interface.Translation.string(33794) + ': ') + (enabled if debrid.EasyNews().accountValid() else disabled), interface.Format.fontBold('[' + premium + '] ' + interface.Translation.string(33568) + ': ') + (enabled if debrid.AllDebrid().accountValid() else disabled), interface.Format.fontBold('[' + premium + '] ' + interface.Translation.string(33569) + ': ') + (enabled if debrid.RapidPremium().accountValid() else disabled), ] choice = interface.Dialog.options(title = 32346, items = items) if choice < 0: return self._cancel() if choice == 0: return Wizard.OptionContinue elif choice == 1: if self._showOrion() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 2: if self._showTrakt() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 3: if self._showImdb() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 4: if self._showFanart() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 5: if self._showPremiumize() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 6: if self._showOffCloud() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 7: if self._showRealDebrid() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 8: if self._showEasyNews() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 9: if self._showAllDebrid() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard elif choice == 10: if self._showRapidPremium() == Wizard.OptionCancelWizard: return Wizard.OptionCancelWizard return self._showAccounts(first = False)