IMDb Scraper und Gedanken zu einem Update von EMM

  • I did something:

    GitHub - tardezyx/tar.IMDbScraper: An IMDb scraper (AJAX, HTML, JSON)
    An IMDb scraper (AJAX, HTML, JSON). Contribute to tardezyx/tar.IMDbScraper development by creating an account on GitHub.
    github.com

    Damit sollten sich momentan nahezu alle Infos zu einem Titel von IMDb ziehen lassen. Sogar die Suche ist implementiert.

    Vielleicht könnte man EMM ja auch mal weg von VB und auf C# (gar als Web App?) hieven sowie dabei eine wirklich asynchrone Verarbeitung samt nachvollziehbarem Verarbeitungslog nutzen. In diesem Zuge wäre es ebenfalls sinnvoll, die APIs von Radarr & Co. einzubinden, um letztlich eine zentrale App zu haben, die folgendes bietet:

    • eine Übersicht aller vorhandenen Titel (Filme, Serien inkl. Staffeln und Folgen)
      • bei Serien eine schnelle Übersicht aller vorhandenen und fehlenden Folgen
    • eine Darstellung aller vorhandenen, einstellbaren(!) Varianten je Titel (bspw. <1K, 2K, 4K, optional vielleicht auch IMAX, Director's Cut, etc.)
    • Online-Suche samt Übersicht (ob und welche Variante vorhanden ist inkl. Status) sowie direkte Leech-Möglichkeit (via Radarr & Co.)
    • eine (semi-)automatische Umbenennung und Einsortierung ins eigentliche Archiv (außerhalb Radarr & Co.)
      • Berücksichtung der Varianten (bspw. Unterordner für <1K, 2K, 4K für unterschiedliche Anwendungszwecke wie Streamen nur von <1K-Inhalten)
    • eine Darstellung des jeweiligen Status, bspw.:
      • "added" (man hat den Titel noch nicht, aber er ist vorgemerkt, sozusagen "haben will")
      • "queued" (wird heruntergeladen)
      • "leeched" (wurde heruntergeladen)
      • "scraped" (Datei-Infos zur Varianten-Erkennung usw. wurden gescraped, Titel-Infos sollten bereits direkt beim Adden gescraped werden)
      • "archived" (wurde ins Archiv einsortiert)
    • Anlegen individueller Sammlungen
    • Abspielen der Medien

    Einiges ist in EMM bereits vorhanden, aber momentan muss man vor allem ständig zwischen Radarr & Co. und EMM wechseln sowie manuell einsortieren, was mitunter sehr viel Zeit kostet.

    Nun kann ich zwar C#, jedoch bin ich bei Web Apps sowie DB-Versionierungen unbewandert. Könnte also vorläufig nur hinsichtlich einer Desktop-Variante unterstützen und hierbei würde ich grundsätzlich raten, bei Winforms und SQLite zu bleiben.

    Die aktuelle DB kann meiner Ansicht nach auch etwas verschlankt werden, da man nicht sämtliche Titel-Infos vorhalten muss, sondern bei Bedarf nachladen (live nachscrapen) kann und in der XML/NFO ablegt. Im Wesentlichen reicht eine zentrale ID (ich plädiere für die IMDb-ID), um das Nachscrapen zu bewerkstelligen. Für die XML/NFO dürfte in der Regel nach einem Initial-Scrape ohnehin nur ein Update der Ratings (IMDb, TMDb, MetaCritic, etc.) interessant sein.

    Die DB müsste andererseits aber erweitert werden, um mehrere Varianten eines Titels und ggf. auch eigene Sammlungen samt individueller Sortiermöglichkeit zur inhaltlichen Reihenfolge zu unterstützen. So gehören bspw. "Iron Man 1-3" zu den Sammlungen "Iron Man" sowie "Marvel/Avengers" (oder wie immer man das betiteln will).

    Viel, viel Arbeit [de]

  • Der Scraper ist eine C#-Bibliothek. Der Exporter ist eine eigenständige C#-App, die den Scraper nutzt, aber die ganze Medienverwaltung von EMM nicht hat und die IMDb-Infos lediglich als .json-Datei speichert. Da fehlt also die ganze weitere Aufbereitung für Kodi.

    EMM ist hingegen in Visual Basic geschrieben. Meines Wissens nach lassen sich aber in Visual Basic auch C#-Bibliotheken einbinden. D.h. DanCooper könnte mit etwas Aufwand den Scraper auf meinen umstellen/aktualisieren. Da müsste man schauen, was EMM konkret für Infos zieht und ob da irgendwas bei meinem fehlt, wobei ich aber so ziemlich alles abgedeckt habe.

    Etwas problematisch gestaltet sich die Hash-Geschichte bei IMDb, weil sie die Hashes aller paar Tage/Wochen aktualisieren und man sie für die meisten Abfragen benötigt. Deswegen habe ich im Scraper diesen simulierten Browserablauf eingebaut, der die neuen Hashes innerhalb von 1,5-2 Minuten automatisch zieht und abspeichert. Das hakt manchmal (man muss dann ggf. händisch noch eingreifen, also mal hochscrollen oder den Browser maximieren), weswegen es sinnvoll sein könnte, die neuen Hashes als (regelmäßiges) App-Update bereitzustellen oder direkt irgendwo zentral abzulegen.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!