fixed another parsing but related to livestreams

This commit is contained in:
Christian Schabesberger 2016-03-08 02:22:23 +01:00
parent f90a163ede
commit 19418e5dfb
1 changed files with 28 additions and 4 deletions

View File

@ -216,7 +216,14 @@ public class YoutubeSearchEngine extends SearchEngine {
return YoutubeParsingHelper.parseDurationString(
item.select("span[class=\"video-time\"]").first().text());
} catch(Exception e) {
throw new ParsingException("Could not get Duration", e);
if(isLiveStream(item)) {
// -1 for no duration
return -1;
} else {
throw new ParsingException("Could not get Duration", e);
}
}
}
@ -245,9 +252,21 @@ public class YoutubeSearchEngine extends SearchEngine {
@Override
public long getViewCount() throws ParsingException {
String output;
String input = item.select("div[class=\"yt-lockup-meta\"]").first()
.select("li").get(1)
.text();
String input;
try {
input = item.select("div[class=\"yt-lockup-meta\"]").first()
.select("li").get(1)
.text();
} catch (IndexOutOfBoundsException e) {
if(isLiveStream(item)) {
// -1 for no view count
return -1;
} else {
throw new ParsingException(
"Could not parse yt-lockup-meta although available", e);
}
}
output = Parser.matchGroup1("([0-9,\\. ]*)", input)
.replace(" ", "")
.replace(".", "")
@ -283,6 +302,11 @@ public class YoutubeSearchEngine extends SearchEngine {
throw new ParsingException("Could not get thumbnail url", e);
}
}
private boolean isLiveStream(Element item) {
Element bla = item.select("span[class*=\"yt-badge-live\"]").first();
return bla != null;
}
};
}
}