Skip to content

Commit

Permalink
- modernize file extension removal
Browse files Browse the repository at this point in the history
- fix static analyzer warnings
  • Loading branch information
derreisende77 committed Feb 4, 2025
1 parent 8664329 commit e07b1f6
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 25 deletions.
2 changes: 1 addition & 1 deletion src/main/java/mediathek/daten/DatenDownload.java
Original file line number Diff line number Diff line change
Expand Up @@ -939,7 +939,7 @@ public Datum getDatumForObject() {
}

public String getFileNameWithoutSuffix() {
return GuiFunktionen.getFileNameWithoutSuffix(arr[DatenDownload.DOWNLOAD_ZIEL_PFAD_DATEINAME]);
return GuiFunktionen.getFileNameWithoutExtension(arr[DatenDownload.DOWNLOAD_ZIEL_PFAD_DATEINAME]);
}

@Override
Expand Down
27 changes: 12 additions & 15 deletions src/main/java/mediathek/tool/GuiFunktionen.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.awt.datatransfer.StringSelection;
import java.awt.event.InputEvent;
import java.io.File;
import java.util.Optional;
import java.util.concurrent.TimeUnit;

public class GuiFunktionen {
Expand Down Expand Up @@ -264,21 +265,17 @@ public static String getSuffixFromUrl(String pfad) {
return ret;
}

public static String getFileNameWithoutSuffix(String pfad) {
// Suffix einer URL extrahieren
// "http://ios-ondemand.swr.de/i/swr-fernsehen/bw-extra/20130202/601676.,m,s,l,.mp4.csmil/index_2_av.m3u8?e=b471643725c47acd"
// FILENAME.SUFF
String ret = "";
if (pfad != null) {
if (!pfad.isEmpty() && pfad.contains(".")) {
ret = pfad.substring(0, pfad.lastIndexOf('.'));
}
}
if (ret.isEmpty()) {
ret = pfad;
logger.error("getFileNameWithoutSuffix({})", pfad);
}
return ret;
/**
* Strip the extension from a filename, e.g. file1.mp4 becomes file1
* @param fileName the filename
* @return the stripped filename
*/
public static String getFileNameWithoutExtension(@NotNull String fileName) {
return Optional.of(fileName.lastIndexOf('.'))
.filter(i-> i >= 0)
.filter(i-> i > fileName.lastIndexOf(File.separator))
.map(i-> fileName.substring(0, i))
.orElse(fileName);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/mediathek/tool/MVSubtitle.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public void writeSubtitle(@NotNull String url, @NotNull File file) throws IOExce
if (url.isEmpty())
return;

var plainFileName = GuiFunktionen.getFileNameWithoutSuffix(file.getAbsolutePath());
var plainFileName = GuiFunktionen.getFileNameWithoutExtension(file.getAbsolutePath());

final Request request = new Request.Builder().url(url).get().build();
try (Response response = MVHttpClient.getInstance().getHttpClient().newCall(request).execute();
Expand Down Expand Up @@ -123,7 +123,7 @@ public void writeSubtitle(@NotNull DatenDownload datenDownload) {
* @param ttmlPath The path to the origin TTML subtitle file.
*/
private void convertSubtitle(@NotNull Path ttmlPath) {
var subtitleFileStr = GuiFunktionen.getFileNameWithoutSuffix(ttmlPath.toAbsolutePath().toString());
var subtitleFileStr = GuiFunktionen.getFileNameWithoutExtension(ttmlPath.toAbsolutePath().toString());

try (TimedTextMarkupLanguageParser parser = new TimedTextMarkupLanguageParser()) {
if (!subtitleFileStr.endsWith('.' + SUFFIX_SRT) && !subtitleFileStr.endsWith("." + SUFFIX_VTT)) {
Expand Down
25 changes: 18 additions & 7 deletions src/test/java/mediathek/tool/GuiFunktionenTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,33 @@ class GuiFunktionenTest {
@Test
void getFilmListUpdateType() {
var res = GuiFunktionen.getFilmListUpdateType();
Assertions.assertSame(res, FilmListUpdateType.AUTOMATIC);
Assertions.assertSame(FilmListUpdateType.AUTOMATIC, res);
}

@Test
void getSuffixFromUrl() {
var testStr = "http://ios-ondemand.swr.de/i/swr-fernsehen/bw-extra/20130202/601676.,m,s,l,.mp4.csmil/index_2_av.m3u8?e=b471643725c47acd";
final var testStr = "https://ios-ondemand.swr.de/i/swr-fernsehen/bw-extra/20130202/601676.,m,s,l,.mp4.csmil/index_2_av.m3u8?e=b471643725c47acd";
final var expected = "m3u8";
var res = GuiFunktionen.getSuffixFromUrl(testStr);

Assertions.assertEquals(res, "m3u8");
Assertions.assertEquals(expected, res);
}

@Test
void getFileNameWithoutSuffix() {
var testStr = "http://ios-ondemand.swr.de/i/swr-fernsehen/bw-extra/20130202/601676.,m,s,l,.mp4.csmil/index_2_av.m3u8?e=b471643725c47acd";
var res = GuiFunktionen.getFileNameWithoutSuffix(testStr);
void getFileNameWithoutExtension_web() {
final var testStr = "https://ios-ondemand.swr.de/i/swr-fernsehen/bw-extra/20130202/601676.,m,s,l,.mp4.csmil/index_2_av.m3u8?e=b471643725c47acd";
final var expected = "https://ios-ondemand.swr.de/i/swr-fernsehen/bw-extra/20130202/601676.,m,s,l,.mp4.csmil/index_2_av";
var res = GuiFunktionen.getFileNameWithoutExtension(testStr);

Assertions.assertEquals(res, "http://ios-ondemand.swr.de/i/swr-fernsehen/bw-extra/20130202/601676.,m,s,l,.mp4.csmil/index_2_av");
Assertions.assertEquals(expected, res);
}

@Test
void getFileNameWithoutExtension_file() {
final var testStr = "/Users/derreisende/file1.mp4";
final var expected = "/Users/derreisende/file1";
var res = GuiFunktionen.getFileNameWithoutExtension(testStr);

Assertions.assertEquals(expected, res);
}
}

0 comments on commit e07b1f6

Please sign in to comment.