Synchronisation Filmlistestand
-
Hallo,
ich benutze Mediathekview sowohl unter macOS als auch unter Windows. Bisher ist es mir allerdings nicht gelungen Konfigurationsdateien und Filmlisten zwischen beiden Betriebsystemen zu synchronisieren.
Mir ist klar wo sich obige Dateien befinden (~/.mediathek3 + ~/Library/Caches/MediathekView), allerdings reines Kopieren in die entsprechenden Ordner reicht anscheinend nicht, um den aktuellen Stand der Filmlisten zu synchronisieren. Jedenfalls filme.json und history.txt alleine reichen nicht aus.Gibt es eventuell innerhalb der Dateien eine diesbzgl. Einstellung, die nicht portabel ist? Ich denke mal nicht, dass der Unterschied der Zeilenenden ausschlaggebend ist (zumindest sollte er nicht …).
Danke im voraus
Goddert -
@Goddert sagte: jedenfalls filme.json und history.txt alleine reichen nicht aus.
Und warum nimmst du nicht das ganze Verzeichnis “.mediathek3”?
-
Hab ich schon gemacht. War der erste natürliche Ansatz. Funktioniert nicht (beide Richtungen). Deshalb die Frage, ob es irgendwo irgendeine eine nicht portable Einstellung gibt.
Nachdem was ich so im Forum gefunden hatte sollten allerdings die beiden obigen Dateien reichen, um Alter und Liste zu synchronisieren.
Bevor ich mich auf einen Try-and-Error Versuch über die Inhalte aller Files einlasse, dachte ich, frag ich, ob es einer weiß.Es gibt noch so andere Merkwürdigkeiten. Er fragt mich beim Kopieren der Files in der Richtung Windows->macOS jedes mal nach dem Import der 2 neuen Sets, obwohl ich sie schon importiert hatte und auch das Nochmal-Fragen-Flag deaktiviert hatte.
Ich werd mich im Laufe der Woche mal mit einem händischen Vergleich abmühen.
-
@styroll sagte in Synchronisation Filmlistestand:
@Goddert sagte: jedenfalls filme.json und history.txt alleine reichen nicht aus.
Und warum nimmst du nicht das ganze Verzeichnis “.mediathek3”?
Weil das spätestens an unterschiedlichen Pfaden in der mediathek.xml scheitert?
-
@vitusson sagte: Weil das spätestens an unterschiedlichen Pfaden in der mediathek.xml scheitert?
Natürlich sind DL-Pfade und Hilfsprogramm-Pfade unterschiedlich. Genau dieser Aspekt hat aber keinen Einfluss auf die Anzeige des “Filmlistenstands” (um den Ausdruck des OP zu benutzen) oder ob man das ganze Verzeichnis kopiert oder nur einzelne Dateien daraus…
Auf der anderen Seite sehe ich auch grundsätzlich Probleme in der Praktikabilität des Vorhabens (da spielen dann Pfade sehr wohl eine Rolle).
-
@vitusson
Schon richtig. Dies sind aber nur ein paar Hilfspfade. Die sollten den Stand der Liste kaum beeinflussen. Aber richtig ist schon, dass ich es gerne vermeiden würde unnötige Dateien rumzuschieben. -
Wiese sollten da Probleme bestehen? Wenn ich vermeide Dateien mit OS-spezifischen Konfigurationen zu kopieren, sehe ich keine grossen Probleme.
Wichtig ist eben, dass darin nicht auch Informationen zum Stand der Filmliste drin stehen. Dann muss ich diese Dateien mit Skripten auseinanderpflücken. Nicht unmöglich aber lästig. -
@Goddert
Die Frage ist doch, was Du unter “Synchronisieren” verstehst. Die XML-Datei enthält neben OS spezifischen Dingen (z.B. Pfade) auch die Abos und Filter. Die history.txt enthält die bereits zum Laden markierten bzw. herunter geladenen Dateien und dann gibt es noch downloadAbos.txt, die die Abotreffer enthält. Die filme.json wird spätestens beim Aktualisieren ersetzt. Die alte Datei kann also nur dazu diesen, die neuen Filme zu erkennen. Wenn diese Funktion nicht gebraucht wird, dann braucht die filme.json auch nicht kopiert zu werden. -
Korrekt. Ich hab mich nicht klar ausgedrückt.
Aktueller Zustand:
2 Mediathekview-Installationen, eine unter macOS und eine unter Windows. Im Idealfall sind beide Konfigurationssets bezüglich OS-unabghängiger Informationen (Abos, Filter, Sets, etc.) identisch. Ausser dem Filmlistenstand.Definition Filmlistenstand: Auf selbem OS: Filmliste von Zeitpunkt A. Liste mit den Filmen als “gesehene Filme” markiert.
Wenn die Filmlisten auf beiden OS von unterschiedlichen Zeitpunkten sind ist der Filmlistenstand unterschiedlich. Die Listen der als “gesehen” markierten Filme muss nicht notwendigerweise unterschiedlich sein, kann aber. Ist aber ein Attribut des FilmlistenstandsProblemstellung:
Die Installation der Mediathekview unter macOS mit der Installation unter Windows so abzugleichen, dass nach Abgleich der Filmlistenstand auf beiden OS identisch ist.Annahmen:
Da die jar-Files sich wohl nicht ändern, vermute ich mal, dass die Informationen bzgl. des Filmlistenstands entweder innerhalb der Konfigurationsfiles oder als Konfigurationfiles selbst abgelegt sind.Um eben nicht OS-abhängige Informationen in den Konfigurationsfiles zu kompromitieren, wären es natürlich wünschenswert nur die notwendigen Informationen auszutauschen, um das obige Problem zu lösen. (das ist dann eher ein technisches Problem. Skript …) Bleibt die Frage der Informationsidentifizierung.
So wie ich deine Antwort oben verstehe enthält history.txt nur zum Herunterladen markierte oder schon heruntergeladene Dateien. Also keine notwendige Info für den Filmlistenstand.
Filme.json enthält wohl die zuletzt geladene Filmliste. Es sollte also eigentlich ein Datumsabgleich des Modifikations- oder Erstellungsdatums reichen, um die aktuellste Version der Filmliste aus beiden OS zu identifizieren, korrekt?
Fehlt nur noch der Status der “gesehenen Filme”, richtig? Ideal wäre die aktuellste Liste der “gesehenen” Filme. Wie die richtige der beiden Listen der als “gesehen” markierten Filme identifiziert werden kann, hängt davon ab wie die Information abgelegt ist.
-
Ich habe damit noch nicht gearbeitet, aber kann man das nicht mit der portablen Version hinbekommen auf zwei verschieden Systemen zu operieren?
-
@vitusson
Die Portabilitätsfunktion hat nichts mit Betriebssysteminteroperabilität zu tun, sondern sorgt nur dafür, dass du deine Mediathekview mit dir herumtragen kannst und auf einem gleichen Betriebssystem mit deinen zuvor bearbeiteten Daten nutzen kannst.@alle
Also der Lackmustest hat ergeben, dass die “gelesen”-Markierung im File history.txt verzeichnet wird, eins zu eins für jeden als gelesen markierten Film eine Zeile.
Stellt sich natürlich die Frage warum das mit dem hin- und herschieben von filme.json und history.txt nicht so klappt wie ich das gerne hätte…
After all, tomorrow is another day -
Hallo @Goddert,
als gelesen werden alle Filme aus der neu einzulesenden Filmliste markiert, die in der Datei filme.json im Einstellungsverzeichnis bereits vorhanden sind. Alle anderen Filme aus der neu einzulesenden Filmliste werden als ungelesen markiert. Das hat mit history.txt nichts (oder höchstens marginal) zu tun. In history.txt sind nur die bereits heruntergeladenen Videos eingetragen.
Damit die Gelesen-Markierungen stimmen, musst du vor dem Einlesen der neuen Filmliste also darauf achten, dass sich im Einstellungsverzeichnis die jeweils neueste filme.json befindet. Das wäre automatisch der Fall, wenn du (was aus anderen Gründen, wie z.B. einer vollständigen history.txt, nötig ist) immer das gesamte Konfigurationsverzeichnis von dem OS, auf dem du die bisher letzte Filmliste eingelesen hast, auf das OS kopierst, auf dem du die neue Filmliste einlesen willst.
Das klappt natürlich nur, wenn die Umgebungen auf beiden OS ähnlich genug sind, also insbesondere die Pfade auf beiden Seiten gleich sind. Ist das nicht der Fall, müsste man sich mit einem kleinen Script behelfen, dass nicht nur kopiert, sondern die nötige Anpassungen an den (Pfad-)Einstellungen vornimmt.
herbivore
-
Ergänzen sollte man noch, dass die automatische Aktualisierung nicht aktiv sein darf, denn wenn MV gestartet wird und die filme.json älter als drei Stunden ist, wird sie sofort wieder überschrieben.
-
@Goddert sagte in Synchronisation Filmlistestand:
@vitusson
Die Portabilitätsfunktion hat nichts mit Betriebssysteminteroperabilität zu tun, sondern sorgt nur dafür, dass du deine Mediathekview mit dir herumtragen kannst und auf einem gleichen Betriebssystem mit deinen zuvor bearbeiteten Daten nutzen kannst.Ich weiß durchaus was das heißt, aber Danke für den paternalistischen Ton.
Das kannst du aber auch für 3 Betriebssysteme auf den Stick packen. Aber wenn du nichts ausprobieren willst, bleib halt bei deinem Dual-Gewurschtel. EOT von mir.
-
Es war sicherlich nicht meine Absicht in paternlistischem Ton zu schreiben. Wenn das so rübergekommen ist, sorry.
Du wirst sicher mit mir übereinstimmen, dass es wenig Sinn macht 2 portable Versionen auf einen Stick zu packen, wenn ich an dem jeweiligen Ort immer nur ein Betriebssystem zur Verfügung habe. Ort A: Windows und Ort B: macOS und diese beiden haben unterschiedliche Filmlistenstände. Warum soll ich denn die portable macOS Version zu Ort A hintragen, wenn ich sie nicht nutzen kann. Das ist ja der Grund warum ich das Dual-Gewurschtel brauche …
-
Dein erster Absatz: (stimme ich grösstenteils überein)
Was meinst du mit “heruntergeladenenen Videos”? Per Download/Abspiel-Set heruntergeladene Einträge? Nicht die Option “Film als gesehen markieren”, richtig? Dein: “oder höchstens marginal” war hingegen wichtig (siehe unten)Dein zweiter Absatz: (stimme ich grösstenteils überein)
Ok, wobei ich gerne das Kopieren des kompletten Verzeichnis vermeiden würde (wegen der vielen potenziellen Fehler und den zu schreibenden Skripten wegen der OS-abhängigen Konfigurationen)Dein dritter Absatz: (Korrekt)
Mein Ablauf ist recht einfach: Morgens fahr ich zu Ort A (Windows). filme.json ist vom Abend zuvor unter macOS, ein paar Filme sind als gesehen markiert (wegen Übersicht und aus Desinteresse). Kein Download/Abspielen.
Jetzt “synchronisiere” ich die Konfiguration irgendwie (Wunsch…), starte Mediathekview unter Windows und würde gerne dieselbe Filmliste vom Abend zuvor unter macOS sehen mit denselben Filmen als “gesehen” markiert. Irgendwann aktualisiere ich dann die Filmliste, markiere ein paar Filme als “gelesen” und schliesse Mediathekview.
Abends fahr dann ich zu Ort B (macOS) und das Spiel beginnt von vorne nur in die andere Richtung.Korrekt. Ist bei mir immer aus, du kennst mein Internet nicht … tiefstes Land
Wie geschrieben, habe ich einige Tests gemacht.
Vorbedingungen:
- Blacklist ist ausgeschaltet
- Filmliste wird nie automatisch geladen, sondern nur manuell. Vorhandene Filmliste ist nicht notwendigerweise die aktuellste.
- mit “gesehen” markieren ist die Benutzung der Kontextmenüoption “Film als gesehen markieren” gemeint.
- mit “Download”/“Herunterladen” ist der Start eines Sets zum Abspielen, Downloads etc. gemeint.
- Kein Filter ist aktiviert.
Test 1:
- history.txt gelöscht
- film.json vorhanden
- Mediathekview gestartet
- Mediathekview Interface Filmliste: 0 “gesehene” Filme, xxx Filme ungesehen
- Mediathekview Statuszeile: xxx Filme
- Mediathekview beendet
- History.txt vorhanden (0 Bytes)
- filme.json unverändert
Test 2:
- Mediathekview gestartet
- Filmliste heruntergeladen (aktualisiert).
- Mediathekview Interface Filmliste: 0 “gesehene” Filme, yyy Filme ungesehen
- Mediathekview Statuszeile: yyy Filme
- Mediathekview beendet.
- History.txt vorhanden (0 Bytes)
- filme.json verändert
Test 3:
- Mediathekview gestartet
- Einen Film A im Kontextmenu als gesehen markiert
- Mediathekview Interface Filmliste: 1 “gesehenen” Film, yyy-1 Filme ungesehen
- Mediathekview Statuszeile: yyy Filme, 0 Download
- Mediathekview beendet
- history.txt enthält genau eine Zeile mit dem als gesehen markierten Film
- filme.json unverändert
Test 4:
- Mediathekview gestartet
- Einen Film B mittels Downloadbutton per Set heruntergeladen
- Mediathekview Interface Filmliste: 2 “gesehene” Filme, yyy-2 Filme ungesehen
- Mediathekview Statuszeile: yyy Filme
- Mediathekview beendet
- history.txt enthält genau zwei Zeilen. Eine Zeile mit dem als gesehen markierten Film A und eine zweite - Zeile mit dem “heruntergeladenenen” Film.
- filme.json unverändert
Test:
- filme.json gelöscht
- Mediathekview gestartet
- Mediathekview Interface Filmliste: 0 “gesehene” Filme, 0 Filme ungesehen
- Mediathekview Statuszeile: 0 Filme
- Mediathekview beendet
Schlussfolgerungen:
-
Markierung eines Films als “Gesehen” mittels Kontextmenu veranlaßt Mediathekview den Film in history.txt einzutragen.
-
Der “Download”/“Abspielen” eines Films mittels Set veranlaßt Mediathekview den Film als “Gesehen” zu markieren und ihn in history.txt einzutragen (unabhängig davon, ob er dort schon eingetragen war)
-
Kleiner aber feiner Unterschied: Ich kann einen Film als “Gesehen markieren” ohne ihn herunterzuladen/abzuspielen. Das macht die Markierung als “Gesehen” atomarer als den Download/das Abspielen mit Set. Wichtig, weil ich in der Regel Filme nicht herunterlade/abspiele sondern als “gesehen” markiere und dieser Status wichtig für mich ist (ich blende “gesehene” Filme normalerweise mittels Filter aus)
-
Ohne filme.json keine Filme in Mediathekview (ziemlich offensichtlich, schon klar)
Nebensächlichkeiten:
- Jeder “Download” eines Films erzeugt einen neuen Eintrag des Films in history.txt (auch mehrmals denselben Film)
- Das Markieren eines Films als “ungelesen” löscht alle Einträge eines Films in history.txt
Die anderen Konfigurationsdateien erfahren keine substanziellen Änderungen. Es sollten folglich filme.json und history.txt reichen, um den Filmlistenstand zu trasferieren. Der Fehler warum es bisher nicht klappte sitzt höchstwahrscheinlich vor dem Schirm.
Ich denke wir haben jetzt alle Details. Ich probier weiter aus und berichte dann über das Endergebnis.
-
Um Klarheit für alle Beteiligten zu schaffen:
- Es ist nicht möglich, gemeinsame Konfigurationsdateien für MV Windows und MV macOS zu verwenden.
- history.txt speichert Filme, die gedownloadet wurden ODER “als gesehen” markiert wurden.
- downloadAbos.txt speichert Filme, die über ein Abo geladen wurden.
- der gleichzeitige Betrieb von zwei Instanzen MV wird Chaos und Zerstörung über die Konfiguration bringen
Warum ist die gemeinsame abwechselnde Nutzung unter Windows und macOS nicht möglich?
history.txt
unddownloadAbos.txt
sind wie die Dateiendung es schon ausdrückt Textdateien. Diese werden je nach Betriebssystem mit einer unterschiedlichen Kodierung abgespeichert. Unter macOS ist esUTF-8
und unter einem deutschen WindowsISO8859-1
. Um also diese Dateien abwechselnd verwenden zu können müssten sie jedes Mal korrekt konvertiert werden. Ich könnte MV so umprogrammieren dass diese Dateien nur in einem Format geschrieben werden. Das wird aber die vorhandenen Daten zerstören da man das encoding einer vorhandenen Datei nicht ermitteln sondern nur erraten kann.
Nach MV 13.3 steht auf dem Plan, diese Textdateien abzuschaffen und durch eine Datenbank zu ersetzen. Dann hätte sich das Problem mit der Austauschbarkeit erledigt. Dies könnte für 13.4 schon erfolgen.Warum bringt die gleichzeitige Nutzung der Dateien Chaos und Zerstörung über meine Konfigurationsdateien?
Derzeit liest MV die o.g. Dateien beim Start in den Speicher und schreibt Änderungen komplett wieder in die Datei. Beim gleichzeitigem Betrieb würde deshalb ein ping pong Effekt entstehen und immer wieder Daten verloren gehen. Weiterhin kann java Dateien nicht zuverlässig sperren so dass im schlimmsten Falle das Windows MV eine halbe Datei liest und die macOS MV Version gerade anfängt die Datei neu zu schreiben. Das Ergebnis ist dann Mist.
Aus diesem Grund verweigert MV auch den Start einer zweiten Instanz wenn eine vorhandene erkannt wird.MV ist als single user Programm damals konzipiert worden.
HTH
-
@DerReisende77 sagte: downloadAbos.txt speichert Filme, die über ein Abo geladen wurden.
Zumindest zwei Personen in diesem Thread müssten jetzt wieder an Pferde denken…
Es erscheinen in diesem File zusätzlich auch Einträge aus Abos, die man gelöscht hat, aber eben nicht die Einträge, die ein Abo gefunden hat…
(Kann man alles selber ausprobieren und nachvollziehen – “
XMLTXT”-Dateien sind ja ziemlich Klartext, nicht Binäres.) -
@styroll Ok du hast Recht, es wird auch ein Abo was manuell aus den Downloads gelöscht wurde dort mit abgelegt. mea culpa. Ist aber auch logisch sonst würde es beim nächsten Start wieder auftauchen.
Ansonsten muß ich es nicht ausprobieren, ich kann den Code lesen den ich mit- oder selbst geschrieben habe. Und daher weiß ich auch dass es sich bei beiden genannten Dateien auch nicht um XML sondern um Textdateien handelt… -
@styroll sagte in Synchronisation Filmlistestand:
Es erscheinen in diesem File zusätzlich auch Einträge aus Abos, die man gelöscht hat, aber eben nicht die Einträge, die ein Abo gefunden hat…
if (daten.getAboHistoryController().urlPruefen(film.getUrlHistory())) { // ist schon mal geladen worden continue; }
Deine Aussage stimmt also so nicht. Kannst Du gerne auch in ListeDownloads.java, Funktion abosSuchen(…) nachlesen (Zeile 337ff im develop branch). getAboHistoryController() ist für
downloadAbos.txt
zuständig.Ich befürchte jedoch deinen Beitrag beim ersten Mal falsch interpretiert zu haben. In der XML-File (du wirst
mediathek.xml
meinen) stehen die Abo-Definitionen drin als auch die noch nicht abgearbeiteten Downloads drin.
Ist ein Download fertig bzw. gelöscht worden wandert er inhistory.txt
und/oderdownloadAbos.txt
. Dann ist er auch nicht mehr inmediathek.xml
drin.
Und ja, grundsätzlich hast Du Recht mit Deiner Aussage das Downloads, die aus einem Abo-Suchlauf resultieren, nicht inmediathek.xml
auftauchen, da sie nach einer Änderung der Filmliste aktiv neu gesucht werden.Ansonsten sind meine Ausführungen oben korrekt.