Skip to content

Commit

Permalink
ARD: "Erraten" der HD-Url erweitert
Browse files Browse the repository at this point in the history
closed #297
  • Loading branch information
alex1702 committed Nov 30, 2017
2 parents ca41e95 + 6786926 commit dd27ca0
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 8 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ apply from: "${project.rootDir}/gradle/eclipse.gradle"
sourceCompatibility = 1.8
targetCompatibility = 1.8
group = 'de.mediathekview'
version = '3.1.37'
version = '3.1.38'

def jarName = 'MServer.jar'
def mainClass = 'mServer.Main'
Expand Down
45 changes: 38 additions & 7 deletions src/main/java/mServer/crawler/sender/MediathekArd.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
import de.mediathekview.mlib.daten.DatenFilm;
import de.mediathekview.mlib.tool.Log;
import de.mediathekview.mlib.tool.MSStringBuilder;
import java.util.HashSet;
import java.util.Set;
import mServer.crawler.CrawlerTool;
import mServer.crawler.FilmeSuchen;
import mServer.crawler.GetUrl;
Expand All @@ -55,8 +57,8 @@ public class MediathekArd extends MediathekReader {
private static final String M3U8_PATTERN_END = "\"";
private static final String TEXT_START_HTTP = "http";
private static final String URL_GET_PARAMETER = "\\?.*";
private static final String SUFFIX_URL_NORMAL = "/960-1.mp4";
private static final String SUFFIX_URL_HD = "/1280-1.mp4";
private static final String URL_PART_NORMAL = "960";
private static final String URL_PART_HD = "1280";

private MSStringBuilder seiteFeed = new MSStringBuilder(Const.STRING_BUFFER_START_BUFFER);

Expand Down Expand Up @@ -463,17 +465,46 @@ private void filmSuchen2(String urlFilm_, String thema, String titel, long dauer
private String determineHdFromNormal(String urlNormal) {
String urlHd = "";

// für URLs, die auf /960-1.mp4 enden, prüfen ob eine URL auf /1280-1.mp4 existiert
if (urlNormal.endsWith(SUFFIX_URL_NORMAL)) {
String urlTemp = urlNormal.replaceAll(SUFFIX_URL_NORMAL, SUFFIX_URL_HD);
if (urlExists(urlTemp)) {
urlHd = urlTemp;
// Dateiname extrahieren
int indexLastSlash = urlNormal.lastIndexOf('/');
if (indexLastSlash > 0) {
String fileName = urlNormal.substring(indexLastSlash + 1);
String path = urlNormal.substring(0, indexLastSlash + 1);

// für URLs, die mit 960 beginnen, prüfen ob eine mit 1280 auch existiert
if (fileName.startsWith(URL_PART_NORMAL)) {
Set<String> urls = buildPossibleHdUrls(path, fileName);

for (String url : urls) {
if (urlExists(url)) {
urlHd = url;
break;
}
}
}
}

return urlHd;
}

// Aus der bisherigen URL mögliche HD-URLs bauen
// Beispiele für normale URLs: 960-1.mp4, 960-1_1.mp4, 960-3.mp4
// Beispiele für HD-URLs: 1280-1.mp4, 1280-1_1.mp4, 1280-3.mp4
// Leider existiert aber keine 1:1-Abbildung von normaler URL auf HD-URL
// Deshalb werden mehrere mögliche Urls erstellt und dann durchprobiert
private Set<String> buildPossibleHdUrls(String path, String fileName) {
// erste Url: 960 durch 1280 ersetzen
String hdFileName1 = fileName.replace(URL_PART_NORMAL, URL_PART_HD);
// zweite Url: wenn URL _1.mp4 lautet => _1 entfernen, sonst _1 hinzufügen
String hdFileName2 = hdFileName1.endsWith("_1.mp4") ? hdFileName1.replace("_1", "") : hdFileName1.replace(".mp4", "_1.mp4");

Set<String> urls = new HashSet<>();
urls.add(path + hdFileName1);
urls.add(path + hdFileName2);

return urls;
}

private String getUrl(MSStringBuilder seite) {
String ret = "";
seite.extractList("\"_quality\":2,\"_stream\":[", "]", liste);
Expand Down

0 comments on commit dd27ca0

Please sign in to comment.