From 96285e08151ef5a48afdd7ba28b7857924ddd6ca Mon Sep 17 00:00:00 2001 From: TobiGr Date: Tue, 25 Feb 2020 21:50:11 +0100 Subject: [PATCH] Fix getUploadDate() for premiered videos with a given date --- .../extractors/YoutubeStreamExtractor.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java index 91c088fad..2408b5c02 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java @@ -134,15 +134,23 @@ public class YoutubeStreamExtractor extends StreamExtractor { } try { - //return playerResponse.getObject("microformat").getObject("playerMicroformatRenderer").getString("publishDate"); + // return playerResponse.getObject("microformat").getObject("playerMicroformatRenderer").getString("publishDate"); } catch (Exception ignored) {} try { if (getVideoPrimaryInfoRenderer().getObject("dateText").getString("simpleText").startsWith("Premiered")) { - String timeAgo = getVideoPrimaryInfoRenderer().getObject("dateText").getString("simpleText").substring(10); - TimeAgoParser timeAgoParser = TimeAgoPatternsManager.getTimeAgoParserFor(Localization.fromLocalizationCode("en")); - Calendar parsedTimeAgo = timeAgoParser.parse(timeAgo).date(); - return new SimpleDateFormat("yyyy-MM-dd").format(parsedTimeAgo.getTime()); + String time = getVideoPrimaryInfoRenderer().getObject("dateText").getString("simpleText").substring(10); + + try { // Premiered 20 hours ago + TimeAgoParser timeAgoParser = TimeAgoPatternsManager.getTimeAgoParserFor(Localization.fromLocalizationCode("en")); + Calendar parsedTime = timeAgoParser.parse(time).date(); + return new SimpleDateFormat("yyyy-MM-dd").format(parsedTime.getTime()); + } catch (Exception ignored) {} + + try { // Premiered Premiered Feb 21, 2020 + Date d = new SimpleDateFormat("MMM dd, YYYY", Locale.ENGLISH).parse(time); + return new SimpleDateFormat("yyyy-MM-dd").format(d.getTime()); + } catch (Exception ignored) {} } } catch (Exception ignored) {}