JDownloader 2 Save.TV APIv3 BETATest

Top-Downloadmanager mit voller Save.TV Integration! (automatische Archivübernahme u.v.a.m.)
Benutzeravatar
jdownloader_pspzockerscene
Beiträge: 91
Registriert: Mo 28. Mär 2016, 18:28
bevorzugter Onlinevideorecorder: Keinen
Kontaktdaten:

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von jdownloader_pspzockerscene »

Fox    hat geschrieben: Mi 6. Sep 2017, 16:11Man könnte sich auch überlegen die APIv3 als Default einzusetzen, anstelle der Webseite.
Genau das wird auch passieren.
Sobald ich der Meinung bin, dass das Ding läuft gibt es eine vorläufige "Zwangsumstellung" - die Möglichkeit, über die Webseite zu gehen schalte ich allerdings irgendwann wieder frei immerhin funktioniert er Code noch.
Sollte die Webseite das nächste mal geändert werden, werde ich diesen Code allerdings nicht mehr warten und die Option entfernen.
Falls man in Zukunft doch nochmal 2 Zugriffswege benötigt ist es ein leichtes, dies wieder zu aktivieren.

Ein Release ist aktuell nur noch nicht draußen, da ich keine Zeit für Support habe und euch keinen längeren JD-Stv Ausfall zumuten möchte^^
Fox    hat geschrieben: Mi 6. Sep 2017, 16:11
  • TelecastID - Ein Eintrag im EPG
  • RecordID - Eine programmierte TV-Aufnahme (ggf. fertiggestellt oder in der Zukunft liegend)
[...]Für mich würde es allerdings keinen Sinn Ergeben, in die Downloadliste eines Downloadmanagers eine Datei (TelecastID) aufzunehmen, von der nicht einmal sich ist, dass sie angelegt werden wird. Bei einer RecordID ist zumindest garantiert, dass die Sendung programmiert wurde und - sofern sie nicht gelöscht wird - nach der Ausstrahlung heruntergeladen werden kann.
Für mich macht es dennoch Sinn bzw. noch nicht aufgenommene Sendungen können bereits seit einiger Zeit heruntergeladen werden.
JD zeigt in diesem Fall auch eine korrekte Fehlermeldung und wartet, bis die Aufnahme verfügbar ist.
Ich kann die Stv-Sicht allerdings auch verstehen.
Im Endeffekt ist es egal hauptsache die Software funktioniert am Ende ;)
Fox    hat geschrieben: Mi 6. Sep 2017, 16:11 Aufnahmegröße
Die Werte zur Dateigröße von GET /v3/records/{id}/downloads/{recordformat} sowie GET /v3/records/{id} der API sind geschätzt.[...]
Hm okay dann mache ich ja alles richtig ... weil den Aufruf kann ich mir bis zum eigentlichen Download sparen ... selbst schätzen geht natürlich schneller als noch nen http-Aufruf machen.
Ich wüsste nur zu gerne wie Stv schätzt, denn die sind doch etwas genauer als ich ... Ideen?
Ich hab die Bitraten für die Qualitätsstufen hardcoded drinnen und rechne dann anhand der Dauer der Aufnahmen die Größe aus^^

Grüße, psp
Offizielle JDownloader Webseite:
https://jdownloader.org/
Offizielles JDownloader Supportforum:
https://board.jdownloader.org/

Link:
BBcode:
HTML:
Hide post links
Show post links
Benutzeravatar
Fox   
Administrator
Beiträge: 1036
Registriert: Do 3. Mär 2016, 13:29
bevorzugter Onlinevideorecorder: (Eigenbau)
Kontaktdaten:

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von Fox    »

Ich denke, dass SaveTV für die Bitraten usw. irgendwelche Monitoring-Software einsetzt, um größere Fehler selbstständig zu bemerken und dies nicht durch die Benutzer erfahren zu müssen. Desweiteren weiß SaveTV genau, wie viele Sekunden an Werbeschnitten weggeschnitten wurden. Der jDownloader rechnet meines Wissens mit den Sendezeiten - die tatsächlich Sendung ist allerdings meist 22 statt 25 Minuten lang, oder geht 1h 9 min, statt 1h 5 min. Ich kann mir dadurch eine höhere Präzision auf Seiten von SaveTV erklären. Ich denke allerdings, dass eine hohe Präzision nicht wirklich erforderlich ist.
Erkennen - Verstehen - Nutzen
Es gibt immer schlechte Beispiele - aber sollte man nicht versuchen, besser zu sein?

