Skip to content

Commit

Permalink
zdf: 720p als normale Url analog ARD
Browse files Browse the repository at this point in the history
  • Loading branch information
alex1702 committed Feb 26, 2025
2 parents 3a916be + c5b86e4 commit 6dbb59c
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 51 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
group = 'de.mediathekview'
archivesBaseName = "MServer"
version = '3.1.246'
version = '3.1.247'

def jarName = 'MServer.jar'
def mainClass = 'mServer.Main'
Expand Down
77 changes: 36 additions & 41 deletions src/main/java/mServer/crawler/sender/zdf/ZdfVideoUrlOptimizer.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,20 +27,20 @@ public class ZdfVideoUrlOptimizer {
private static final String NORMAL_2328_35_14 = "2328k_p35v14.mp4";
private static final String NORMAL_2360_35_15 = "2360k_p35v15.mp4";
private static final String NORMAL_2360_35_17 = "2360k_p35v17.mp4";
private static final String NORMAL_3256 = "3256k_p15v12.mp4";
private static final String NORMAL_3296_15_13 = "3296k_p15v13.mp4";
private static final String NORMAL_3296_15_14 = "3296k_p15v14.mp4";
private static final String NORMAL_3328_15_15 = "3328k_p15v15.mp4";
private static final String NORMAL_3328_15_17 = "3328k_p15v17.mp4";
private static final String NORMAL_3328_12 = "3328k_p36v12.mp4";
private static final String NORMAL_3328_13 = "3328k_p36v13.mp4";
private static final String NORMAL_3328_14 = "3328k_p36v14.mp4";
private static final String NORMAL_3328_35_14 = "3328k_p35v14.mp4";
private static final String NORMAL_3328_36_13 = "3328k_p36v13.mp4";
private static final String NORMAL_3328_36_14 = "3328k_p36v14.mp4";
private static final String NORMAL_3360_36_15 = "3360k_p36v15.mp4";
private static final String NORMAL_3360_36_17 = "3360k_p36v17.mp4";

private static final String HD_3256 = "3256k_p15v12.mp4";
private static final String HD_3296_15_13 = "3296k_p15v13.mp4";
private static final String HD_3296_15_14 = "3296k_p15v14.mp4";
private static final String HD_3328_15_15 = "3328k_p15v15.mp4";
private static final String HD_3328_15_17 = "3328k_p15v17.mp4";
private static final String HD_3328_12 = "3328k_p36v12.mp4";
private static final String HD_3328_13 = "3328k_p36v13.mp4";
private static final String HD_3328_14 = "3328k_p36v14.mp4";
private static final String HD_3328_35_14 = "3328k_p35v14.mp4";
private static final String HD_3328_36_13 = "3328k_p36v13.mp4";
private static final String HD_3328_36_14 = "3328k_p36v14.mp4";
private static final String HD_3360_36_15 = "3360k_p36v15.mp4";
private static final String HD_3360_36_17 = "3360k_p36v17.mp4";
private static final String HD_6628_61_17 = "6628k_p61v17.mp4";
private static final String HD_6660_37_17 = "6660k_p37v17.mp4";

Expand All @@ -49,38 +49,33 @@ public class ZdfVideoUrlOptimizer {
private static final Map<String, String[]> HD_OPTIMIZE = new HashMap<>();

static {
NORMAL_OPTIMIZE.put(NORMAL_1628_13_17, new String[]{NORMAL_2360_35_17});
NORMAL_OPTIMIZE.put(NORMAL_1628_13_17, new String[] {NORMAL_3360_36_17, NORMAL_2360_35_17});
NORMAL_OPTIMIZE.put(NORMAL_2256_14_11, new String[]{NORMAL_2328_35_11});
NORMAL_OPTIMIZE.put(NORMAL_2256_14_12, new String[]{NORMAL_2328_35_12});
NORMAL_OPTIMIZE.put(NORMAL_2256_14_12, new String[] {NORMAL_3328_12, NORMAL_3256, NORMAL_2328_35_12});
NORMAL_OPTIMIZE.put(NORMAL_2296_14_13, new String[]{NORMAL_2328_35_13});
NORMAL_OPTIMIZE.put(NORMAL_2296_14_14, new String[]{NORMAL_2328_35_14});
NORMAL_OPTIMIZE.put(NORMAL_2296_14_14, new String[] {NORMAL_3328_14, NORMAL_3328_35_14, NORMAL_3328_13, NORMAL_3296_15_14, NORMAL_3296_15_13, NORMAL_2328_35_14});
NORMAL_OPTIMIZE.put(NORMAL_1456_13_11, new String[]{NORMAL_2328_35_11, NORMAL_2256_14_11});
NORMAL_OPTIMIZE.put(NORMAL_1456_13_12, new String[]{NORMAL_2328_35_12, NORMAL_2256_14_12});
NORMAL_OPTIMIZE.put(NORMAL_1496_13_13, new String[]{NORMAL_2328_35_13, NORMAL_2296_14_13});
NORMAL_OPTIMIZE.put(NORMAL_1496_13_14, new String[]{NORMAL_2328_35_14, NORMAL_2296_14_14});
NORMAL_OPTIMIZE.put(NORMAL_1628_13_15, new String[]{NORMAL_2360_35_15});

NORMAL_TO_HD.put(NORMAL_2360_35_17, new String[] {HD_6660_37_17, HD_6628_61_17, HD_3360_36_17});
NORMAL_TO_HD.put(NORMAL_1628_13_17, new String[] {HD_6660_37_17, HD_6628_61_17, HD_3360_36_17});
NORMAL_TO_HD.put(NORMAL_1456_13_12, new String[] {HD_3328_12, HD_3256});
NORMAL_TO_HD.put(NORMAL_2256_14_12, new String[] {HD_3328_12, HD_3256});
NORMAL_TO_HD.put(NORMAL_2328_35_12, new String[] {HD_3328_12, HD_3256});
NORMAL_TO_HD.put(NORMAL_1496_13_13, new String[] {HD_3328_13, HD_3296_15_14, HD_3296_15_13});
NORMAL_TO_HD.put(NORMAL_2296_14_13, new String[] {HD_3328_13, HD_3296_15_14, HD_3296_15_13});
NORMAL_TO_HD.put(NORMAL_2328_35_13, new String[] {HD_3328_13, HD_3296_15_14, HD_3296_15_13});
NORMAL_TO_HD.put(NORMAL_1496_13_14, new String[] {HD_3328_14, HD_3328_35_14});
NORMAL_TO_HD.put(NORMAL_2296_14_14, new String[] {HD_3328_14, HD_3328_35_14});
NORMAL_TO_HD.put(NORMAL_2328_35_14, new String[] {HD_3328_14, HD_3328_35_14});
NORMAL_TO_HD.put(NORMAL_1628_13_15, new String[] {HD_3360_36_15});
NORMAL_TO_HD.put(NORMAL_2360_35_15, new String[] {HD_3360_36_15});

HD_OPTIMIZE.put(HD_3360_36_17, new String[] {HD_6660_37_17, HD_6628_61_17});
NORMAL_OPTIMIZE.put(NORMAL_1456_13_12, new String[] {NORMAL_3328_12, NORMAL_3256, NORMAL_2328_35_12, NORMAL_2256_14_12});
NORMAL_OPTIMIZE.put(NORMAL_1496_13_13, new String[] {NORMAL_3328_13, NORMAL_3296_15_14, NORMAL_3296_15_13, NORMAL_2328_35_13, NORMAL_2296_14_13});
NORMAL_OPTIMIZE.put(NORMAL_1496_13_14, new String[] {NORMAL_3328_14, NORMAL_3328_35_14, NORMAL_2328_35_14, NORMAL_2296_14_14});
NORMAL_OPTIMIZE.put(NORMAL_1628_13_15, new String[] {NORMAL_3360_36_15, NORMAL_2360_35_15});
NORMAL_OPTIMIZE.put(NORMAL_3328_15_15, new String[] {NORMAL_3360_36_15});
NORMAL_OPTIMIZE.put(NORMAL_3256, new String[] {NORMAL_3328_12});
NORMAL_OPTIMIZE.put(NORMAL_3296_15_14, new String[] {NORMAL_3328_36_14});
NORMAL_OPTIMIZE.put(NORMAL_3296_15_13, new String[] {NORMAL_3328_36_13});
NORMAL_OPTIMIZE.put(NORMAL_3328_15_17, new String[] {NORMAL_3360_36_17});
NORMAL_OPTIMIZE.put(NORMAL_2328_35_12, new String[] {NORMAL_3328_12, NORMAL_3256});
NORMAL_OPTIMIZE.put(NORMAL_2328_35_13, new String[] {NORMAL_3328_13, NORMAL_3296_15_14, NORMAL_3296_15_13});
NORMAL_OPTIMIZE.put(NORMAL_2328_35_14, new String[] {NORMAL_3328_14, NORMAL_3328_35_14});
NORMAL_OPTIMIZE.put(NORMAL_2360_35_15, new String[] {NORMAL_3360_36_15});
NORMAL_OPTIMIZE.put(NORMAL_2360_35_17, new String[] {NORMAL_3360_36_17});

NORMAL_TO_HD.put(NORMAL_2360_35_17, new String[] {HD_6660_37_17, HD_6628_61_17});
NORMAL_TO_HD.put(NORMAL_1628_13_17, new String[] {HD_6660_37_17, HD_6628_61_17});
NORMAL_TO_HD.put(NORMAL_3360_36_17, new String[] {HD_6660_37_17, HD_6628_61_17});
NORMAL_TO_HD.put(NORMAL_3328_15_17, new String[] {HD_6660_37_17, HD_6628_61_17});

HD_OPTIMIZE.put(HD_6628_61_17, new String[] {HD_6660_37_17});
HD_OPTIMIZE.put(HD_3328_15_17, new String[] {HD_6660_37_17, HD_6628_61_17, HD_3360_36_17});
HD_OPTIMIZE.put(HD_3328_15_15, new String[] {HD_3360_36_15});
HD_OPTIMIZE.put(HD_3256, new String[] {HD_3328_12});
HD_OPTIMIZE.put(HD_3296_15_14, new String[] {HD_3328_36_14});
HD_OPTIMIZE.put(HD_3296_15_13, new String[] {HD_3328_36_13});
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,10 @@ private void parseDuration(final DownloadDto dto, final JsonObject rootNode) {
}
}

private void parseFormitaet(final DownloadDto dto, final JsonElement formitaet) {
private void parseFormitaet(final List<DownloadInfo> downloads, final JsonElement formitaet) {
// only mp4-videos are relevant
final JsonElement mimeType = formitaet.getAsJsonObject().get(JSON_ELEMENT_MIMETYPE);
if (mimeType != null && mimeType.getAsString().equalsIgnoreCase(RELEVANT_MIME_TYPE)) {
List<DownloadInfo> downloads = new ArrayList<>();

// array Resolution
final JsonArray qualityList
= formitaet.getAsJsonObject().getAsJsonArray(JSON_ELEMENT_QUALITIES);
Expand All @@ -113,8 +111,6 @@ private void parseFormitaet(final DownloadDto dto, final JsonElement formitaet)
}
}
}
downloads.sort(Comparator.comparingInt(DownloadInfo::getVerticalResolution));
downloads.forEach(info -> dto.addUrl(info.getLanguage(), info.getQuality(), info.getUri()));
}
}

