def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the MyJDownloader Sensor.""" email = config.get(CONF_EMAIL) password = config.get(CONF_PASSWORD) name = config.get(CONF_NAME) myjd = myjdapi.Myjdapi() try: myjd.connect(email, password) except myjdapi.myjdapi.MYJDException: _LOGGER.error( 'Failed to connect to MyJDownloader, please check email and password' ) raise PlatformNotReady entities = [] if name: entities.append(MyJDSensor(hass, myjd, name)) else: for device in myjd.list_devices(): entities.append(MyJDSensor(hass, myjd, device['name'])) if not entities: _LOGGER.warning( 'Failed to setup MyJDownloader sensor, no device found.') raise PlatformNotReady add_entities(entities, True)
def addToMYJD(myjd_user, myjd_pass, myjd_device, links, pkgName, pwd, destinationFolder=None): jd = myjdapi.Myjdapi() jd.set_app_key("animeloads") jd.connect(myjd_user, myjd_pass) jd.update_devices() device = jd.get_device(myjd_device) dl = device.linkgrabber return dl.add_links([{ "autostart": True, "links": links, "packageName": pkgName, "extractPassword": pwd, "priority": "DEFAULT", "downloadPassword": None, "destinationFolder": destinationFolder, "overwritePackagizerRules": False }])
def jd_connect(self): """ Connect to MyJDownloader using myjdapi and the login info in the config """ self.jd = myjdapi.Myjdapi() self.jd.set_app_key("VolafileDownloader") self.jd.connect(config.jdownloader_username, config.jdownloader_password) self.jd.update_devices() self.jdDevice = self.jd.get_device(config.jdownloader_devicename)
def __init__(self, host=None, username=None, password=None): super(JdownloaderAPI, self).__init__('Jdownloader', host, username, password) self.username = sickbeard.DDL_USERNAME self.password = sickbeard.DDL_PASSWORD self.deviceName = sickbeard.JDOWNLOADER_DEVICE_NAME self.autostart = bool(sickbeard.JDOWNLOADER_AUTO_START) self.packageName = "Sickrage autograb" self.jd = myjdapi.Myjdapi() self.jd.set_app_key("Sickrage")
def editconfig(): try: os.makedirs(os.path.dirname(botfolder), exist_ok=True) infile = open(botfile, "r") data = json.load(infile) infile.close() for key in data: if (key == "settings"): value = data[key] jdhost = value['jdhost'] hoster = value['hoster'] browser = value['browserengine'] browserlocation = value['browserlocation'] pushkey = value['pushbullet_apikey'] timedelay = value['timedelay'] myjd_user = value['myjd_user'] myjd_pass = value['myjd_pw'] myjd_device = value['myjd_device'] except: jdhost = "" hoster = "" browser = "" browserlocation = "" pushkey = "" timedelay = "" myjd_user = "" myjd_pw = "" myjd_device = "" if (hoster == 2): hosterstr = "rapidgator" if (hoster == 1): hosterstr = "ddownload" elif (hoster == 0): hosterstr = "uploaded" changehoster = True if (hoster != ""): if (compare( input("Dein gewählter hoster: " + hosterstr + ", möchtest du ihn wechseln? [J/N]: "), {"j", "ja", "yes", "y"}) == False): changehoster = False if (changehoster): while (True): host = input( "Welchen hoster bevorzugst du? uploaded, rapidgator oder ddownload: " ) if ("uploaded" in host): hoster = animeloads.UPLOADED break elif ("ddownload" in host): hoster = animeloads.DDOWNLOAD break elif ("rapidgator" in host): hoster = animeloads.RAPIDGATOR break else: print( "Bitte gib entweder uploaded, rapidgator oder ddowwnload ein" ) change_jdhost = True jd_device = "" jd_user = "" jd_pass = "" jd_choice = input( "Läuft Jdownloader auf deinem lokalen Rechner[1] oder möchtest du MyJDownloader nutzen[2]? (1 oder 2): " ) if (jd_choice == "1"): if (jdhost != ""): if (compare( input( "Deine Adresse des Computers, auf dem JDownloader läuft lautet: " + jdhost + ", möchtest du ihn wechseln? [J/N]: "), {"j", "ja", "yes", "y"}) == False): change_jhdhost = False if (change_jdhost): if (input( "Läuft dein JD2 auf deinem Lokalen Computer? Dann Eingabe leer lassen und bestätigen, falls nicht, gib die Adresse des Zeilrechners an: " ) != ""): jdhost = input else: jdhost = "127.0.0.1" jd_device = "" jd_pass = "" jd_user = "" else: jd_choice = 2 jd = myjdapi.Myjdapi() jd.set_app_key("animeloads") logincorrect = False while (logincorrect == False): jd_user = input("MyJdownloader Nutzername: ") jd_pass = getpass("MyJdownloader Passwort: ") try: jd.connect(jd_user, jd_pass) logincorrect = True except: print("Fehlerhafte Logindaten") print("Logindaten sind korrekt") jd.update_devices() devices = jd.list_devices() print("Deine verbundenen Geräte: ") for dev in devices: print(dev['name']) foundDevice = False while (foundDevice == False): jd_device = input( "Gib den Namen des Gerätes, welches du benutzen willst ein: ") for dev in devices: devname = dev['name'] if (jd_device == devname): foundDevice = True break if (foundDevice == False): print("Gerät nicht gefunden...") print("Nutze Gerät: " + jd_device) if (compare( input( "Möchtest du das MyJDownloader passwort speichern (unverschlüsselt!!!)? Andernfalls musst du es jeden Programmstart eingeben [J/N]: " ), {"j", "ja", "yes", "y"}) == False): jd_pass = "" jdhost = "" if (browser == 0): browserstring = "Firefox" elif (browser == 1): browserstring = "Chrome" if ("--docker" in sys.argv): browser = animeloads.FIREFOX print("Überspringe Browserwahl, da in Docker") else: changebrowser = True if (browser != ""): if (compare( input("Dein gewählter Browser: " + browserstring + ", möchtest du ihn wechseln? [J/N]: "), {"j", "ja", "yes", "y"}) == False): changebrowser = False if (changebrowser): while (True): browser = input( "Welchen Browser möchtest du nutzen? Darunter fallen auch forks der jeweiligen Browser (Chrome/Firefox)? Achte darauf, dass Chromedriver (Chrome) oder Geckodriver (Firefox) im gleichen Ordern wie das Script liegt: " ) if (browser == "Chrome"): browser = animeloads.CHROME break elif (browser == "Firefox"): browser = animeloads.FIREFOX break else: print("Fehlerhafter Input, entweder Chrome oder Firefox") if (compare( input( "Ist dein Browser ein fork von chrome/firefox oder an einem anderen als dem standardpfad installiert? [J/N]: " ), {"j", "ja", "yes", "y"})): browserloc = input( "Dann gib jetzt den Pfad der Browserdatei an (inklusive Endung): " ) change_pushbullet = True if (pushkey != ""): if (compare( input("Dein Pushbullet API-Key ist: " + pushkey + ", möchtest du ihn wechseln? [J/N]: "), {"j", "ja", "yes", "y"}) == False): change_pushbullet == False if (change_pushbullet): print( "Hier kannst du deinen Pushbullet Account verbinden, damit du benachrichtigt wirst, wenn neue Folgen verfügbar sind und runtergeladen werden" ) if (compare(input("Möchtest du Pushbullet verwenden? [J/N]: "), {"j", "ja", "yes", "y"})): pushkey = input( "Dann gib hier deinen Access Token ein (https://www.pushbullet.com/#settings): " ) else: pushkey = "" change_timedelay = True if (timedelay != ""): if (compare( input("Deine Pause zwischen den Episodenupdates ist: " + str(timedelay) + ", möchtest du sie ändern? [J/N]: "), {"j", "ja", "yes", "y"}) == False): change_timedelay = False if (change_timedelay): while (True): print( "Hier kannst du deine Zeit, die zwischen der Suche nach neuen Episoden gewartet wird, einstellen." ) timedelay_str = input( "Wielange möchtest du warten? (In Sekunden. Empfohlen: 600 Sekunden (10 minuten)): " ) try: timedelay = int(timedelay_str) break except: print("Bitte gib eine korrekte Zahl ein") settingsdata = { "hoster": hoster, "browserengine": browser, "pushbullet_apikey": pushkey, "browserlocation": browserlocation, "jdhost": jdhost, "timedelay": timedelay, "myjd_user": jd_user, "myjd_pw": jd_pass, "myjd_device": jd_device } ani_exists = True try: os.makedirs(os.path.dirname(botfolder), exist_ok=True) f = open(botfile, "r") data = json.load(f) infile.close() except: ani_exists = False if (ani_exists): data['settings'] = settingsdata os.makedirs(os.path.dirname(botfolder), exist_ok=True) jfile = open(botfile, "w") jfile.write(json.dumps(data, indent=4, sort_keys=True)) jfile.flush() jfile.close else: settingsdata = {"settings": settingsdata} os.makedirs(os.path.dirname(botfolder), exist_ok=True) jfile = open(botfile, "w") jfile.write(json.dumps(settingsdata, indent=4, sort_keys=True)) jfile.flush() jfile.close
def startbot(): jdhost, hoster, browser, browserlocation, pushkey, timedelay, myjd_user, myjd_pass, myjd_device, al_user, al_pass = loadconfig( ) interactive = "--docker" not in sys.argv if "--not-interactive" in sys.argv: interactive = False if "--interactive" in sys.argv: interactive = True while (jdhost == False): if (interactive): print( "Noch keine oder Fehlerhafte konfiguration, leite weiter zu Einstellungen" ) editconfig() jdhost, hoster, browser, browserlocation, pushkey, timedelay, myjd_user, myjd_pass, myjd_device, al_user, al_pass = loadconfig( ) else: print( "Keine oder fehlerhafte Konfiguration und Script ist nicht interaktiv, beende..." ) interactive = False sys.exit(1) if (pushkey != ""): pb = Pushbullet(pushkey) else: pb = "" al = animeloads(browser=browser, browserloc=browserlocation) if (interactive): if (compare(input("Möchtest du dich anmelden? [J/N]: "), {"j", "ja", "yes", "y"})): user = input("Username: "******"Passwort: ") try: al.login(user, password) except: print( "Fehlerhafte Anmeldedaten, fahre mit anonymen Account fort" ) else: print("Überspringe Anmeldung") else: if (al_user is not None and al_pass is not None): try: al.login(al_user, al_pass) print("Erfolgreich bei Anime-Loads angemeldet") except: print( "Fehlerhafte Anmeldedaten, fahre mit anonymen Account fort" ) else: print( "Keine Anmeldedaten für Anime-Loads hinterlegt, fahre mit anonymen Account fort" ) if (jdhost == "" and myjd_pass == ""): if (interactive == False): print("Kein MyJdownloader Passwort gesetzt, beende..") sys.exit(1) print("Kein MyJdownloader Passwort gesetzt") logincorrect = False jd = myjdapi.Myjdapi() jd.set_app_key("animeloads") while (logincorrect == False): myjd_pass = getpass("MyJdownloader Passwort: ") try: jd.connect(myjd_user, myjd_pass) logincorrect = True except: print("Fehlerhafte Logindaten") print("Erfolgreich eingeloggt") while (True): os.makedirs(os.path.dirname(botfolder), exist_ok=True) f = open(botfile, "r") data = json.load(f) f.close() anidata = "" try: anidata = data['anime'] except: print("Du hast keine Anime in deiner Liste") return if (anidata != ""): for idx, animeentry in enumerate(anidata): name = animeentry['name'] url = animeentry['url'] releaseID = animeentry['releaseID'] try: customPackage = animeentry['customPackage'] except: customPackage = "" try: destinationFolder = animeentry['destinationFolder'] except: destinationFolder = None try: anime = al.getAnime(url) release = anime.getReleases()[releaseID - 1] except: print("Failed to get Anime, skipping...") continue missingEpisodes = animeentry['missing'] episodes = animeentry['episodes'] now = datetime.now() print("[" + now.strftime("%H:%M:%S") + "] Prüfe " + name + " auf updates") anime.updateInfo() curEpisodes = release.getEpisodeCount( ) #Anzahl der Episoden aktuell online if ( len(missingEpisodes) > 0 ): #Fehlende Episoden, die noch runtergeladen werden müssen print("[INFO] " + name + "hat fehlende Episode(n)") for idx, missingEpisode in enumerate(missingEpisodes): log( "[DOWNLOAD] Lade fehlende Episode " + str(missingEpisode) + " von " + name, pb) try: if (myjd_user != ""): dl_ret = anime.downloadEpisode( missingEpisode, release, hoster, browser, browserlocation, myjd_user=myjd_user, myjd_pw=myjd_pass, myjd_device=myjd_device, pkgName=customPackage) else: dl_ret = anime.downloadEpisode( missingEpisode, release, hoster, browser, browserlocation, jdhost, pkgName=customPackage) except Exception as e: printException(e) dl_ret = False if (dl_ret == True): log( "[DOWNLOAD] Fehlende Episode " + str(missingEpisode) + " von " + name + " wurde zu JDownloader hinzugefügt", pb) missingEpisodes[idx] = -1 animeentry['missing'] = list( filter(lambda a: a != -1, missingEpisodes)) print("[INFO] Update ani.json") os.makedirs(os.path.dirname(botfolder), exist_ok=True) jfile = open(botfile, "w") jfile.write( json.dumps(data, indent=4, sort_keys=True)) jfile.flush() jfile.close else: log( "[ERROR] Fehler beim hinzufügen von Episode " + str(missingEpisode) + " von " + name + ", wird im nächsten Durchlauf erneut versucht. Ist JDownloader gestartet?", pb) if (int(episodes) < curEpisodes): log( "[INFO] " + name + " hat neue Episode, lade herunter...", pb) for i in range(episodes + 1, curEpisodes + 1): print("[DOWNLOAD] Lade episode " + str(i) + " von " + name) try: if (myjd_user != ""): dl_ret = anime.downloadEpisode( i, release, hoster, browser, browserlocation, myjd_user=myjd_user, myjd_pw=myjd_pass, myjd_device=myjd_device, pkgName=customPackage, destinationFolder=destinationFolder) else: dl_ret = anime.downloadEpisode( i, release, hoster, browser, browserlocation, jdhost, pkgName=customPackage) except Exception as e: printException(e) dl_ret = False if (dl_ret == True): log( "[DOWNLOAD] Fehlende Episode " + str(i) + " von " + name + " wurde zu JDownloader hinzugefügt", pb) animeentry['episodes'] += 1 print("[INFO] Update ani.json") os.makedirs(os.path.dirname(botfolder), exist_ok=True) jfile = open(botfile, "w") jfile.write( json.dumps(data, indent=4, sort_keys=True)) jfile.flush() jfile.close else: log( "[ERROR] Fehler beim runterladen von Episode " + str(i) + " von " + name + ", wird im nächsten Durchlauf erneut versucht. Ist JDownloader gestartet?", pb) missingEpisodes.append(i) animeentry['missing'] = missingEpisodes animeentry['episodes'] += 1 os.makedirs(os.path.dirname(botfolder), exist_ok=True) jfile = open(botfile, "w") jfile.write( json.dumps(data, indent=4, sort_keys=True)) jfile.flush() jfile.close else: print("[INFO]" + name + " hat keine neuen Folgen verfügbar") print("Schlafe " + str(timedelay) + " Sekunden") time.sleep(timedelay)
class JDownloader(object): jd = myjdapi.Myjdapi() jd.connect("192.168.1.5","") jd.getDevices() jd.get_device(name="DeviceName").linkgrabber.add_links([{"autostart" : False, "links" : "https://files1.mp3slash.xyz/stream/8bb06753199bb3619578cec8f8c40b03","packageName" : "one" }])
def settings(): try: os.makedirs(os.path.dirname(settingsfolder), exist_ok=True) file = open(settingsfile, "r") jdata = json.load(file) for key in jdata: if (key == "jdhost"): jdhost = jdata[key] if (key == "mode"): mode = jdata[key] if (key == "hoster"): hoster = jdata[key] if (key == "browserengine"): browserengine = jdata[key] if (key == "browserlocation"): browserlocation = jdata[key] if (key == "myjd_user"): jd_user = jdata[key] if (key == "myjd_pw"): jd_pass = jdata[key] if (key == "myjd_device"): jd_device = jdata[key] file.close() except: jdhost = "" mode = "" hoster = "" browserengine = "" browserlocation = "" jd_user = "" jd_pass = "" jd_device = "" if (hoster == 2): hosterstr = "rapidgator" if (hoster == 1): hosterstr = "ddownload" elif (hoster == 0): hosterstr = "uploaded" changehoster = True if (hoster != ""): if (compare( input("Dein gewählter hoster: " + hosterstr + ", möchtest du ihn wechseln? [J/N]: "), {"j", "ja", "yes", "y"}) == False): changehoster = False if (changehoster): while (True): host = input( "Welchen hoster bevorzugst du? rapidgator, uploaded oder ddownload: " ) if ("uploaded" in host): hoster = animeloads.UPLOADED break elif ("ddownload" in host): hoster = animeloads.DDOWNLOAD break elif ("rapidgator" in host): hoster = animeloads.RAPIDGATOR break else: print( "Bitte gib entweder uploaded, rapidgator oder ddowwnload ein" ) changemode = True if (mode != ""): if (compare( input("Dein gewählter modus: " + mode + ", möchtest du ihn wechseln? [J/N]: "), {"j", "ja", "yes", "y"}) == False): changemode = False if (changemode): if (compare( input( "Möchtest du Jdownloader2 nutzen? Andernfalls werden die Links in der Konsole zurückgegeben [J/N]: " ), {"j", "ja", "yes", "y"})): change_jdhost = True jd_device = "" jd_user = "" jd_pass = "" jd_choice = input( "Läuft Jdownloader auf deinem lokalen Rechner[1] oder möchtest du MyJdownloader nutzen[2]? (1 oder 2): " ) if (jd_choice == 1): if (jdhost != ""): if (compare( input( "Deine Adresse des Computers, auf dem JDownloader läuft lautet: " + jdhost + ", möchtest du ihn wechseln? [J/N]: "), {"j", "ja", "yes", "y"}) == False): change_jhdhost = False if (change_jdhost): if (input( "Läuft dein JD2 auf deinem Lokalen Computer? Dann Eingabe leer lassen und bestätigen, falls nicht, gib die Adresse des Zeilrechners an: " ) != ""): jdhost = input else: jdhost = "127.0.0.1" jd_device = "" jd_pass = "" jd_user = "" else: jd_choice = 2 jd = myjdapi.Myjdapi() jd.set_app_key("animeloads") logincorrect = False while (logincorrect == False): jd_user = input("MyJdownloader Nutzername: ") jd_pass = getpass("MyJdownloader Passwort: ") try: jd.connect(jd_user, jd_pass) logincorrect = True except: print("Fehlerhafte Logindaten") print("Logindaten sind korrekt") jd.update_devices() devices = jd.list_devices() print("Deine verbundenen Geräte: ") for dev in devices: print(dev['name']) foundDevice = False while (foundDevice == False): jd_device = input( "Gib den Namen des Gerätes, welches du benutzen willst ein: " ) for dev in devices: devname = dev['name'] if (jd_device == devname): foundDevice = True break if (foundDevice == False): print("Gerät nicht gefunden...") print("Nutze Gerät: " + jd_device) if (compare( input( "Möchtest du das MyJDownloader passwort speichern (unverschlüsselt!!!)? Andernfalls musst du es jeden Programmstart eingeben [J/N]: " ), {"j", "ja", "yes", "y"}) == False): jd_pass = "" jdhost = "" mode = "jdownloader" else: print("Gebe links in Console aus...") mode = "console" jdhost = "" jd_user = "" jd_pass = "" jd_device = "" if (browserengine == 0): browserstring = "Firefox" elif (browserengine == 1): browserstring = "Chrome" changebrowser = True if (browserengine != ""): if (compare( input("Dein gewählter Browser: " + browserstring + ", möchtest du ihn wechseln? [J/N]: "), {"j", "ja", "yes", "y"}) == False): changebrowser = False if (changebrowser): while (True): browser = input( "Welchen Browser möchtest du nutzen? Darunter fallen auch forks der jeweiligen Browser (Chrome/Firefox)? Achte darauf, dass Chromedriver (Chrome) oder Geckodriver (Firefox) im gleichen Ordern wie das Script liegt: " ) if (browser == "Chrome"): browserengine = animeloads.CHROME break elif (browser == "Firefox"): browserengine = animeloads.FIREFOX break else: print("Fehlerhafter Input, entweder Chrome oder Firefox") if (compare( input( "Ist dein Browser ein fork von chrome/firefox oder an einem anderen als dem standardpfad installiert? [J/N]: " ), {"j", "ja", "yes", "y"})): browserlocation = input( "Dann gib jetzt den Pfad der Browserdatei an (inklusive Endung): " ) data = { "hoster": hoster, "mode": mode, "browserengine": browserengine, "browserlocation": browserlocation, "jdhost": jdhost, "myjd_user": jd_user, "myjd_pw": jd_pass, "myjd_device": jd_device } jdata = json.dumps(data, indent=4, sort_keys=True) os.makedirs(os.path.dirname(settingsfolder), exist_ok=True) file = open(settingsfile, "w") file.write(jdata) file.close()
def interactive(): mode = "" while (mode == ""): try: jdhost, mode, hoster, browserengine, browserlocation, myjd_user, myjd_pass, myjd_device = loadSettings( ) except: print("Du hast noch keine Einstellungen festgelegt") settings() al = animeloads(browser=browserengine, browserloc=browserlocation) if (compare(input("Möchtest du dich anmelden? [J/N]: "), {"j", "ja", "yes", "y"})): user = input("Username: "******"Passwort: ") try: al.login(user, password) except: print("Fehlerhafte Anmeldedaten, fahre mit anonymen Account fort") else: print("Überspringe Anmeldung") print("Angemeldet als Nutzer " + al.username + ", VIP: " + str(al.isVIP)) if (jdhost == "" and myjd_pass == "" and mode != "console"): print("Kein MyJdownloader Passwort gesetzt") logincorrect = False jd = myjdapi.Myjdapi() jd.set_app_key("animeloads") while (logincorrect == False): myjd_pass = getpass("MyJdownloader Passwort: ") try: jd.connect(myjd_user, myjd_pass) logincorrect = True except: print("Fehlerhafte Logindaten") print("Erfolgreich eingeloggt") if (compare(input("Möchtest du deine Einstellungen ändern? [J/N]: "), {"j", "ja", "y", "yes"})): settings() jdhost, mode, hoster, browserengine, browserlocation, myjd_user, myjd_pass, myjd_device = loadSettings( ) exit = False search = False while (exit == False): search = False aniquery = input( "Nach welchem Anime möchtst du suchen? (Du kannst jederzeit \"suche\" eingeben, um zurück zur Suche zu kommen oder \"exit\", um das Programm zu beenden): " ) if (aniquery == "exit"): break elif (aniquery != "suche"): results = al.search(aniquery) if (len(results) == 0): print("Keine Ergebnisse") search = True break print("Ergebnisse: ") for idx, result in enumerate(results): print("[" + str(idx + 1) + "] " + result.tostring()) while (True): anichoice = input( "Wähle einen Anime (Zahl links daneben eingeben): ") if (anichoice == "exit"): exit = True break elif (anichoice == "suche"): search = True break try: anichoice = int(anichoice) anime = results[anichoice - 1].getAnime() break except: print("Fehlerhafte eingabe, versuche erneut") if (search or exit): continue releases = anime.getReleases() print("\n\nReleases:\n") for rel in releases: print(rel.tostring()) print("\n") print("Bestes Release nach Qualität: " + anime.getBestReleaseByQuality().tostring()) relchoice = "" while (True): relchoice = input("Wähle eine Release ID: ") if (relchoice == "exit"): exit = True break elif (relchoice == "suche"): search = True break try: relchoice = int(relchoice) if (relchoice <= len(releases)): break else: raise Exception() except: print("Fehlerhafte Eingabe, versuche erneut") if (search or exit): continue release = releases[relchoice - 1] print("Du hast folgendes Release gewählt: " + str(release.tostring())) print("Das Release hat " + str(release.getEpisodeCount()) + " Episode(n)") epichoice = "" episodes = [] while (True): epichoice = input( "Welche Episode möchtest du herunterladen? (Mehrere mit Komma getrennt, 0 für alle (Achtung: Lädt im Moment noch jede Episode einzeln runter, zählt also zum Downloadlimit)): " ) if (epichoice == "exit"): exit = True break elif (epichoice == "suche"): search = True break if ("," in epichoice): try: episodes_str = epichoice.split(",") for ep in episodes_str: episodes.append(int(ep)) if (int(ep) <= release.getEpisodeCount()): pass else: raise Exception break except: print("Fehlerhafte Episodennummern") else: try: episodes.append(int(epichoice)) if (episodes[0] <= release.getEpisodeCount()): break else: raise Exception() except: print("Fehlerhafte Episodennummer") if (search or exit): continue try: if (episodes[0] != 0): for i in episodes: if (mode == "jdownloader"): ret = anime.downloadEpisode( i, release, hoster, browserengine, browserlocation=browserlocation, jdhost=jdhost, myjd_user=myjd_user, myjd_pw=myjd_pass, myjd_device=myjd_device) print(ret) else: ret = anime.downloadEpisode( i, release, hoster, browserengine, browserlocation=browserlocation) for idx, link in enumerate(ret): print("Part " + str(idx + 1) + ": " + link) elif (episodes[0] == 0): for i in range(0, release.getEpisodeCount()): print("Lade episode " + str(i)) if (mode == "jdownloader"): ret = anime.downloadEpisode( i + 1, release, hoster, browserengine, browserlocation=browserlocation, jdhost=jdhost, myjd_user=myjd_user, myjd_pw=myjd_pass, myjd_device=myjd_device) print(ret) else: ret = anime.downloadEpisode( i + 1, release, hoster, browserengine, browserlocation=browserlocation) for idx, link in enumerate(ret): print("Part " + str(idx + 1) + ": " + link) except selenium.common.exceptions.WebDriverException as e: print( "[Fehler] Du musst chromedriver.exe (Chrome) oder geckodriver.exe (Firefox) im selben Ordner oder Pfad haben" ) except ALCaptchaException: print( "Download benötigt captchas, bitte hole dir VIP für mehr Captcha-freie Zugriffe oder warte bis morgen" ) print("Programm wird beendet, vielen Dank fürs benutzen")
enable_jd = False # check if password present elif not jd_pass: if enable_log: logfile.write( f"\nNo MyJDownloader password given. Disabling JDownloader.") enable_jd = False # check if device name present elif not jd_device: if enable_log: logfile.write( f"\nNo MyJDownloader device given. Disabling JDownloader.") enable_jd = False else: # set up jd = myjdapi.Myjdapi() jd.set_app_key("bookmark-dl-testing") # try connecting with user and pass if not jd.connect(jd_user, jd_pass): # connection failed: if enable_log: logfile.write( f"\nMyJDownloader authentication failed. Disabling JDownloader." ) enable_jd = False # connection worked, look for device name elif not jd.get_device(jd_device): # device name not online if enable_log: logfile.write( f"\nMyJDownloader device not found. Disabling JDownloader."
def connect(self): info(self.silence, 'Connecting to my.jdownloader.org...') jd = myjdapi.Myjdapi() jd.connect(self.email, self.password) info(self.silence, 'Connected!') return jd