Skip to content
  • Kategorien
  • Aktuell
  • Tags
  • Beliebt
  • Benutzer
  • Gruppen
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
MediathekView Logo

MediathekView-Forum

  1. Übersicht
  2. Entwicklerforum
  3. Hashwert im Dateinamen von Downloads, Debugging in VS Code

Hashwert im Dateinamen von Downloads, Debugging in VS Code

Geplant Angeheftet Gesperrt Verschoben Entwicklerforum
19 Beiträge 7 Kommentatoren 478 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    pidoubleyou Entwickler
    schrieb am zuletzt editiert von
    #5

    wenn ich für die Download-Url in einem simplen Java-Programm String.hashCode() aufrufe, bekomme ich den gleichen absoluten Wert für den Hash wie beim Download in MV.

    Beispiel:

    "https://nrodlzdf-a.akamaihd.net/none/zdf/25/02/250225_rosendahl_charles_hde/1/250225_rosendahl_charles_hde_3360k_p36v17.mp4".hashCode()
    

    liefert den Hash -1776013421, beim Download bekomme ich *1776013421

    die Implementierung von String.hashCode ist laut API-Spec vorgegeben, so dass unterschiedliche JVM sich auch gleich verhalten.

    1 Antwort Letzte Antwort
    • D Offline
      D Offline
      DerReisende77 Entwickler
      schrieb am zuletzt editiert von
      #6
          /**
           * Returns a hash code for this string. The hash code for a
           * {@code String} object is computed as
           * <blockquote><pre>
           * s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
           * </pre></blockquote>
           * using {@code int} arithmetic, where {@code s[i]} is the
           * <i>i</i>th character of the string, {@code n} is the length of
           * the string, and {@code ^} indicates exponentiation.
           * (The hash value of the empty string is zero.)
           *
           * @return  a hash code value for this object.
           */
          public int hashCode() {
              // The hash or hashIsZero fields are subject to a benign data race,
              // making it crucial to ensure that any observable result of the
              // calculation in this method stays correct under any possible read of
              // these fields. Necessary restrictions to allow this to be correct
              // without explicit memory fences or similar concurrency primitives is
              // that we can ever only write to one of these two fields for a given
              // String instance, and that the computation is idempotent and derived
              // from immutable state
              int h = hash;
              if (h == 0 && !hashIsZero) {
                  h = isLatin1() ? StringLatin1.hashCode(value)
                                 : StringUTF16.hashCode(value);
                  if (h == 0) {
                      hashIsZero = true;
                  } else {
                      hash = h;
                  }
              }
              return h;
          }
      

      Aber Vorsicht, die String.hashCode() Methode verhält sich unterschiedlich bzgl. ASCII vs. UFT-16 strings.
      Bei Latin1Stringswird am Ende diese Funktion aufgerufen:

      private static int unsignedHashCode(int result, byte[] a, int fromIndex, int length) {
              int end = fromIndex + length;
              for (int i = fromIndex; i < end; i++) {
                  result = 31 * result + Byte.toUnsignedInt(a[i]);
              }
              return result;
          }
      

      result wird hier mit 0 initialisiert.

      Ich würde dir empfehlen IntelliJ Community Edition herunterzuladen. Damit kannst du MV als maven Projekt öffnen. Das Debuggen mit IntelliJ ist bedeutend besser und man kann sehr einfach über context menu oder Tastatur den function calls folgen.

      Open source developers do NOT have to:

      • Make your issue a priority, just because you say so.
      • Give you any sort of "timetable", or explanation for why it´s "taking too long".

      Check your entitlement. Nobody owes you anything.

      1 Antwort Letzte Antwort
      • M Offline
        M Offline
        maf
        schrieb am zuletzt editiert von
        #7

        Ich habe meine Reimplementation von hashCode() in Python mit der oben als Beispiel benutzten URL “https://nrodlzdf-a.akamaihd.net/none/zdf/25/02/250225_rosendahl_charles_hde/1/250225_rosendahl_charles_hde_3360k_p36v17.mp4” getestet. Wie die Bibliotheksfunktion in Java liefert sie den Wert -1776013421. Die Python-Version scheint also korrekt zu sein.

        Das Problem steckt an einer anderen Stelle: Die im Suchergebnis angegebene URL unterscheidet sich von der URL, die in der Infodatei genannt wird. Und deren Hashwert wird beim Download benutzt. Beispiel: Die KiKa-Sendung “Ein warmes Plätzchen” aus der Serie “Shaun das Schaf” wird als “Shaun das Schaf-Ein warmes Plätzchen-1126590016.mp4” heruntergeladen. Laut Infodatei ist die URL der Sendung “https://wdrmedien-a.akamaihd.net/medp/ondemand/de/fsk0/230/2307570/2307570_56461426.mp4”. Der Hashwert dieser URL ist tatsächlich 1126590016. Aber laut Suchergebnis hat die Sendung die URL “https://wdrmedien-a.akamaihd.net/medp/ondemand/de/fsk0/230/2307570/2307570_56461430.mp4”. Die letzten beiden Ziffern vor dem Punkt der URLs unterscheiden sich, und somit auch ihr Hashwert. Wie kommt das denn?

        styrollS 1 Antwort Letzte Antwort
        • styrollS Offline
          styrollS Offline
          styroll
          antwortete auf maf am zuletzt editiert von
          #8

          @maf sagte: Die letzten beiden Ziffern vor dem Punkt der URLs unterscheiden sich, und somit auch ihr Hashwert. Wie kommt das denn?

          • “26”: URL, welche in der Filmliste steht (allgemein: URL der Version in mittlerer Auflösung, was du vermutlich mit “Suchergebnis” gemeint hast)
          • “30”: URL der höchsten Auflösung (allgemein: URL der Version für die vom Benutzer beim Download selektiertem Auflösung, die dann auch im Info-File erscheint)
          1 Antwort Letzte Antwort
          • M Offline
            M Offline
            maf
            schrieb am zuletzt editiert von
            #9

            Wie kann ich zu einer URL, die in der Filmliste steht, die URL ermitteln, die zur vom Benutzer für den Dowload ausgewählten Auflösung gehört (um den beim Download im Dateinahmen enthaltenen Hashwert zu berrechnen)?

            Georg-JG 1 Antwort Letzte Antwort
            • Georg-JG Offline
              Georg-JG Offline
              Georg-J
              antwortete auf maf am zuletzt editiert von
              #10

              @maf Erster Record der Filmliste: “Url_Klein” steht 4 Felder hinter “Url”, “Url_HD” steht 6 Felder hinter “Url”. Diese Inhalte verändern den Wert von “Url”.

              M 1 Antwort Letzte Antwort
              • F Offline
                F Offline
                FranzB
                schrieb am zuletzt editiert von
                #11

                solltest auch bedenken (z.B. aktueller Tatort, die sammle ich): gleiche Filme werden oft bei unterschiedlichen Sendern / mit unterschiedlichen Titeln («Charlie» – Der neue Fall aus München oder Charlie) und auch unterschiedlichen URLs angeboten. Der Vergleich über die URL wird den Film nicht wiedererkennen.

                Ich vergleiche über den Titel mit einem “großzügigen” Vergleich

                1 Antwort Letzte Antwort
                • M Offline
                  M Offline
                  maf
                  antwortete auf Georg-J am zuletzt editiert von
                  #12

                  @Georg-J sagte in Hashwert im Dateinamen von Downloads, Debugging in VS Code:

                  Erster Record der Filmliste: “Url_Klein” steht 4 Felder hinter “Url”, “Url_HD” steht 6 Felder hinter “Url”. Diese Inhalte verändern den Wert von “Url”.

                  Die unterschiedlichen URLs habe ich noch nicht gefunden. Im Ergebnis der Suche (= Filmliste?) gibt es bei mir folgende Spalter: Nr, Sender, Thema, Titel, (3 x Buttons), Datum, Zeit, Dauer, Größe, HQ, UT, Geo und URL. Diese Daten erhalten ich auch mit Ctrl-A Ctrl-C. Kann ich die Spalten vielleicht konfigurieren?

                  vitussonV 1 Antwort Letzte Antwort
                  • vitussonV Offline
                    vitussonV Offline
                    vitusson
                    antwortete auf maf am zuletzt editiert von
                    #13

                    @maf sagte in Hashwert im Dateinamen von Downloads, Debugging in VS Code:

                    @Georg-J sagte in Hashwert im Dateinamen von Downloads, Debugging in VS Code:

                    Erster Record der Filmliste: “Url_Klein” steht 4 Felder hinter “Url”, “Url_HD” steht 6 Felder hinter “Url”. Diese Inhalte verändern den Wert von “Url”.

                    Die unterschiedlichen URLs habe ich noch nicht gefunden. Im Ergebnis der Suche (= Filmliste?) gibt es bei mir folgende Spalter: Nr, Sender, Thema, Titel, (3 x Buttons), Datum, Zeit, Dauer, Größe, HQ, UT, Geo und URL. Diese Daten erhalten ich auch mit Ctrl-A Ctrl-C. Kann ich die Spalten vielleicht konfigurieren?

                    Georg spricht von der eigentlichen Filmliste, du von der Liste die du unter dem Tab Filme im Client zu sehen bekommst. Zwei verschiedene Dinge.

                    M 1 Antwort Letzte Antwort
                    • M Offline
                      M Offline
                      maf
                      antwortete auf vitusson am zuletzt editiert von
                      #14

                      @vitusson sagte in Hashwert im Dateinamen von Downloads, Debugging in VS Code:

                      Georg spricht von der eigentlichen Filmliste, du von der Liste die du unter dem Tab Filme im Client zu sehen bekommst. Zwei verschiedene Dinge.

                      Ist diese “eigentliche Filmliste” die Datei filme.json im Ordner “.mediathek3”? Dann kann ich also in der Filmliste nach dem Eintrag mit der URL suchen, die ich im Suchergebnis finde, und dann sechs Felder weiter die URL für die HD-Version finden?

                      Mein Test: Die URL der Sendung “Shaun auf der Flucht” in der Liste der Suchergebnisse ist “https://wdrmedien-a.akamaihd.net/medp/ondemand/de/fsk0/222/2227824/2227824_56161383.mp4”. Diese USR finde ich auch in filme.json. Vier Felder weiter steht “82|1.mp4” (was ist das?) und sechs Felder weiter steht “https://wdrmedien-a.akamaihd.net/medp/ondemand/de/fsk0/222/2227824/2227824_56161379.mp4”. Der Hash-Wert dieser URL ist 740055391. Und der Download der Sendung hat tatsächlich den Dateinamen “Shaun das Schaf-Shaun auf der Flucht-0740055391.mp4”. Bingo!

                      Georg-JG 1 Antwort Letzte Antwort
                      • vitussonV Offline
                        vitussonV Offline
                        vitusson
                        schrieb am zuletzt editiert von vitusson
                        #15
                        [ "Sender", "Thema", "Titel", "Datum", "Zeit", "Dauer", "Größe [MB]", "Beschreibung", "Url", "Website", "Untertitel", "UrlRTMP", "Url_Klein", "UrlRTMP_Klein", "Url_HD", "UrlRTMP_HD", "DatumL", "Url_History", "Geo", "neu" ]
                        [ "", "", "Shaun auf der Flucht", "15.03.2025", "18:05:00", "00:07:03", "111", "Als Shaun er in der Küche des Farmers Chaos anrichtet und überall Torte verteilt, können ihm die Schafe nicht mehr helfen. Der Farmer ist stinksauer.", "https://wdrmedien-a.akamaihd.net/medp/ondemand/de/fsk0/222/2227824/2227824_56161383.mp4", "https://www.kika.de/shaun-das-schaf/videos/shaun-auf-der-flucht-102", "", "", "82|1.mp4", "", "81|79.mp4", "", "1742058300", "", "DE", "true" ],
                        1 Antwort Letzte Antwort
                        • Georg-JG Offline
                          Georg-JG Offline
                          Georg-J
                          antwortete auf maf am zuletzt editiert von
                          #16

                          @maf sagte in Hashwert im Dateinamen von Downloads, Debugging in VS Code:

                          “82|1.mp4” (was ist das?)

                          Nehme die ersten 82 Zeichen von “Url” und hänge “1.mp4” an.

                          1 Antwort Letzte Antwort
                          • M Offline
                            M Offline
                            maf
                            schrieb am zuletzt editiert von
                            #17

                            Danke euch allen, jetzt klappt es.

                            Da ich die Suche nun in der Filmliste selbst durchführe, benötige ich das GUI eigentlich nur, falls eine neue Sendung heruntergeladen werden muss. Deshalb, für die reine Suche: Ist es möglich, MediathekView so aufzurufen, dass die Filmliste aktualisiert aber das GUI nicht geöffnet wird. Und für den Fall eines Downloads: Ist es möglich, MediathekView zu starten ohne die Filmliste zu aktualisieren?

                            vitussonV 1 Antwort Letzte Antwort
                            • vitussonV Offline
                              vitussonV Offline
                              vitusson
                              antwortete auf maf am zuletzt editiert von
                              #18

                              @maf sagte in Hashwert im Dateinamen von Downloads, Debugging in VS Code:

                              : Ist es möglich, MediathekView so aufzurufen, dass die Filmliste aktualisiert aber das GUI nicht geöffnet wird.

                              Ja, mit dem Parameter -dq oder --download-quit aufrufen

                              styrollS 1 Antwort Letzte Antwort
                              • styrollS Offline
                                styrollS Offline
                                styroll
                                antwortete auf vitusson am zuletzt editiert von styroll
                                #19

                                @vitusson sagte: Ja, mit dem Parameter -dq oder --download-quit aufrufen

                                Das könnte man ja selbst mal testen, bevor man eine Aussage dazu macht (wie nennst du das schon wieder: “Glauben vs. Wissen”?)

                                @maf: Du kannst mit der besagten Funktion, welche du mit einem Startskript aufrufst, anstehende Downloads z.B. aus Abos runterladen, wonach sich das Programm automatisch beendet (das geht allerdings nicht, ohne dass dabei “das GUI geöffnet” wird).

                                @maf sagte: Und für den Fall eines Downloads: Ist es möglich, MediathekView zu starten ohne die Filmliste zu aktualisieren?

                                Ja, ich empfehle dir mal die Programmeinstellungen durchzugehen. Die Art des Ladens der Filmliste kann dort ein- bzw. auf manuell umgestellt werden. Mal abgesehen davon, aktualisiert sich die Filmliste v.a. automatisch, wenn sie älter als 3 h ist und MV neu gestartet wird.

                                1 Antwort Letzte Antwort
                                • M maf hat am auf dieses Thema verwiesen

                                31

                                Online

                                6.6k

                                Benutzer

                                6.1k

                                Themen

                                38.9k

                                Beiträge
                                undefined
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Kategorien
                                • Aktuell
                                • Tags
                                • Beliebt
                                • Benutzer
                                • Gruppen