From b713a7af8cc5a69b5479055c407546f9a3f16b97 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Wed, 10 Feb 2021 11:38:30 +0530 Subject: [PATCH 01/15] Update gradle wrapper. --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4b7e1f3d3..2a563242c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From e844d2aed34e2b305e2d6412d9c885f81caa9374 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Wed, 10 Feb 2021 12:09:35 +0530 Subject: [PATCH 02/15] Add dash fields to the ItagItem. --- .../extractor/services/youtube/ItagItem.java | 11 +++++++++ .../extractors/YoutubeStreamExtractor.java | 23 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java index 03d40ce5f..c202ade18 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java @@ -155,4 +155,15 @@ public class ItagItem { public String resolutionString; public int fps = -1; + // Fields for Dash + public int bitrate; + public int width; + public int height; + public int initStart; + public int initEnd; + public int indexStart; + public int indexEnd; + public int height; + public String codec; + } 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 a0c9361b4..d47105aca 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 @@ -949,6 +949,29 @@ public class YoutubeStreamExtractor extends StreamExtractor { + deobfuscateSignature(cipher.get("s")); } + int bitrate = formatData.getInt("bitrate"); + int averageBitrate = formatData.getInt("averageBitrate"); + int width = formatData.getInt("width"); + int height = formatData.getInt("height"); + int initStart = formatData.getInt("initRange.start"); + int initEnd = formatData.getInt("initRange.end"); + int indexStart = formatData.getInt("indexRange.start"); + int indexEnd = formatData.getInt("indexRange.end"); + int fps = formatData.getInt("fps"); + String mimeType = formatData.getString("mimeType", EMPTY_STRING); + String codec = mimeType.contains("codecs") ? mimeType.split("\"")[1] : EMPTY_STRING; + + itagItem.bitrate = bitrate; + itagItem.avgBitrate =averageBitrate; + itagItem.width = width; + itagItem.height = height; + itagItem.initStart = initStart; + itagItem.initEnd = initEnd; + itagItem.indexStart = indexStart; + itagItem.indexEnd = indexEnd; + itagItem.fps = fps; + itagItem.codec = codec; + urlAndItags.put(streamUrl, itagItem); } } catch (UnsupportedEncodingException ignored) { From 525e345ed8734714c2ca9855617f153c8553bf0d Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Wed, 10 Feb 2021 12:18:05 +0530 Subject: [PATCH 03/15] remove duplicate field. --- .../org/schabi/newpipe/extractor/services/youtube/ItagItem.java | 1 - 1 file changed, 1 deletion(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java index c202ade18..749429e4d 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java @@ -163,7 +163,6 @@ public class ItagItem { public int initEnd; public int indexStart; public int indexEnd; - public int height; public String codec; } From 11eb4932f4eb52bd2e88c5e8d63c76f54ecd912a Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 11 Feb 2021 14:40:38 +0530 Subject: [PATCH 04/15] Add data to respective classes. --- .../extractors/YoutubeStreamExtractor.java | 16 +++--- .../newpipe/extractor/stream/AudioStream.java | 49 +++++++++++++++++ .../newpipe/extractor/stream/VideoStream.java | 55 +++++++++++++++++++ 3 files changed, 112 insertions(+), 8 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 d47105aca..964fd7cfd 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 @@ -502,7 +502,7 @@ public class YoutubeStreamExtractor extends StreamExtractor { for (Map.Entry entry : getItags(ADAPTIVE_FORMATS, ItagItem.ItagType.AUDIO).entrySet()) { ItagItem itag = entry.getValue(); - AudioStream audioStream = new AudioStream(entry.getKey(), itag.getMediaFormat(), itag.avgBitrate); + AudioStream audioStream = new AudioStream(entry.getKey(), itag.getMediaFormat(), itag.avgBitrate, itag.bitrate, itag.initStart, itag.initEnd, itag.indexStart, itag.indexEnd, itag.codec); if (!Stream.containSimilarStream(audioStream, audioStreams)) { audioStreams.add(audioStream); } @@ -542,7 +542,7 @@ public class YoutubeStreamExtractor extends StreamExtractor { for (Map.Entry entry : getItags(ADAPTIVE_FORMATS, ItagItem.ItagType.VIDEO_ONLY).entrySet()) { ItagItem itag = entry.getValue(); - VideoStream videoStream = new VideoStream(entry.getKey(), itag.getMediaFormat(), itag.resolutionString, true); + VideoStream videoStream = new VideoStream(entry.getKey(), itag.getMediaFormat(), itag.resolutionString, true, itag.bitrate, itag.initStart, itag.initEnd, itag.indexStart, itag.indexEnd, itag.codec, itag.width, itag.height); if (!Stream.containSimilarStream(videoStream, videoOnlyStreams)) { videoOnlyStreams.add(videoStream); } @@ -950,19 +950,19 @@ public class YoutubeStreamExtractor extends StreamExtractor { } int bitrate = formatData.getInt("bitrate"); - int averageBitrate = formatData.getInt("averageBitrate"); int width = formatData.getInt("width"); int height = formatData.getInt("height"); - int initStart = formatData.getInt("initRange.start"); - int initEnd = formatData.getInt("initRange.end"); - int indexStart = formatData.getInt("indexRange.start"); - int indexEnd = formatData.getInt("indexRange.end"); + JsonObject initRange = formatData.getObject("initRange"); + JsonObject indexRange = formatData.getObject("indexRange"); + int initStart = Integer.parseInt(initRange.getString("start")); + int initEnd = Integer.parseInt(initRange.getString("end")); + int indexStart = Integer.parseInt(indexRange.getString("start")); + int indexEnd = Integer.parseInt(indexRange.getString("end")); int fps = formatData.getInt("fps"); String mimeType = formatData.getString("mimeType", EMPTY_STRING); String codec = mimeType.contains("codecs") ? mimeType.split("\"")[1] : EMPTY_STRING; itagItem.bitrate = bitrate; - itagItem.avgBitrate =averageBitrate; itagItem.width = width; itagItem.height = height; itagItem.initStart = initStart; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java index 98fc99427..3229cf219 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java @@ -25,6 +25,14 @@ import org.schabi.newpipe.extractor.MediaFormat; public class AudioStream extends Stream { public int average_bitrate = -1; + // Fields for Dash + public int bitrate; + public int initStart; + public int initEnd; + public int indexStart; + public int indexEnd; + public String codec; + /** * Create a new audio stream * @param url the url @@ -36,6 +44,23 @@ public class AudioStream extends Stream { this.average_bitrate = averageBitrate; } + /** + * Create a new audio stream + * @param url the url + * @param format the format + * @param averageBitrate the average bitrate + */ + public AudioStream(String url, MediaFormat format, int averageBitrate, int bitrate, int initStart, int initEnd, int indexStart, int indexEnd, String codec) { + super(url, format); + this.average_bitrate = averageBitrate; + this.bitrate = bitrate; + this.initStart = initStart; + this.initEnd = initEnd; + this.indexStart = indexStart; + this.indexEnd = indexEnd; + this.codec = codec; + } + @Override public boolean equalStats(Stream cmp) { return super.equalStats(cmp) && cmp instanceof AudioStream && @@ -49,4 +74,28 @@ public class AudioStream extends Stream { public int getAverageBitrate() { return average_bitrate; } + + public int getBitrate() { + return bitrate; + } + + public int getInitStart() { + return initStart; + } + + public int getInitEnd() { + return initEnd; + } + + public int getIndexStart() { + return indexStart; + } + + public int getIndexEnd() { + return indexEnd; + } + + public String getCodec() { + return codec; + } } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java index 67219240f..66a22912a 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java @@ -26,6 +26,15 @@ public class VideoStream extends Stream { public final String resolution; public final boolean isVideoOnly; + // Fields for Dash + public int bitrate; + public int initStart; + public int initEnd; + public int indexStart; + public int indexEnd; + public int width; + public int height; + public String codec; public VideoStream(String url, MediaFormat format, String resolution) { this(url, format, resolution, false); @@ -37,6 +46,20 @@ public class VideoStream extends Stream { this.isVideoOnly = isVideoOnly; } + public VideoStream(String url, MediaFormat format, String resolution, boolean isVideoOnly, int bitrate, int initStart, int initEnd, int indexStart, int indexEnd, String codec, int width, int height) { + super(url, format); + this.resolution = resolution; + this.isVideoOnly = isVideoOnly; + this.bitrate = bitrate; + this.initStart = initStart; + this.initEnd = initEnd; + this.indexStart = indexStart; + this.indexEnd = indexEnd; + this.codec = codec; + this.height = height; + this.width = width; + } + public VideoStream(String url, String torrentUrl, MediaFormat format, String resolution) { this(url, torrentUrl, format, resolution, false); } @@ -73,4 +96,36 @@ public class VideoStream extends Stream { public boolean isVideoOnly() { return isVideoOnly; } + + public int getBitrate() { + return bitrate; + } + + public int getInitStart() { + return initStart; + } + + public int getInitEnd() { + return initEnd; + } + + public int getIndexStart() { + return indexStart; + } + + public int getIndexEnd() { + return indexEnd; + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public String getCodec() { + return codec; + } } From d1054338d3a1354e7e82dec83a3ca80e342cc618 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 11 Feb 2021 14:47:30 +0530 Subject: [PATCH 05/15] Fix error with livestreams. --- .../youtube/extractors/YoutubeStreamExtractor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 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 964fd7cfd..27968f902 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 @@ -954,10 +954,10 @@ public class YoutubeStreamExtractor extends StreamExtractor { int height = formatData.getInt("height"); JsonObject initRange = formatData.getObject("initRange"); JsonObject indexRange = formatData.getObject("indexRange"); - int initStart = Integer.parseInt(initRange.getString("start")); - int initEnd = Integer.parseInt(initRange.getString("end")); - int indexStart = Integer.parseInt(indexRange.getString("start")); - int indexEnd = Integer.parseInt(indexRange.getString("end")); + int initStart = Integer.parseInt(initRange.getString("start", "-1")); + int initEnd = Integer.parseInt(initRange.getString("end", "-1")); + int indexStart = Integer.parseInt(indexRange.getString("start", "-1")); + int indexEnd = Integer.parseInt(indexRange.getString("end", "-1")); int fps = formatData.getInt("fps"); String mimeType = formatData.getString("mimeType", EMPTY_STRING); String codec = mimeType.contains("codecs") ? mimeType.split("\"")[1] : EMPTY_STRING; From 0c0f2d74bc33b0916a346e6436c58cb423cea867 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 11 Feb 2021 15:00:10 +0000 Subject: [PATCH 06/15] Make fields private Co-authored-by: bopol --- .../schabi/newpipe/extractor/stream/AudioStream.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java index 3229cf219..4e9fe2aa8 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java @@ -26,12 +26,12 @@ public class AudioStream extends Stream { public int average_bitrate = -1; // Fields for Dash - public int bitrate; - public int initStart; - public int initEnd; - public int indexStart; - public int indexEnd; - public String codec; + private int bitrate; + private int initStart; + private int initEnd; + private int indexStart; + private int indexEnd; + private String codec; /** * Create a new audio stream From a7c9905183175e1257e8f23fa5a330ae6edb2d44 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 11 Feb 2021 20:47:58 +0530 Subject: [PATCH 07/15] Fix requested changes. --- .../extractors/YoutubeStreamExtractor.java | 28 +++++-------- .../newpipe/extractor/stream/AudioStream.java | 19 ++++----- .../newpipe/extractor/stream/VideoStream.java | 39 ++++++++++--------- 3 files changed, 40 insertions(+), 46 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 27968f902..e7ea4cee0 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 @@ -502,7 +502,7 @@ public class YoutubeStreamExtractor extends StreamExtractor { for (Map.Entry entry : getItags(ADAPTIVE_FORMATS, ItagItem.ItagType.AUDIO).entrySet()) { ItagItem itag = entry.getValue(); - AudioStream audioStream = new AudioStream(entry.getKey(), itag.getMediaFormat(), itag.avgBitrate, itag.bitrate, itag.initStart, itag.initEnd, itag.indexStart, itag.indexEnd, itag.codec); + AudioStream audioStream = new AudioStream(entry.getKey(), itag); if (!Stream.containSimilarStream(audioStream, audioStreams)) { audioStreams.add(audioStream); } @@ -542,7 +542,7 @@ public class YoutubeStreamExtractor extends StreamExtractor { for (Map.Entry entry : getItags(ADAPTIVE_FORMATS, ItagItem.ItagType.VIDEO_ONLY).entrySet()) { ItagItem itag = entry.getValue(); - VideoStream videoStream = new VideoStream(entry.getKey(), itag.getMediaFormat(), itag.resolutionString, true, itag.bitrate, itag.initStart, itag.initEnd, itag.indexStart, itag.indexEnd, itag.codec, itag.width, itag.height); + VideoStream videoStream = new VideoStream(entry.getKey(), true, itag); if (!Stream.containSimilarStream(videoStream, videoOnlyStreams)) { videoOnlyStreams.add(videoStream); } @@ -949,27 +949,19 @@ public class YoutubeStreamExtractor extends StreamExtractor { + deobfuscateSignature(cipher.get("s")); } - int bitrate = formatData.getInt("bitrate"); - int width = formatData.getInt("width"); - int height = formatData.getInt("height"); JsonObject initRange = formatData.getObject("initRange"); JsonObject indexRange = formatData.getObject("indexRange"); - int initStart = Integer.parseInt(initRange.getString("start", "-1")); - int initEnd = Integer.parseInt(initRange.getString("end", "-1")); - int indexStart = Integer.parseInt(indexRange.getString("start", "-1")); - int indexEnd = Integer.parseInt(indexRange.getString("end", "-1")); - int fps = formatData.getInt("fps"); String mimeType = formatData.getString("mimeType", EMPTY_STRING); String codec = mimeType.contains("codecs") ? mimeType.split("\"")[1] : EMPTY_STRING; - itagItem.bitrate = bitrate; - itagItem.width = width; - itagItem.height = height; - itagItem.initStart = initStart; - itagItem.initEnd = initEnd; - itagItem.indexStart = indexStart; - itagItem.indexEnd = indexEnd; - itagItem.fps = fps; + itagItem.bitrate = formatData.getInt("bitrate"); + itagItem.width = formatData.getInt("width"); + itagItem.height = formatData.getInt("height"); + itagItem.initStart = Integer.parseInt(initRange.getString("start", "-1")); + itagItem.initEnd = Integer.parseInt(initRange.getString("end", "-1")); + itagItem.indexStart = Integer.parseInt(indexRange.getString("start", "-1")); + itagItem.indexEnd = Integer.parseInt(indexRange.getString("end", "-1")); + itagItem.fps = formatData.getInt("fps"); itagItem.codec = codec; urlAndItags.put(streamUrl, itagItem); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java index 4e9fe2aa8..39d0b0b47 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java @@ -21,6 +21,7 @@ package org.schabi.newpipe.extractor.stream; */ import org.schabi.newpipe.extractor.MediaFormat; +import org.schabi.newpipe.extractor.services.youtube.ItagItem; public class AudioStream extends Stream { public int average_bitrate = -1; @@ -50,15 +51,15 @@ public class AudioStream extends Stream { * @param format the format * @param averageBitrate the average bitrate */ - public AudioStream(String url, MediaFormat format, int averageBitrate, int bitrate, int initStart, int initEnd, int indexStart, int indexEnd, String codec) { - super(url, format); - this.average_bitrate = averageBitrate; - this.bitrate = bitrate; - this.initStart = initStart; - this.initEnd = initEnd; - this.indexStart = indexStart; - this.indexEnd = indexEnd; - this.codec = codec; + public AudioStream(String url, ItagItem itag) { + super(url, itag.getMediaFormat()); + this.average_bitrate = itag.avgBitrate; + this.bitrate = itag.bitrate; + this.initStart = itag.initStart; + this.initEnd = itag.initEnd; + this.indexStart = itag.indexStart; + this.indexEnd = itag.indexEnd; + this.codec = itag.codec; } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java index 66a22912a..11faaa700 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java @@ -21,20 +21,21 @@ package org.schabi.newpipe.extractor.stream; */ import org.schabi.newpipe.extractor.MediaFormat; +import org.schabi.newpipe.extractor.services.youtube.ItagItem; public class VideoStream extends Stream { public final String resolution; public final boolean isVideoOnly; // Fields for Dash - public int bitrate; - public int initStart; - public int initEnd; - public int indexStart; - public int indexEnd; - public int width; - public int height; - public String codec; + private int bitrate; + private int initStart; + private int initEnd; + private int indexStart; + private int indexEnd; + private int width; + private int height; + private String codec; public VideoStream(String url, MediaFormat format, String resolution) { this(url, format, resolution, false); @@ -46,18 +47,18 @@ public class VideoStream extends Stream { this.isVideoOnly = isVideoOnly; } - public VideoStream(String url, MediaFormat format, String resolution, boolean isVideoOnly, int bitrate, int initStart, int initEnd, int indexStart, int indexEnd, String codec, int width, int height) { - super(url, format); - this.resolution = resolution; + public VideoStream(String url, boolean isVideoOnly, ItagItem itag) { + super(url, itag.getMediaFormat()); + this.resolution = itag.resolutionString; this.isVideoOnly = isVideoOnly; - this.bitrate = bitrate; - this.initStart = initStart; - this.initEnd = initEnd; - this.indexStart = indexStart; - this.indexEnd = indexEnd; - this.codec = codec; - this.height = height; - this.width = width; + this.bitrate = itag.bitrate; + this.initStart = itag.initStart; + this.initEnd = itag.initEnd; + this.indexStart = itag.indexStart; + this.indexEnd = itag.indexEnd; + this.codec = itag.codec; + this.height = itag.height; + this.width = itag.width; } public VideoStream(String url, String torrentUrl, MediaFormat format, String resolution) { From 3f6a601be860133999b475024b4b81b4b3cd8dde Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 11 Feb 2021 20:51:04 +0530 Subject: [PATCH 08/15] Fix jdoc / comments. --- .../java/org/schabi/newpipe/extractor/stream/AudioStream.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java index 39d0b0b47..e2620cccd 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java @@ -48,8 +48,7 @@ public class AudioStream extends Stream { /** * Create a new audio stream * @param url the url - * @param format the format - * @param averageBitrate the average bitrate + * @param itag the ItagItem to use */ public AudioStream(String url, ItagItem itag) { super(url, itag.getMediaFormat()); From d4945ac55c01a116833be04c216e040e1cc3c5e3 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 11 Feb 2021 21:05:05 +0530 Subject: [PATCH 09/15] Constructor cleanup. --- .../java/org/schabi/newpipe/extractor/stream/AudioStream.java | 3 +-- .../java/org/schabi/newpipe/extractor/stream/VideoStream.java | 4 +--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java index e2620cccd..1b3354208 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java @@ -51,8 +51,7 @@ public class AudioStream extends Stream { * @param itag the ItagItem to use */ public AudioStream(String url, ItagItem itag) { - super(url, itag.getMediaFormat()); - this.average_bitrate = itag.avgBitrate; + this(url, itag.getMediaFormat(), itag.avgBitrate); this.bitrate = itag.bitrate; this.initStart = itag.initStart; this.initEnd = itag.initEnd; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java index 11faaa700..7198f4fa7 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java @@ -48,9 +48,7 @@ public class VideoStream extends Stream { } public VideoStream(String url, boolean isVideoOnly, ItagItem itag) { - super(url, itag.getMediaFormat()); - this.resolution = itag.resolutionString; - this.isVideoOnly = isVideoOnly; + this(url, itag.getMediaFormat(), itag.resolutionString, isVideoOnly); this.bitrate = itag.bitrate; this.initStart = itag.initStart; this.initEnd = itag.initEnd; From f31b2a68fdec41ee500fdbd0aa211c56e21beb80 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 11 Feb 2021 21:42:24 +0530 Subject: [PATCH 10/15] use getters/setters. --- .../extractor/services/youtube/ItagItem.java | 81 ++++++++++++++++--- .../extractors/YoutubeStreamExtractor.java | 16 ++-- .../newpipe/extractor/stream/AudioStream.java | 12 +-- .../newpipe/extractor/stream/VideoStream.java | 20 +++-- 4 files changed, 95 insertions(+), 34 deletions(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java index 749429e4d..3b736c114 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java @@ -8,7 +8,7 @@ import static org.schabi.newpipe.extractor.services.youtube.ItagItem.ItagType.*; public class ItagItem { /** - * List can be found here https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/youtube.py#L360 + * List can be found here https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/youtube.py#L1046 */ private static final ItagItem[] ITAG_LIST = { ///////////////////////////////////////////////////// @@ -156,13 +156,76 @@ public class ItagItem { public int fps = -1; // Fields for Dash - public int bitrate; - public int width; - public int height; - public int initStart; - public int initEnd; - public int indexStart; - public int indexEnd; - public String codec; + private int bitrate; + private int width; + private int height; + private int initStart; + private int initEnd; + private int indexStart; + private int indexEnd; + private String codec; + public int getBitrate() { + return bitrate; + } + + public void setBitrate(int bitrate) { + this.bitrate = bitrate; + } + + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } + + public int getInitStart() { + return initStart; + } + + public void setInitStart(int initStart) { + this.initStart = initStart; + } + + public int getInitEnd() { + return initEnd; + } + + public void setInitEnd(int initEnd) { + this.initEnd = initEnd; + } + + public int getIndexStart() { + return indexStart; + } + + public void setIndexStart(int indexStart) { + this.indexStart = indexStart; + } + + public int getIndexEnd() { + return indexEnd; + } + + public void setIndexEnd(int indexEnd) { + this.indexEnd = indexEnd; + } + + public String getCodec() { + return codec; + } + + public void setCodec(String codec) { + this.codec = codec; + } } 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 e7ea4cee0..b19d1641b 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 @@ -954,15 +954,15 @@ public class YoutubeStreamExtractor extends StreamExtractor { String mimeType = formatData.getString("mimeType", EMPTY_STRING); String codec = mimeType.contains("codecs") ? mimeType.split("\"")[1] : EMPTY_STRING; - itagItem.bitrate = formatData.getInt("bitrate"); - itagItem.width = formatData.getInt("width"); - itagItem.height = formatData.getInt("height"); - itagItem.initStart = Integer.parseInt(initRange.getString("start", "-1")); - itagItem.initEnd = Integer.parseInt(initRange.getString("end", "-1")); - itagItem.indexStart = Integer.parseInt(indexRange.getString("start", "-1")); - itagItem.indexEnd = Integer.parseInt(indexRange.getString("end", "-1")); + itagItem.setBitrate(formatData.getInt("bitrate")); + itagItem.setWidth(formatData.getInt("width")); + itagItem.setHeight(formatData.getInt("height")); + itagItem.setInitStart(Integer.parseInt(initRange.getString("start", "-1"))); + itagItem.setInitEnd(Integer.parseInt(initRange.getString("end", "-1"))); + itagItem.setIndexStart(Integer.parseInt(indexRange.getString("start", "-1"))); + itagItem.setIndexEnd(Integer.parseInt(indexRange.getString("end", "-1"))); itagItem.fps = formatData.getInt("fps"); - itagItem.codec = codec; + itagItem.setCodec(codec); urlAndItags.put(streamUrl, itagItem); } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java index 1b3354208..b079f618b 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java @@ -52,12 +52,12 @@ public class AudioStream extends Stream { */ public AudioStream(String url, ItagItem itag) { this(url, itag.getMediaFormat(), itag.avgBitrate); - this.bitrate = itag.bitrate; - this.initStart = itag.initStart; - this.initEnd = itag.initEnd; - this.indexStart = itag.indexStart; - this.indexEnd = itag.indexEnd; - this.codec = itag.codec; + this.bitrate = itag.getBitrate(); + this.initStart = itag.getInitStart(); + this.initEnd = itag.getInitEnd(); + this.indexStart = itag.getIndexStart(); + this.indexEnd = itag.getIndexEnd(); + this.codec = itag.getCodec(); } @Override diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java index 7198f4fa7..cce5dcfec 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java @@ -42,21 +42,19 @@ public class VideoStream extends Stream { } public VideoStream(String url, MediaFormat format, String resolution, boolean isVideoOnly) { - super(url, format); - this.resolution = resolution; - this.isVideoOnly = isVideoOnly; + this(url, null, format, resolution, isVideoOnly); } public VideoStream(String url, boolean isVideoOnly, ItagItem itag) { this(url, itag.getMediaFormat(), itag.resolutionString, isVideoOnly); - this.bitrate = itag.bitrate; - this.initStart = itag.initStart; - this.initEnd = itag.initEnd; - this.indexStart = itag.indexStart; - this.indexEnd = itag.indexEnd; - this.codec = itag.codec; - this.height = itag.height; - this.width = itag.width; + this.bitrate = itag.getBitrate(); + this.initStart = itag.getInitStart(); + this.initEnd = itag.getInitEnd(); + this.indexStart = itag.getIndexStart(); + this.indexEnd = itag.getIndexEnd(); + this.codec = itag.getCodec(); + this.height = itag.getHeight(); + this.width = itag.getWidth(); } public VideoStream(String url, String torrentUrl, MediaFormat format, String resolution) { From e975d33fbe9bc4a233c8a116aafc471711242843 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 11 Feb 2021 21:59:09 +0530 Subject: [PATCH 11/15] Change jdoc / comments. --- .../java/org/schabi/newpipe/extractor/stream/AudioStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java index b079f618b..f0ae55ba1 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/AudioStream.java @@ -48,7 +48,7 @@ public class AudioStream extends Stream { /** * Create a new audio stream * @param url the url - * @param itag the ItagItem to use + * @param itag the ItagItem of the Stream */ public AudioStream(String url, ItagItem itag) { this(url, itag.getMediaFormat(), itag.avgBitrate); From 5b70645d8537e82d4b85e629cb3b58e69eb3ca65 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Fri, 12 Feb 2021 00:43:54 +0530 Subject: [PATCH 12/15] Add data to muxed streams aswell. --- .../services/youtube/extractors/YoutubeStreamExtractor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b19d1641b..2ff4cf4db 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 @@ -522,7 +522,7 @@ public class YoutubeStreamExtractor extends StreamExtractor { for (Map.Entry entry : getItags(FORMATS, ItagItem.ItagType.VIDEO).entrySet()) { ItagItem itag = entry.getValue(); - VideoStream videoStream = new VideoStream(entry.getKey(), itag.getMediaFormat(), itag.resolutionString); + VideoStream videoStream = new VideoStream(entry.getKey(), false, itag); if (!Stream.containSimilarStream(videoStream, videoStreams)) { videoStreams.add(videoStream); } From 4d096be14a8f94502ae2bd35dfe4d7b6902e7085 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Wed, 10 Feb 2021 11:38:30 +0530 Subject: [PATCH 13/15] Revert "Update gradle wrapper." This reverts commit 591856e3a11998c4b8ba87b5e361e2b9556d760f. --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2a563242c..4b7e1f3d3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 8d54401233f8f9e65702cd0403fafb9ce203c5f0 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Fri, 12 Feb 2021 16:16:27 +0530 Subject: [PATCH 14/15] Add fps field as well. --- .../org/schabi/newpipe/extractor/stream/VideoStream.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java index cce5dcfec..162241e37 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/stream/VideoStream.java @@ -35,6 +35,7 @@ public class VideoStream extends Stream { private int indexEnd; private int width; private int height; + private int fps; private String codec; public VideoStream(String url, MediaFormat format, String resolution) { @@ -55,6 +56,7 @@ public class VideoStream extends Stream { this.codec = itag.getCodec(); this.height = itag.getHeight(); this.width = itag.getWidth(); + this.fps = itag.fps; } public VideoStream(String url, String torrentUrl, MediaFormat format, String resolution) { @@ -122,6 +124,10 @@ public class VideoStream extends Stream { return height; } + public int getFps() { + return fps; + } + public String getCodec() { return codec; } From c24afa2cbbff98d01a8a0752e65935b4ea23ccb7 Mon Sep 17 00:00:00 2001 From: FireMasterK <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 18 Feb 2021 20:16:32 +0530 Subject: [PATCH 15/15] Permalink URL. --- .../org/schabi/newpipe/extractor/services/youtube/ItagItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java index 3b736c114..863272b35 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/ItagItem.java @@ -8,7 +8,7 @@ import static org.schabi.newpipe.extractor.services.youtube.ItagItem.ItagType.*; public class ItagItem { /** - * List can be found here https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/youtube.py#L1046 + * List can be found here https://github.com/ytdl-org/youtube-dl/blob/9fc5eafb8e384453a49f7cfe73147be491f0b19d/youtube_dl/extractor/youtube.py#L1071 */ private static final ItagItem[] ITAG_LIST = { /////////////////////////////////////////////////////