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.@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.
-
@DerReisende77 sagte: Ok du hast Recht, es wird auch ein Abo was manuell aus den Downloads gelöscht wurde dort mit abgelegt.
Sorry, ich hab bloss eine völlig korrekte Aussage (zur Funktion der Datei “downloadAbos.txt”) von dir zitiert, diese noch ergänzt und an zwei andere Personen (vgl. mein entsprechender Link) adressiert. Die Ausssage ging also nicht an dich.
Fälschlicherweise habe ich XML statt TXT geschrieben (hab ich korrigiert), was dich verständlicherweise verwirrt hat (es ging also nie um “mediathek.xml”)…