audiamus / BookLibConnect

A standalone Audible downloader and decrypter
GNU General Public License v3.0
701 stars 40 forks source link

Probleme mit Metadaten #3

Closed alurio closed 2 years ago

alurio commented 2 years ago

Hey Audioamus, leider muss ich schon wieder eine negative Beobachtung rückmelden.

Das Auslesen der Kapitel Metadaten funktioniert zum Teil nicht richtig.

Aufgefallen ist mir das zum Beispiel bei dem Titel Todesreigen von Andreas Gruber. Da werden aus der nach dem Download entstandenen AAX nur 8 Kapitel ausgelesen. Richtig wären 78. Ich kann das Vergleichen, da ich den Titel über die bisherige Lösung via Win 10 App schon umgewandelt habe. Wunderbar hat es hingegen mit dem Titel der Gefrierpunkt des Blutes von Ant onio Manzini Was da jetzt den Unterschied macht ist jetzt natürlich die spannende Frage. Wie kann ich dir die metadaten beider Titel zur Analyse schicken ? per Drag and Drop hier drin funktioniert es nicht.

Viele Grüße

alurio commented 2 years ago

ps die M48 zu Todesreigen funktioniert, da ist die Kapitelstruktur Korrekt in der Datei abgelegt. Das nur als Zusatzinfo.

Grüße

audiamus commented 2 years ago

