Skip to content

Commit 5e5ca10

Browse files
committed
- create manual info file
1 parent cd41bc9 commit 5e5ca10

File tree

3 files changed

+48
-4
lines changed

3 files changed

+48
-4
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- **BUGFIX:** Das Umbenennen von PSets in den Einstellungen funktioniert nun richtig.
1010
- **BUGFIX(Linux):** Der Einstellungen-Dialog öffnet sich nicht mehr vom Hauptfenster verdeckt.
1111
- **BUGFIX:** Der "Filmliste laden"-Dialog zeigt nun Scrollbars bei zu kleiner Dialoggröße an.
12+
- **BUGFIX(Linux):** Inkorrekte Verarbeitung der Parent-Beziehung bei Auswahldialogen wurde behoben.
1213
- **FEATURE(Linux/Windows):** Das Aussehen von FlatLaf kann in `.mediathek3/flatlaf` angepasst werden.
1314
- **FEATURE:** Selektierte Einträge in `Suchhistorie bearbeiten`-Dialog können nun mittels Entfernen-Taste gelöscht werden.
1415
- **FEATURE:** Das Blacklist Filter-Icon in der Toolbar kann mittels *Einstellungen/Allgemein* mit einem aussagefähigen Zusatztext dargestellt werden.
@@ -21,6 +22,7 @@
2122
- **FEATURE:** Im Tab Filme kann nun die Filmbeschreibung per Kontextmenü in die Zwischenablage kopiert werden.
2223
- **FEATURE:** Im Tab Beschreibung und im FilmInfo-Dialog können jeweils selektierte Texte der Beschreibung per Kontextmenü in die Zwischenablage kopiert werden.
2324
- **FEATURE(Linux):** Für exotische Window Manager können nun die FlatLaf-Dekorationen mittels `-dfd` oder `--disable-flatlaf-decorations` Parametern deaktiviert werden.
25+
- **FEATURE:** Info-Datei kann nun per Kontextmenü for jeden Eintrag manuell erzeugt werden.
2426

2527
# **14.1.0**
2628
- JDK 21 wird nun mitgeliefert. Behebt primär Darstellungsfehler von Java Apps unter Windows.

src/main/java/mediathek/gui/tabs/tab_film/GuiFilme.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
import java.awt.print.PrinterException;
6767
import java.beans.PropertyChangeListener;
6868
import java.beans.PropertyChangeSupport;
69+
import java.io.IOException;
6970
import java.lang.reflect.InvocationTargetException;
7071
import java.net.URISyntaxException;
7172
import java.net.URLEncoder;
@@ -1410,6 +1411,25 @@ private void showMenu(MouseEvent evt) {
14101411
jPopupMenu.add(mediathekGui.showFilmInformationAction);
14111412
// History
14121413
res.ifPresent(film -> setupHistoryContextActions(jPopupMenu, film));
1414+
1415+
res.ifPresent(film -> {
1416+
jPopupMenu.addSeparator();
1417+
var miCreateInfoFile = new JMenuItem("Infodatei erzeugen...");
1418+
miCreateInfoFile.addActionListener(l -> {
1419+
System.out.println("INFO FILE");
1420+
var file = FileDialogs.chooseSaveFileLocation(MediathekGui.ui(), "Infodatei speichern", "/Users/christianfranzke/Desktop/infofile.txt");
1421+
if (file != null) {
1422+
MVInfoFile infoFile = new MVInfoFile();
1423+
try {
1424+
infoFile.writeManualInfoFile(film, file.toPath());
1425+
} catch (IOException e) {
1426+
throw new RuntimeException(e);
1427+
}
1428+
}
1429+
});
1430+
jPopupMenu.add(miCreateInfoFile);
1431+
});
1432+
14131433
// anzeigen
14141434
jPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY());
14151435
}

src/main/java/mediathek/tool/MVInfoFile.kt

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import java.nio.file.Paths
1313
import java.util.*
1414

1515
open class MVInfoFile {
16-
private fun formatFilmAsString(film: DatenFilm?, url: HttpUrl?): String {
16+
private fun formatFilmAsString(film: DatenFilm?, url: HttpUrl?, extended: Boolean = false): String {
1717
if (null == film || url == null)
1818
return ""
1919

@@ -39,9 +39,16 @@ open class MVInfoFile {
3939
sb.append(film.websiteUrl)
4040
sb.append(System.lineSeparator())
4141
sb.append(System.lineSeparator())
42-
sb.append(FILM_URL)
42+
sb.append("URL")
4343
sb.append(System.lineSeparator())
44-
sb.append(url)
44+
if (!extended)
45+
sb.append(url)
46+
else {
47+
if (film.isHighQuality)
48+
sb.append("HQ: ${film.decompressUrl(film.highQualityUrl)}\n")
49+
sb.append("Normal: ${film.urlNormalQuality}\n")
50+
sb.append("LQ: ${film.decompressUrl(film.lowQualityUrl)}\n")
51+
}
4552
sb.append(System.lineSeparator())
4653
sb.append(System.lineSeparator())
4754
sb.append(splitStringIntoMaxFixedLengthLines(film.description, MAX_LINE_LENGTH))
@@ -79,6 +86,22 @@ open class MVInfoFile {
7986
logger.info("Infodatei geschrieben")
8087
}
8188

89+
@Throws(IOException::class)
90+
fun writeManualInfoFile(film: DatenFilm, path: Path) {
91+
path.toFile().parentFile.mkdirs()
92+
93+
Files.newOutputStream(path).use { os ->
94+
DataOutputStream(os).use { dos ->
95+
OutputStreamWriter(dos).use { osw ->
96+
BufferedWriter(osw).use { br ->
97+
br.write(formatFilmAsString(film, film.urlNormalQuality.toHttpUrl(), extended = true))
98+
br.flush()
99+
}
100+
}
101+
}
102+
}
103+
}
104+
82105
@Throws(IOException::class)
83106
fun writeInfoFile(datenDownload: DatenDownload) {
84107
File(datenDownload.arr[DatenDownload.DOWNLOAD_ZIEL_PFAD]).mkdirs()
@@ -99,7 +122,6 @@ open class MVInfoFile {
99122
private const val FILM_DATUM = "Datum"
100123
private const val FILM_ZEIT = "Zeit"
101124
private const val FILM_DAUER = "Dauer"
102-
private const val FILM_URL = "URL"
103125
private const val MAX_HEADER_LENGTH = 12
104126
private const val MAX_LINE_LENGTH = 62
105127
}

0 commit comments

Comments
 (0)