Link:
BBcode:
HTML:
Hide post links
Show post links
Benutzeravatar
jdownloader_pspzockerscene
Beiträge: 91
Registriert: Mo 28. Mär 2016, 18:28
bevorzugter Onlinevideorecorder: Keinen
Kontaktdaten:

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von jdownloader_pspzockerscene »

Fox    hat geschrieben: Do 7. Sep 2017, 23:29[...]Desweiteren weiß SaveTV genau, wie viele Sekunden an Werbeschnitten weggeschnitten wurden. Der jDownloader rechnet meines Wissens mit den Sendezeiten - die tatsächlich Sendung ist allerdings meist 22 statt 25 Minuten lang, oder geht 1h 9 min, statt 1h 5 min. Ich kann mir dadurch eine höhere Präzision auf Seiten von SaveTV erklären. Ich denke allerdings, dass eine hohe Präzision nicht wirklich erforderlich ist.
Da stimme ich dir zu.

Grüße, psp
Offizielle JDownloader Webseite:
https://jdownloader.org/
Offizielles JDownloader Supportforum:
https://board.jdownloader.org/

Link:
BBcode:
HTML:
Hide post links
Show post links
Fredel
Beiträge: 927
Registriert: So 21. Feb 2016, 20:45
bevorzugter Onlinevideorecorder: Save.TV

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von Fredel »

jdownloader_pspzockerscene hat geschrieben: Do 7. Sep 2017, 11:22Ich hab die Bitraten für die Qualitätsstufen hardcoded drinnen und rechne dann anhand der Dauer der Aufnahmen die Größe aus^^
Das funktioniert doch gut, nur welche Dauer nimmst Du?

Mein Vorschlag wäre den adFreeLength Wert (Records Abfrage) für die Berechnung der Downloadgröße zu verwenden. Telecast End minus Start beinhaltet ggf. Werbung, wäre nur interessant, wenn Du auf die Plug-In Einstellungen des Users (addfree/uncut) eingehen willst.

Bei der Berechnung liegst Du (bislang) dennoch teils extrem daneben. Hier ein Beispiel:

telecastId 14025360

DL laut JDL: 693,27 MB bei H.264 HQ adfree und uncut. Die Qualität unterscheidet der JDL. Ob man uncut/adfree herunter laden will nicht.

Der Download ist bei H.264 HQ:
  • 370.915.917 mit Schnittliste, 1819 Sek. Spielzeit
  • 1.955.065.932 ohne Schnittliste, 9600 Spielzeit
Eigentlich liefert api.save.tv:443/v3/records/ auch die richtigen Daten. Wobei man selbst formats.uncutvideosize vergessen kann, und telecast.endDate minus telecast.startDate nicht aussagt was tatsächlich aufgenommen wurde. Dagegen ergeben enddate minus startdate, die Bruttospielzeit (uncut) und adFreeLength entspricht der adfree Nettospielzeit.

Code: Alles auswählen

    {
        "telecastId": 14025360,
        "adFreeLength": 1819,
        "startDate": "2017-08-18T19:00:00Z",
        "endDate": "2017-08-18T21:40:00Z"
    }
1819*204.000=371.076.000
9600*204.000=1.958.400.000

Verprobung (Telecast 14038238):
lt. JDL 189,07 trifft hier auf addfree sehr gut zu. Vermutlich da die Aufnahme (Tagesschau) so und so werbefrei ist.
  • 188.240.953 mit Schnittliste, 922 Sek. Spielzeit
  • 1.470.477.967 ohne Schnittliste, 7200 Spielzeit

Code: Alles auswählen

    {
        "telecastId": 14038238,
        "adFreeLength": 922,
        "startDate": "2017-09-07T17:45:00Z",
        "endDate": "2017-09-07T19:45:00Z",
    }
922*204.000=188.088.000
7200*204.000=1.468.800.000
jDownloader & Save.TV: 1. Schritte - automatischer Download <--> Save.TV Manager Version 3 Update: Favoriten retten