In dem Export-Verzeichnis werden für jedes Buch neben dem Pseudo-AAX auch Metadaten als json abgelegt. Die Assoziation ist wieder über die ASIN, wie AAX Audio Converter das erwartet. (Dieser Umweg wird später, nach der Integration, nicht mehr nötig sein.) Die Kapitel stehen bekanntlich in content_metadata_<ASIN>.json. Wie alle JSON sind auch diese verdichtet. Aber mit Neuformatierung (siehe Hinweis zu Visual Studio Code unter #1) werden sie lesbar. Wie viele Kapitel stehen da drin?

Wie kann ich dir die metadaten beider Titel zur Analyse schicken ?

Hochladen müsste gehen, wenn als ZIP verpackt. Ist eh besser für die Lesbarkeit im Thread.

alurio commented 2 years ago

Hey Audiamus Ich schicke dir eine Zip mit den Rohdaten Zur Neuformatierung fehlt mir die Software. Visual Studio hab ich nicht auf dem Rechner..

Ich vermute in den fehlerhaften Metadaten stehen 7 Kapitel. Auf die läuft es bei meinen Tests jedenfalls regelmäßig raus Seit gestern bei eigentlich allen Büchern außer besagtem Gefriepunkt des Blutes.

Viele Grüße Henning

Am Fr., 21. Jan. 2022 um 10:49 Uhr schrieb audiamus < @.***>:

In dem Export-Verzeichnis werden für jedes Buch neben dem Pseudo-AAX auch Metadaten als json abgelegt. Die Assoziation ist wieder über die ASIN, wie AAX Audio Converter das erwartet. (Dieser Umweg wird später, nach der Integration, nicht mehr nötig sein.) Die Kapitel stehen bekanntlich in contentmetadata.json. Wie alle JSON sind auch diese verdichtet. Aber mit Neuformatierung (siehe Hinweis zu Visual Studio Code unter #1 https://github.com/audiamus/BookLibConnect/issues/1) werden sie lesbar. Wie viele Kapitel stehen da drin?

Wie kann ich dir die metadaten beider Titel zur Analyse schicken ?

Hochladen müsste gehen, wenn als ZIP verpackt. Ist eh besser für die Lesbarkeit im Thread.

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018347931, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYNRRVTA4ANRVCMRQC3UXET3ZANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

Visual Studio hab ich nicht auf dem Rechner..

Visual Studio und Visual Studo Code sind zwei sehr verschiedene Produkte. Visual Studio ist eine umfangreiche Integrierte Entwicklungsumgebung, während Visual Studio Code im Grundgerüst "nur" ein einfacher Text-Editor ist, mit allerdings sehr flexiblen Erweiterungsmöglichkeiten.

alurio commented 2 years ago

Wie auch immer, ich hab weder das eine noch das andere. hab übrigens gerade übrigens gerade zum Testen Game of Thrones Deutsch Band 1 mit Booklibconnect runtergeladen und dann die AAX im Converter durchlaufen lassen. da hat alles ganz wunderbar funktioniert mit den Kapiteln. scheint alles im Moment ein wenig zufällig zu sein ob es klappt oder nicht. Mysteriös. Viele Grüße

Am Fr., 21. Jan. 2022 um 11:20 Uhr schrieb audiamus < @.***>:

Visual Studio hab ich nicht auf dem Rechner..

Visual Studio https://visualstudio.microsoft.com/ und Visual Studo Code https://code.visualstudio.com/ sind zwei sehr verschiedene Produkte. Visual Studio ist eine umfangreiche Integrierte Entwicklungsumgebung, während Visual Studio Code im Grundgerüst "nur" ein einfacher Text-Editor ist, mit allerdings sehr flexiblen Erweiterungsmöglichkeiten.

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018371779, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYNM5WHTLSCUNYBZ5ATUXEXNHANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

Wenn Du mit die content_meta.json zu dem Problem-Buch schickst, dann am besten auch die originale aus der Audible Win10-App. Dann kann ich vergleichen.

alurio commented 2 years ago

Mache ichgrundsätzlich gerne. Das einzige Problem, das Verzeichnis indem die Win 10 App die Meta Daten ablegt ist mir nicht geläufig. Kannst du mir da auf die Sprünge helfen. Dann lade ich ein Problembuch mit der Win 10 App nochmal runter und schicke dir die Daten zum Vergleich

Viele Grüße

audiamus @.***> schrieb am Fr., 21. Jan. 2022, 11:47:

Wenn Du mit die content_meta.json zu dem Problem-Buch schickst, dann am besten auch die originale aus der Audible Win10-App. Dann kann ich vergleichen.

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018393280, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYKZ37UNPGOJC4C3QKTUXE2TTANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

Das müsste dieses sein: C:\Users\<USER>\AppData\Local\Packages\AudibleInc.AudibleforWindowsPhone_<XXXXXX>\LocalState\filescache

alurio commented 2 years ago

Thanks! Gefunden !

Im Anhang die Content Metadata aus der Windows 10 App zum Problembuch Todesreigen Sneijder&Nemetz 4 von Andreas Gruber..

Vielleicht ergeben sich da ja Auffälligkeiten, wobei seltsamerweise das M4B das ja immer auch mit erzeugt wird die Korrekte kapitelstruktur hatte. Wirkt für mich so als ginge bei manchen Büchern etwas schief beim Erzeugen der Pseudo AAX und der AAX Audioconverter macht dann beim Umwandeln in MP3 Quatsch. Aber natürlich nur eine Laienhafte These. Ich bin sicher du findest eine Lösung.

Danke für deine Arbeit und den stets schnellen und freundlichen Support.

Viele Grüße

Henning

Ps Also ich lasse den Converter das Buch gerade nochmal rippen, er liest Korrekt 78 kapitel ein, nicht nur wie beim Versuch via Booklibconnect. 7 Also ist bewiesen, irgendwas läuft schief.

Am Fr., 21. Jan. 2022 um 12:17 Uhr schrieb audiamus < @.***>:

Das müsste dieses sein:

C:\Users\\AppData\Local\Packages\AudibleInc.AudibleforWindowsPhone_\LocalState\filescache

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018415698, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYPML3PYDLFSHKUWIG3UXE6FXANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

Ich sehe leider bisher noch keinerlei Anhang, weder von vorhin noch jetzt.

alurio commented 2 years ago

Komisch habe die jeweils an die Mails angekommen, dachte ich

audiamus @.***> schrieb am Fr., 21. Jan. 2022, 12:44:

Ich sehe leider bisher noch keinerlei Anhang, weder von vorhin noch jetzt.

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018433849, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYKRQZEFMXSSGHTDLRDUXFBKXANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

Ich vermute, bei Mail schluckt GitHub die Anhänge. Besser direkt in GitHub eingeben.

alurio commented 2 years ago

Hallo

So jetzt nochmal via Github Webseite. Ich hoffe beides kommt durch.

  1. eine Zip mit den Daten aus Book Lib Connect

Kapiteldaten aus Tests mit Booklibconnect .zip

  1. Exemplarisch zum Vergleich die Metadaten zu einem der Problembücher aus der Win 10 App als Zip

content_metadata_B0748N58H1.zip Grüße

alurio commented 2 years ago

Hab ich gerade gemacht.

Jetzt sollten beide Datensätze vorliegen.

Gruß

Am Fr., 21. Jan. 2022 um 12:56 Uhr schrieb audiamus < @.***>:

Ich vermute, bei Mail schluckt GitHub die Anhänge. Besser direkt in GitHub eingeben.

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018441698, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYJSWNVTOPO3AWRDEGTUXFCYTANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

Ja, sind jetzt vorhanden, danke.

Und der Unterschied ist auch sofort zu sehen. Das Problembuch hat logische Teile. Und nur die werden im Moment gesehen und ausgegeben. Vermutung: In diesem Fall unterschieden sich das JSON, das der Audible-Server zurück gibt, von dem, was die Win10-App ausspuckt. Ich glaube, wir hatten das Thema mit den logischen Teilen schon mal im Hifi-Forum. Die Win10-App zeigte dann eine Kapitel-Hierarchie mit Einrückungen.

Um es zu analysieren, brauche ich zunächst die Original-Antwort vom Server. Die wird aber im Moment noch nicht ausgegeben, auch nicht unter Log-Level 4. Erster Schritt also: ich muss eine Version basteln, die uns die Server-Antwort in eine tmp-Datei schreibt.

alurio commented 2 years ago

Hey Audiamus, Das ist schlüssig. Na dann ist ja zumindest das Problem identifiziert. Dann wünsche ich dir viel Erfolg beim Basteln der neuen Version . Ich erzeuge dann gern Logs zum Analysieren Hoffentlich kriegt man am Ende die Hierarchie mit Einrückungen auch dem Server entlockt. Vorhanden müsste sie ja sein, schließlich stellt der Cloudplayer sie ja dar.

Viele Grüße.

Henning audiamus @.***> schrieb am Fr., 21. Jan. 2022, 13:31:

Ja, sind jetzt vorhanden, danke.

Und der Unterschied ist auch sofort zu sehen. Das Problembuch hat logische Teile. Und nur die werden im Moment gesehen und ausgegeben. Vermutung: In diesem Fall unterschieden sich das JSON, das der Audible-Server zurück gibt, von dem, was die Win10-App ausspuckt. Ich glaube, wir hatten das Thema mit den logischen Teilen schon mal im Hifi-Forum. Die Win10-App zeigte dann eine Kapitel-Hierarchie mit Einrückungen.

Um es zu analysieren, brauche ich zunächst die Original-Antwort vom Server. Die wird aber im Moment noch nicht ausgegeben, auch nicht unter Log-Level 4. Erster Schritt also: ich muss eine Version basteln, die uns die Server-Antwort in eine tmp-Datei schreibt.

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018465540, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYK26LTBT3WMRCZX4SLUXFGZLANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

OK, Neue Version 0.1.2 verfügbar. Dateien stehen im tmp-Verzeichnis: LicenseResponse_<asin>_<date_time>.json Darin sind die Kapitel, wie sie vom Server kommen.

Enthalten darin ist auch der Lizenzschlüssel für das Buch, daher der Name. Der ist aber wiederum selbst verschlüsselt. Entschlüsseln kann das nur die App auf Deinem Rechner, niemand Dritter, auch ich nicht.

audiamus commented 2 years ago

Um damit jetzt etwas anfangen zu können:

Du musst das Problembuch zunächst sowohl aus dem Download- als auch aus dem Export-Verzeichnis löschen, Denn in der Datenbank steht jetzt, das Buch sei heruntergeladen und exportiert. Erst wenn Book Lib Connect es dann aber nicht findet, lässt es sich erneut herunterladen. Dabei wird dann die besagte neue Datei geschrieben..

alurio commented 2 years ago

Okay! Habe upgedatet Download und Exportverzeichnis sind leer. Soll ich das Buch nochmal runterladen und dir dann Rückmelden ob alles funktioniert oder soll ich dir daten aus dem TMp verzeichnis schicken ? Wenn ja wo wird das angelegt ?

Gruß Henning

audiamus commented 2 years ago

Das Temp-Verzeichnis findest Du hier: C:\Users\<User>\AppData\Local\audiamus\BookLibConnect\tmp Ja, Du müsstest das Buch nochmal herunterladen. Verändern wird sich noch nichts, ich muss ja erst mal die Antwort vom Server untersuchen, deshalb die dafür wichtige LicenseRespnse-Datei.

alurio commented 2 years ago

Okay suche ich dir raus zippe die Datei und dann kannst du schauen

Grüße

Henning

alurio commented 2 years ago

Hallo ! So da sind die erwünschten Daten von einem exemplarischen problembuch mit logischer eingerückter Struktur.

LicenseResponse_B0748N58H1-2022_01_21-21_33_16.zip

ich hoffe du kannst was damit anfangen und für kommende Versionen die richtigen Schlüsse ziehen um das aktuelle Problem zu lösen.

Viele Grüße

audiamus commented 2 years ago

Danke Dir, perfekt.

Der Aufbau der hierarchischen Struktur ist damit klar. Mal schauen wie ich damit umgehe.

alurio commented 2 years ago

Wunderbar ! Hoffentlich ist der Aufwand alles so umzubauen, das später beim Umwandeln via AAX Audioconverter die korrekte Struktur ausgespuckt wird nicht zu groß. Grüße

audiamus @.***> schrieb am Fr., 21. Jan. 2022, 22:24:

Danke Dir, perfekt.

Der Aufbau der hierarchischen Struktur ist damit klar. Mal schauen wie ich damit umgehe.

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018874759, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYLNZSGXRJZJIYKCJCDUXHFHDANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

Das ist letztlich eine saubere Baumstruktur. Ich könnte sie von vorne herein flachklopfen oder das eben erst beim Export machen, bzw. später integriert in AAX Audio Converter unmittelbar vor der Kapitelerfassung. Der Reiz ist natürlich, den Baum zu erhalten und so für alle mögliche Nutzung gewappnet zu sein. Dass mehr als zwei Ebenen vorkommen, ist zwar unwahrscheinlich, aber denkbar. Spräche daher für einen allgemeinen Ansatz. Bedeutet eine Erweiterung des relationalen Datenmodells mit einem Standard-Design für solche Strukturen und danach etliche Tests. Wird also ein wenig dauern

alurio commented 2 years ago

Verstehe. Na dann rippe ich erstmal alle Bücher mit Baumstruktur weiter über den klassischen Weg mit der Win 10 App. Geht ja noch 6 Monate.

Ich hoffe aber natürlich drauf , dass die nötigen Umbauarbeiten nicht ewig dauern und ich bald ganz auf die Kombination Booklibconnect +.AAX Audioconverter bzw mittelfristig ja dann AAX Audioconverter 2 umsteigen kann.

Wünsche dir gutes Gelingen bei der Umsetzung.

Viele Grüße, Henning

audiamus @.***> schrieb am Fr., 21. Jan. 2022, 23:41:

Das ist letztlich eine saubere Baumstruktur. Ich könnte sie von vorne herein flachklopfen oder das eben erst beim Export machen, bzw. später integriert in AAX Audio Converter unmittelbar vor der Kapitelerfassung. Der Reiz ist natürlich, den Baum zu erhalten und so für alle mögliche Nutzung gewappnet zu sein. Dass mehr als zwei Ebenen vorkommen, ist zwar unwahrscheinlich, aber denkbar. Spräche daher für einen allgemeinen Ansatz. Bedeutet eine Erweiterung des relationalen Datenmodells mit einem Standard-Design für solche Strukturen und danach etliche Tests. Wird also ein wenig dauern

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1018916637, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYLP2J2GGFG2CAAMX5DUXHOIBANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

audiamus commented 2 years ago

Ich denke, ich hab's. Neue Version 0.2

Das relationale Datenmodell ist erweitert. Dabei hab ich das Standard-Pattern für Baumstrukturen benutzt, einen selbst-reflexiven Datentyp für Chapter, d.h. ein Chapter kann einen Vater haben, der ebenfalls ein Chapter ist. (Relationale Datenmodelle scheinen auf den ersten Blick immer sehr umständlich, weil von "unten" nach "oben" verwiesen wird, ist aber das Grundprinzip.) Dieses Pattern bot sich schon deswegen an, weil es in Entity Framework Core einfach zu modellieren ist, dem Object/Relational-Mapper, den man in C# üblicherweise einsetzt. (Kaum jemand schreibt heutzutage noch SQL-Code selbst, das lässt man Frameworks machen.)

Haken war jetzt allerdings, dass ein Chapter nun theoretisch zwei Väter haben kann, ChapterInfo wie bisher, oder eben neu Chapter selbst. Und damit ist erst mal Cascade Delete deaktiviert, der Mechanismus, mit dem man in relationalen Datenbanken sehr einfach von "oben" nach "unten" löschen kann, also umgekehrt, wie das Modell selbst aufgebaut ist. Lies sich aber schließlich durch explizite Vorgabe lösen, nachdem man erst mal über SQLite Error 19 verzweifelt :unamused:.

Im Ergebnis also wird eine hierarchische Kapitelstruktur nun in die lokale Datenbank komplett übernommen:

chapters

Erst beim Export wird sie flachgeklopft - und damit müssten nun zur Audible Win10-App äquivalente Kapiteldaten herauskommen:

{
    "content_metadata": {
        "chapter_info": {
            "brandIntroDurationMs": 4180,
            "brandOutroDurationMs": 2694,
            "chapters": [
                {
                    "length_ms": 22180,
                    "start_offset_ms": 0,
                    "start_offset_sec": 0,
                    "title": "Vorspann",
                    "chapters": null
                },
                {
                    "length_ms": 808073,
                    "start_offset_ms": 22180,
                    "start_offset_sec": 22,
                    "title": "Prolog",
                    "chapters": null
                },
                {
                    "length_ms": 3000,
                    "start_offset_ms": 830253,
                    "start_offset_sec": 830,
                    "title": "1. Teil – S U I Z I D –",
                    "chapters": null
                },
                {
                    "length_ms": 522909,
                    "start_offset_ms": 833253,
                    "start_offset_sec": 833,
                    "title": "1. Kapitel",
                    "chapters": null
                },
                {
                    "length_ms": 637945,
                    "start_offset_ms": 1356162,
                    "start_offset_sec": 1356,
                    "title": "2. Kapitel",
                    "chapters": null
                },
                {
                    "length_ms": 525886,
                    "start_offset_ms": 1994107,
                    "start_offset_sec": 1994,
                    "title": "3. Kapitel",
                    "chapters": null
                },
                {
                    "length_ms": 1312019,
                    "start_offset_ms": 2519993,
                    "start_offset_sec": 2519,
                    "title": "4. Kapitel",
                    "chapters": null
                },

Insgesamt war der tatsächliche Mehraufwand nachher recht gering, wenn man erst mal herausgefunden hatte, wie eine sinnvolle Lösung auszusehen hatte.

alurio commented 2 years ago

Hey Audiamus, Das ging ja dann viel schneller als ich gedacht hätte. Ich spiele das Heute Abend mit einem der bisherigen Problembücher durch und lasse dich kurz wissen ob bei mir alles wie in der Win 10 App funktioniert hat.

Viele Grüße!

audiamus @.***> schrieb am So., 23. Jan. 2022, 14:34:

Ich denke, ich hab's. Neue Version 0.2

Das relationale Datenmodell ist erweitert. Dabei hab ich das Standard-Pattern für Baumstrukturen benutzt, einen selbst-reflexiven Datentyp für Chapter, d.h. ein Chapter kann einen Vater haben, der ebenfalls ein Chapter ist. (Relationale Datenmodelle scheinen auf den ersten Blick immer sehr umständlich, weil von "unten" nach "oben" verwiesen wird, ist aber das Grundprinzip.) Dieses Pattern bot sich schon deswegen an, weil es in Entity Framework Core einfach zu modellieren ist, dem Object/Relational-Mapper, den man in C# üblicherweise einsetzt. (Kaum jemand schreibt heutzutage noch SQL-Code selbst, das lässt man Frameworks machen.)

Haken war jetzt allerdings, dass ein Chapter nun theoretisch zwei Väter haben kann, ChapterInfo wie bisher, oder eben neu Chapter selbst. Und damit ist erst mal Cascade Delete deaktiviert, der Mechanismus, mit dem man in relationalen Datenbanken sehr einfach von "oben" nach "unten" löschen kann, also umgekehrt, wie das Modell selbst aufgebaut ist. Lies sich aber schließlich durch explizite Vorgabe lösen, nachdem man erst mal über SQLite Error 19 verzweifelt 😒.

Im Ergebnis also wird eine hierarchische Kapitelstruktur nun in die lokale Datenbank komplett übernommen:

[image: chapters] https://user-images.githubusercontent.com/47717419/150680053-2a75102c-e86b-4aea-b9e7-2bdf6102c4ec.png

Erst beim Export wird sie flachgeklopft - und damit müssten nun zur Audible Win10-App äquivalente Kapiteldaten herauskommen:

{

"content_metadata": {

    "chapter_info": {

        "brandIntroDurationMs": 4180,

        "brandOutroDurationMs": 2694,

        "chapters": [

            {

                "length_ms": 22180,

                "start_offset_ms": 0,

                "start_offset_sec": 0,

                "title": "Vorspann",

                "chapters": null

            },

            {

                "length_ms": 808073,

                "start_offset_ms": 22180,

                "start_offset_sec": 22,

                "title": "Prolog",

                "chapters": null

            },

            {

                "length_ms": 3000,

                "start_offset_ms": 830253,

                "start_offset_sec": 830,

                "title": "1. Teil – S U I Z I D –",

                "chapters": null

            },

            {

                "length_ms": 522909,

                "start_offset_ms": 833253,

                "start_offset_sec": 833,

                "title": "1. Kapitel",

                "chapters": null

            },

            {

                "length_ms": 637945,

                "start_offset_ms": 1356162,

                "start_offset_sec": 1356,

                "title": "2. Kapitel",

                "chapters": null

            },

            {

                "length_ms": 525886,

                "start_offset_ms": 1994107,

                "start_offset_sec": 1994,

                "title": "3. Kapitel",

                "chapters": null

            },

            {

                "length_ms": 1312019,

                "start_offset_ms": 2519993,

                "start_offset_sec": 2519,

                "title": "4. Kapitel",

                "chapters": null

            },

Insgesamt war der tatsächliche Mehraufwand nachher recht gering, wenn man erst mal herausgefunden hatte, wie eine sinnvolle Lösung auszusehen hatte.

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1019486804, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYPKH2YGT7OGIVHMCKLUXP7WPANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

alurio commented 2 years ago

Hey Audiamus ,

So ganz funktioniert die Sache leider immer noch nicht, es gibt aber einen Teilerfolg.

Ich habe die neue Version anhand des viel zitierten Problembuches Todesreigen von Andres Gruber getestet. Bei mir wird die Baumstruktur jetzt zwar grundsätzlich erkannt, AAX Audioconverter liest aber nicht alle Kapitel aus, sondern hört zu früh auf. Nach 66 Kapiteln ist mit der Transkodierung in MP3 Sense, Das Buch hat aber leider 78 Kapitel. 12 fehlen einfach.

Die M4B im Downloadordner ist hingegen komplett .

Um dir die Analyse zu ermöglichen schicke ich dir nochmal Metadaten und License key.

Metadata plus License Key Todesreigen 23.1. 22.zip

Wenn ich sonst noch was machen kann um dich zu unterstützen sag bescheid.

Viele Grüße

Henning

alurio commented 2 years ago

Hallo Audiamus,

Ich hab nochmal rum probiert und festgestellt, das bei einem anderen Buch ( Mockingjay von Suzanne Collins) alles korrekt abgebildet wird, obwohl es auch hier einen Baum gibt Nämlich 31 Kapitel unterteilt in drei Teile die zwischendurch auch in kleinen Tracks angesagt werden.

Stellt sich natürlich die Frage, warum das hier klappt, bei Todesreigen aber vor Ende des Buches abgebrochen wird.

Ich sende dir auch hier nochmal Metadaten und License Key zum Vergleich. (https://github.com/audiamus/BookLibConnect/files/7921700/Metadaten.und.license.key.Mockingjay.zip)

Vielleicht findest du ja das Problem und kannst es mit der nächsten Version lösen.

Grüße

Henning

alurio commented 2 years ago

Hallo Audiamus,

Hier noch ein weiteres Beispiel für ein Buch, dessen Umwandlung von AAX Audioconverter basierend auf der pseudo AAX vorzeitig beendet wird. Assad or wie Burn the Country. Eigentlich besteht das Buch aus 29 Kapiteln AAX Audiokonverter hört beim Durchlauf mit der von Audiolib erstellten pseudo AAX nach 19 kapiteln auf. Das Buch hat im Gegensatz zu Todesreigen von Andreas Gruber keine eingerückte Baumstruktur, sondern einfach nur 29 Kapitel mit Namen.

Auch hier nochmal ein Paket Metadaten.

content_metadata Assad or we burn the country .zip

Wenn gewünscht lade ich das Buch auch nochmal mit der Win 10 app herunter und schicke die Metadaten falls du vergleichen musst.

So jetzt lass ich dich auch erstmal in Ruhe. Ich hoffe ich nerve nicht, sondern als Entwickler bist du an Feedback interessiert ob alles funktioniert.

Viele Grüße und einen guten Start in die Woche wünscht

Henning

audiamus commented 2 years ago

Erste Analyse: Die content_meta.json aus der Win10-App und Book Lib Connect sind jetzt mehr oder minder identisch.

Daher ein anderer Verdacht, der sich hier auftut: Die Größe der Audiodatei. Book Lib Connect lädt immer mit der bestmöglichen Audioqualität herunter. Und hier ist nun die Audio-Datei aus Book Lib Connect doppelt so groß wie die aus der Win10-App. Das könnte auf ein Verarbeitungsproblem bei AAX Audio Converter bzw FFmpeg hinweisen. Da hatte sich in der Vergangenheit herausgestellt, dass die 32bit-Version von FFmpeg bei MP3-Konvertierung an Speichergrenzen stößt. Allerdings war die 32bit-Variante deutlich schneller als die 64bit Variante, weswegen AAX Audio Converter vorzugsweise FFmpeg 32bit benutzt. Die Log-Datei von AAX Audio Converter könnte hier Aufschluss bieten, was passiert, mit -Log=4, damit der FFmpeg-Output mit erscheint.

alurio commented 2 years ago

Okay Ich lade Todereigen nochmal via Book Lib Connect herunter und lasse es dann mit Log 4 durch AAX Audioconverter laufen. Die entsprechnde Log datei bekommst du dann.

audiamus commented 2 years ago

Der Verdacht mit FFmpeg bestätigt sich bei mir.

Mit dem Export aus Book Lib Connect:

  1. Lass es einmal mit AAX Audio Converter normal durchlaufen, Logstufe 4.
  2. AAX Audio Converter neu starten, wieder mit Log 4. Buch aber noch nicht laden.
  3. FFmpeg austauschen.
    Aktuelle Version hier (64bit): https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-essentials.zip Auspacken und irgendwohin kopieren. In AAX Audio Converter in der Grundeinstellungen, 1. Reiter, den Pfad zu FFmpeg mit Bearbeiten ändern, auf das ausgepackte FFmpeg.exe zeigen (im dortigen Unterverzeichnis bin).
  4. Jetzt erst Buch laden und erneut durchlaufen lassen.
  5. Wenn das Ergebnis nun vollständig ist, sollte das Problem als behoben gelten. Wenn nicht, mir bitte beide Log-Dateien schicken.
alurio commented 2 years ago

Hallo Audiamus,

  1. Der Austausch der FFMPG Version hat die Lösung gebracht. Das "Referenz Buch" Todesreigen ist nun vollständig. Wäre also vielleicht sinvoll den AAX Audioconverter Download mit der neuen ffmpeg Version auszustatten.

  2. Das einzige was mich jetzt noch leicht irritiert, ist das der AAX Audiokonverter beim Einlesen der Pseudo AAX als Bitrate 127 Kbits, statt der üblichen 128 anzeigt. War heute Nacht bei Mockingjay von Susan Collins auch schon so. Das scheint im Ergebnis aber nichts zu machen, die fertigen MP3s haben laut Mediainfo brav 128 Kbit bei 44100 Hertz in Joint Stereo. Also anscheinend ein folgenloser Anzeigefehler ? Aber der Vollständigkeit halber wollte ich dennoch davon berichten.

Vielen Dank für den super Support und die Entwicklung der beiden sehr nützlichen Tools.

Gruß

Henning

audiamus commented 2 years ago

Wunderbar.

Möglicherweise liegt die eigentliche Ursache aber doch woanders. Es könnte sein, dass die in die heruntergeladene Audiodatei eingebetteten Metadaten beim Dechiffrieren durcheinander geraten. Die neuste FFmpeg-Version kann damit umgehen, ältere nicht.

Es läge dann an AAXClean, der Bibliothek, die ich hier verwende. Könntest Du dazu noch einen Versuch machen?

  1. Lade Dir MediaInfo herunter, wenn Du es nicht eh schon auf Deinem Rechner installiert hast.
  2. Ändere die Download-Einstellung in Book Lib Connect: Keep encrypted files = yes.
  3. Lade das 78-Kapitel-Problembuch mit Book Lib Connect erneut herunter.
  4. Benenne die .aaxc-Datei um: <Problembuch>_<ASIN>.aaxc in <Problembuch>_<ASIN.aaxc.mp4. (Auch .aaxc ist eine .mp4-Datei.)
  5. Öffne <Problembuch>_<ASIN.aaxc.mp4 und <Problembuch>_<ASIN.mp4b jeweils mit MediaInfo in der Baum/Tree-Ansicht. Exportiere für beide die MediaInfo-Anzeige als Textdatei (Datei | Export | Text) und schicke sie mir. Damit kann ich mich dann an den Autor von AAXClean wenden.

Edit:

Das einzige was mich jetzt noch leicht irritiert, ist das der AAX Audiokonverter beim Einlesen der Pseudo AAX als Bitrate 127 Kbits, statt der üblichen 128 anzeigt. ... Das scheint im Ergebnis aber nichts zu machen, die fertigen MP3s haben laut Mediainfo brav 128 Kbit bei 44100 Hertz in Joint Stereo.

Ist harmlos. AAX Audio Converter holt sich die Bitrate aus der Analyse von FFmpeg. Und offensichtlich hast Du MediaInfo schon installiert :smiley:.

alurio commented 2 years ago

Ja in der Tat mediainfo läuft hier schon lange.

Hier die beiden Medianinfo Datein von der AAXC bzw M4B des Problembuch zur Weiterleitung an dne Entwickler von AAXC Clean.

Mediainfo Todesreigen AAXC plus m4b .zip

Viele Grüße

audiamus commented 2 years ago

Sehr schön, danke vielmals. In der m4b-Datei beginnen die Kapitel mit "56. Kapitel" statt mit "Vorspann". Das kann ja offensichtlich nicht stimmen. Ich leite es weiter.

audiamus commented 2 years ago

Vielleicht gibt es auch schon eine Lösung. Sieht nach einem Integer-Überlauf aus, und ein weiterer Entwickler hat vor einigen Tagen einen Pull-Request dazu eingestellt. Ich probiere das mal aus. Die fertige AAXClean-Bibliothek liegt eigentlich auf NuGet, dort wo fast alles an C#-Bibliotheken zu finden ist, aber man kann sie auch selbst bauen, und ich könnte den Patch bei mir einspielen.

Issue #3 ist ja eigentlich für den ursprünglichen Fehler mit hierarchischer Kapitelstruktur erledigt. Deswegen mache ich hier erst mal zu.

audiamus commented 2 years ago

Hat mir ja dann doch keine Ruhe gelassen. In der Tat, der Patch würde funktionieren. Da wir hier aber erst mal einen Bypass gefunden haben, lasse ich es ein paar Tage ruhen. Ggf. nehme ich dann meine Version von AAXClean einschl. Patch, statt der von NuGet.

Der Fehler in AAXClean tritt dann auf, wenn die Audio-Datei sehr viele Frames hat, also entweder bei einem sehr langen Buch oder einem Buch in hoher Audioqualität. Dann gibt es besagten Integer-Überlauf, was dazu führt, dass die letzten Kapitel des Buchs an den Anfang verschoben werden und nach Kapitelzeiten das Buch weit hinten beginnt und im Nirwana endet, an den MediaInfo-Daten schön zu sehen.

Dank noch mal für die Mithilfe. :+1:

alurio commented 2 years ago

Hey Audiamus, nichts zu danken, mache ich gerne und ja auch aus purem Eigennutz damit ich auch weiterhin meine Audible Sammlung in MP3 Archivieren und mit der Hörbuchapp meiner Wahl genießen kann. Danke für die Erstellung und Pflege von Book Libconnect und AAX Audioconverter.

Viele Grüße !

audiamus @.***> schrieb am Mo., 24. Jan. 2022, 18:55:

Hat mir ja dann doch keine Ruhe gelassen. In der Tat, der Patch würde funktionieren. Da wir hier aber erst mal einen Bypass gefunden haben, lasse ich es ein paar Tage ruhen. Ggf. nehme ich dann meine Version von AAXClean einschl. Patch, statt der von NuGet.

Der Fehler in AAXClean tritt dann auf, wenn die Audio-Datei sehr viele Frames hat, also entweder bei einem sehr langen Buch oder einem Buch in hoher Audioqualität. Dann gibt es besagten Integer-Überlauf, was dazu führt, dass die letzten Kapitel des Buchs an den Anfang verschoben werden und nach Kapitelzeiten das Buch weit hinten beginnt und im Nirwana endet, an den MediaInfo-Daten schön zu sehen.

Dank noch mal für die Mithilfe. 👍

— Reply to this email directly, view it on GitHub https://github.com/audiamus/BookLibConnect/issues/3#issuecomment-1020378665, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYL67BEQRK6DREFHUO3UXWHABANCNFSM5MPAKSCQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>