Expand Down Expand Up @@ -154,14 +150,14 @@ private void parseGeoLocation(final DownloadDto dto, final JsonObject rootNode)
}
}

private void parsePriority(final DownloadDto dto, final JsonElement priority) {
private void parsePriority(final List<DownloadInfo> downloads, final JsonElement priority) {
if (priority != null) {

// array formitaeten
final JsonArray formitaetList
= priority.getAsJsonObject().getAsJsonArray(JSON_ELEMENT_FORMITAET);
for (final JsonElement formitaet : formitaetList) {
parseFormitaet(dto, formitaet);
parseFormitaet(downloads, formitaet);
}
}
}
Expand Down Expand Up @@ -198,9 +194,9 @@ private Qualities parseVideoQuality(final JsonObject quality) {
qualityValue = Qualities.SMALL;
break;
case ZDF_QUALITY_VERYHIGH:
case ZDF_QUALITY_HD:
qualityValue = Qualities.NORMAL;
break;
case ZDF_QUALITY_HD:
case ZDF_QUALITY_FHD:
qualityValue = Qualities.HD;
break;
Expand All @@ -216,12 +212,17 @@ private Qualities parseVideoQuality(final JsonObject quality) {
}

private void parseVideoUrls(final DownloadDto dto, final JsonObject rootNode) {
List<DownloadInfo> downloads = new ArrayList<>();

// array priorityList
final JsonArray priorityList = rootNode.getAsJsonArray(JSON_ELEMENT_PRIORITYLIST);
for (final JsonElement priority : priorityList) {

parsePriority(dto, priority);
parsePriority(downloads, priority);
}

downloads.sort(Comparator.comparingInt(DownloadInfo::getVerticalResolution));
downloads.forEach(info -> dto.addUrl(info.getLanguage(), info.getQuality(), info.getUri()));
}

private class DownloadInfo {
Expand Down

0 comments on commit 6dbb59c

Please sign in to comment.