Link:
BBcode:
HTML:
Hide post links
Show post links
Benutzeravatar
jdownloader_pspzockerscene
Beiträge: 91
Registriert: Mo 28. Mär 2016, 18:28
bevorzugter Onlinevideorecorder: Keinen
Kontaktdaten:

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von jdownloader_pspzockerscene »

Danke für die Info!

Also zusammengefasst:
- Für Aufnahmen mit Werbung kann man die Endzeit minus Startzeit nehmen?
- Für Aufnahmen ohne Werbung am besten den von Stv angegebenen Wert nehmen?

Grüße, psp
Offizielle JDownloader Webseite:
https://jdownloader.org/
Offizielles JDownloader Supportforum:
https://board.jdownloader.org/

Link:
BBcode:
HTML:
Hide post links
Show post links
Fredel
Beiträge: 927
Registriert: So 21. Feb 2016, 20:45
bevorzugter Onlinevideorecorder: Save.TV

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von Fredel »

jdownloader_pspzockerscene hat geschrieben: Mo 11. Sep 2017, 10:31 Danke für die Info!

Also zusammengefasst:
- Für Aufnahmen mit Werbung kann man die Endzeit minus Startzeit nehmen?
- Für Aufnahmen ohne Werbung am besten den von Stv angegebenen Wert nehmen?

Grüße, psp
a) Ja, End- Startzeit des Records (!), nicht des Telecast (wg. abweichender individueller Vor-/Nachlaufzeiten). Daher: endDate/startDate (nicht telecast.endDate minus telecast.startDate) aus der Records Abfrage.

b) Ja, Save.TV berechnet die (aktuell gültige) Schnittlisten auf die Sekunde korrekt.
jDownloader & Save.TV: 1. Schritte - automatischer Download <--> Save.TV Manager Version 3 Update: Favoriten retten

Link:
BBcode:
HTML:
Hide post links
Show post links
Benutzeravatar
jdownloader_pspzockerscene
Beiträge: 91
Registriert: Mo 28. Mär 2016, 18:28
bevorzugter Onlinevideorecorder: Keinen
Kontaktdaten:

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von jdownloader_pspzockerscene »

Danke ist alles notiert und wird in sehr naher Zukunft umgesetzt und released!

Danke nochmal an Fox, der mir ein fehlendes Puzzlestück der Loginfunktion geschickt hat :)

Grüße, psp
EDIT
Sammlung möglicher Stv API Fehler-Antworten:

Code: Alles auswählen

(Die 'reference' Werte sind natürlich bei jedem Fall unterschiedlich)
Zum Beispiel falsche wenn man falsche Parameternamen angibt:
[
  {
    "developerMessages": [
      "Internal server error (500)."
    ],
    "reference": "6519b7710c5f49598f9e8f0a2281cb0a",
    "userMessage": "Ein interner Serverfehler ist aufgetreten. Erscheint dieser kontinuierlich, habe bitte ein wenig Geduld und wiederhole die Aktion in wenigen Minuten erneut.",
    "id": "SERVER_ERROR"
  }
]


Fehlender- oder falscher "Authorization"- Header:

Code: Alles auswählen

[
  {
    "developerMessages": [
      "Unauthorized request. HTTP status code 401.",
      "Request URI: http://api.save.tv/v3/records",
      "Current user: ---",
      "Authorization header: "
    ],
    "reference": "421ed44ba2b14f479ba0c0e1c73db379",
    "userMessage": "Du musst eingeloggt sein oder die benötigten Rechte besitzen, um die API nutzen zu können.",
    "id": "SERVER_UNAUTHORIZED"
  }
]

Werbefreie Version kaputt, da durch die Schnittliste das geschnittene Video eine Länge von 0 hat (Fehlermeldung beim Downloadversuch):

Code: Alles auswählen

[{
 "developerMessages": ["After applying ad info, the video contains no content."],
 "properties": [],
 "reference": "c0a8b9486bbf400d91f1709a418f1a09",
 "userMessage": "Durch die Anwendung der Schnittliste wurde der komplette Inhalt der Sendung entfernt. Um den Inhalt deiner Aufnahme anzusehen,  lade bitte die ungeschnittene Version herunter.",
 "id": "DOWNLOADSESSIONVIDEOFILESSERVICE_NOCONTENT"
}]
Zuletzt geändert von jdownloader_pspzockerscene am Mo 2. Okt 2017, 19:33, insgesamt 1-mal geändert.
Offizielle JDownloader Webseite:
https://jdownloader.org/
Offizielles JDownloader Supportforum:
https://board.jdownloader.org/

