Exemple #1
0
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)
Exemple #2
0
    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
        }])
Exemple #3
0
 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")
Exemple #5
0
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
Exemple #6
0
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)
Exemple #7
0
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" }])
Exemple #8
0
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()
Exemple #9
0
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")
Exemple #10
0
     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."
Exemple #11
0
 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