Link:
BBcode:
HTML:
Hide post links
Show post links
Benutzeravatar
jdownloader_pspzockerscene
Beiträge: 91
Registriert: Mo 28. Mär 2016, 18:28
bevorzugter Onlinevideorecorder: Keinen
Kontaktdaten:

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von jdownloader_pspzockerscene »

(Erster) Release der Save.tv APIv3 Implementation.

Standardmäßig ist die Verwendung der API (noch) deaktiviert - wer testen mag, kann sie in den Plugin Einstellungen [Einstellungen --> Plugins --> save.tv] unter "APIv3 verwenden" aktivieren!
Die meisten Dinge aus dem Changelog betreffen die API, aber auch die Implementation der Webseite wurde rteilweise geändert - auch hier können Fehler passieren!

Changelog:
- APIv3 eingebaut
- Generierte Downloadlinks werden intern nun so lange wie möglich wiederverwendet
- Abgeschlossene Downloads bekommen einen "Download vollständig" Verweis; zu sehen auf der telecastID Save.tv Seite unter "Tags" (da wo auch sowas steht wie "Länge werbefreie Aufnahme: 22:56")
- Viele Logger hinzugefügt, um die Fehlersuche zu vereinfachen
- Refactoring und viel alten Code rausgeworfen
- Die Einstellung, wann Sendungen ohne Schnittliste heruntergeladen werden dürfen, sofern keine Schnittliste mehr existiert bestand aus mehreren Einstellungen - man konnte einstellen, wie lange zwischen den Versuchen gewartet werden soll und wie viele Versuche es gibt.
Das ist nun simpler: Man stellt einfach nur noch ein, ab wie vielen Stunden nach Release der Aufnahme diese MIT Werbung heruntergeladen werden darf, sofern es keine Schnittliste gibt.
Gewartet wird zwischendrin fix eine Stunde und standardmäßig wird die Version mit Werbung im "schlimmsten Fall" nach 72 Stunden[Standardeinstellung] heruntergeladen (das lässt sich anpassen).
--> Konkret geht es um die Einstellung mit der Bezeichnung "Download von Aufnahmen ohne Schnittliste erzwingen, sofern X Stunden nach Aufnahmedatum keine Schnittliste verfügbar ist?"
- Wird wegen fehlender Schnittliste gewartet, enthält die Fehlermeldung die Information, wann der Download ohne Schnittliste spätestens erfolgen wird
- Berechnung der Dateigröße ist nun viel genauer[bis auf 10 MB] und Abhängigkeiten zu Formats- und Werbeeinstellungen werden voll berücksichtigt (davor wurde z.B. bei bevorzugtem HD immer die HD-Bitrate zum Ausrechnen verwendet auch wenn die Aufnahme nicht in HD zur Verfügung stand)
- User-Agent für Webseiten-Zugriffe geändert von "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0" nach "JDownloader"
- Merged changes from raztoki revision 37644, 2017-08-18, thx

Bei Verwendung der API kann der Paketpreis- und das Ablaufdatum nicht im Accountstatus angezeigt werden.
Ich hoffe darauf, dass Save.tv das in Zukunft auch per API "User | get " zurückgeben wird - ansonsten ist es auch nicht weiter tragisch.

Ich stehe ab morgen ~13:00 Uhr zwecks Support zur Verfügung.

Grüße, psp
Offizielle JDownloader Webseite:
https://jdownloader.org/
Offizielles JDownloader Supportforum:
https://board.jdownloader.org/

Link:
BBcode:
HTML:
Hide post links
Show post links
Benutzeravatar
jdownloader_pspzockerscene
Beiträge: 91
Registriert: Mo 28. Mär 2016, 18:28
bevorzugter Onlinevideorecorder: Keinen
Kontaktdaten:

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von jdownloader_pspzockerscene »

Danke für das Feedback von "Fox".

Es gibt nochmal ein Update:

Changelog:
- Errorhandling verbessert: Sehr alte, bereits gelöschte telecastIDs werden nun korrekt als offline markiert
- Nicht programmierte telecastIDs werden nun als offline angezeigt, da sie ohne Zutun des Nutzers sowieso niemals ladbar wären
- In manchen Fällen werden sogar für 'tote Links' Dateinamen- und Größen angezeigt
- 'Schneller Linkcheck' Einstellungsmöglichkeit entfernt: Ist unter Verwendung der API immer gegeben und daher nicht mehr als Einstellungsmöglichkeit notwendig
- Unterstützung für 'Streamlinks' eingebaut: save.tv/VideoArchiveStreaming.cfm?telecastId=12345678&recordFormatId=6&AdFree=1
Die im Link befindlichen Parameter werden (noch) nicht berücksichtigt - in der Regel Streamt man eher niedrige Qualitätsstufen aber mag dann die höchste herunterladen (soweit meine Logik).
- Der Crawler verhält sich unter APIv3 nun wie zuvor; es werden nur abgeschlossene Aufnahmen gecrawlt
- Crawler: 'Letzte X Stunden crawlen' wird nun serverseitig gefiltert --> Crawler ist an dieser Stelle immens schneller
- Standardwert Erzwungener Download von Aufnahmen ohne Schnittliste von 12- auf 24 Stunden geändert

Das nächste Release wird die API erzwungenermaßen aktivieren.
Nach weiteren Fehlerbehebungen wird die Unterstützung über die Webseite (vorerst) komplett deaktiviert.


Grüße, psp
Offizielle JDownloader Webseite:
https://jdownloader.org/
Offizielles JDownloader Supportforum:
https://board.jdownloader.org/

Link:
BBcode:
HTML:
Hide post links
Show post links
Fredel
Beiträge: 927
Registriert: So 21. Feb 2016, 20:45
bevorzugter Onlinevideorecorder: Save.TV

JDownloader 2 Save.TV APIv3 BETATest

Beitrag von Fredel »

Apiv3 Feature Anfrage

Besteht die Möglichkeit dem Archiv Crawler (nicht dem Save.TV Crawler allgemein) einen optionalen, serverseitigen Filter hinzuzufügen, in der Plugin-GUI als Checkbox ( ja/nein Standart: deaktiviert). Es handelt sich um den Parameter

tags=record:manual

Hintergrund: Im XXL Tarif ist echtes Catch All leicht realisierbar. Daher alle Telecasts aller Sender, ca. ~100.000 Records.

Lösung: Um alle Wünsche gesammelt und dennoch Catch-All zu haben ist ein Chaos Workaround: auf ausdrücklich zum Download gewünschte Sendungen vor Ausstrahlung manuelle Programmierung anzuwenden. Das geht schnell, z.B. mit dem Save.TV Manager von thoamsfl.

Nutzen des Save.TV Plugin Features: Durch den zusätzlichen Filter tags=record:manual, liefert die Api serverseitig nur diese manuell programmierten Aufnahmen. Der Filter ist serverseitig sehr performant.

Background: "Tags" ist bei Catch All Channel Aufnahmen erstmal generell nicht vorhanden. Auch Channel programmierte Aufnahmen können bis zur Ausstrahlung um den tag.key ergänzt werden. Es werden ggf. weitere Keys mit individuellen Values hinzugefügt. Das Tag "record:manual" bleibt stehen, außer der Record wird gelöscht.


Als URL Request:

Code: Alles auswählen

https://api.save.tv:443/v3/records?tags=record%3Amanual

Response Bsp.:

Code: Alles auswählen

[
  {
    "telecastId": 14151103,
    "tags": [
      {
        "value": "Länge werbefreie Aufnahme: 19:59",
        "key": "record:adfree:length"
      },
      {
        "value": "Manuelle Aufnahme",
        "key": "record:manual"
      },
      {
        "value": "Angesehen bis 27:54",
        "key": "record:resume:0"
      }
    ]
  }
]
jDownloader & Save.TV: 1. Schritte - automatischer Download <--> Save.TV Manager Version 3 Update: Favoriten retten

Link:
BBcode:
HTML:
Hide post links
Show post links
Antworten