From 3ce7f2ef41aff471d4b6bba2b5ea205d2febe59c Mon Sep 17 00:00:00 2001 From: litetex <40789489+litetex@users.noreply.github.com> Date: Fri, 24 Jun 2022 22:07:46 +0200 Subject: [PATCH] Code cleanup Updated javadoc Cleanup more code * Improve /Add java doc * Remove unused code * Convert TODOs to followup issues --- ...BandcampSearchStreamInfoItemExtractor.java | 2 +- .../MediaCCCLiveStreamExtractor.java | 28 +++++++++++++++++- .../MediaCCCLiveStreamMapperDTO.java | 29 ------------------- .../extractors/PeertubeStreamExtractor.java | 1 - .../extractors/SoundcloudStreamExtractor.java | 2 +- .../AbstractYoutubeDashManifestCreator.java | 13 ++++++++- .../extractors/YoutubeStreamExtractor.java | 16 +++++++++- .../format/registry/ItagFormatRegistry.java | 10 ++++++- .../services/youtube/itag/info/ItagInfo.java | 1 - .../DashManifestCreatorConstants.java | 2 +- .../SimpleDASHManifestDeliveryDataImpl.java | 11 ------- .../SimpleVideoAudioStreamImpl.java | 7 ----- .../schabi/newpipe/extractor/utils/Pair.java | 2 +- 13 files changed, 67 insertions(+), 57 deletions(-) delete mode 100644 extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamMapperDTO.java diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampSearchStreamInfoItemExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampSearchStreamInfoItemExtractor.java index ef384496f..d1a55b33a 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampSearchStreamInfoItemExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/bandcamp/extractors/streaminfoitem/BandcampSearchStreamInfoItemExtractor.java @@ -22,7 +22,7 @@ public class BandcampSearchStreamInfoItemExtractor extends BandcampStreamInfoIte public String getUploaderName() { final String subhead = resultInfo.getElementsByClass("subhead").text(); final String[] splitBy = subhead.split("by "); - return splitBy.length > 1 ? splitBy[1] : splitBy[0]; + return splitBy[splitBy.length > 1 ? 1 : 0]; } @Nullable diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java index 46659bf7f..6e839b5bc 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamExtractor.java @@ -185,7 +185,6 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor { dto.getStreamJsonObj().getArray("videoSize"); return new SimpleVideoAudioStreamImpl( - // TODO: This looks wrong new VideoAudioFormatRegistry() .getFromSuffixOrThrow(dto.getUrlKey()), buildDeliveryData(dto), @@ -237,4 +236,31 @@ public class MediaCCCLiveStreamExtractor extends StreamExtractor { public String getCategory() { return group; } + + static final class MediaCCCLiveStreamMapperDTO { + private final JsonObject streamJsonObj; + private final String urlKey; + private final JsonObject urlValue; + + MediaCCCLiveStreamMapperDTO(final JsonObject streamJsonObj, + final String urlKey, + final JsonObject urlValue) { + this.streamJsonObj = streamJsonObj; + this.urlKey = urlKey; + this.urlValue = urlValue; + } + + JsonObject getStreamJsonObj() { + return streamJsonObj; + } + + String getUrlKey() { + return urlKey; + } + + JsonObject getUrlValue() { + return urlValue; + } + } + } diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamMapperDTO.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamMapperDTO.java deleted file mode 100644 index c06ef736b..000000000 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/media_ccc/extractors/MediaCCCLiveStreamMapperDTO.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.schabi.newpipe.extractor.services.media_ccc.extractors; - -import com.grack.nanojson.JsonObject; - -final class MediaCCCLiveStreamMapperDTO { - private final JsonObject streamJsonObj; - private final String urlKey; - private final JsonObject urlValue; - - MediaCCCLiveStreamMapperDTO(final JsonObject streamJsonObj, - final String urlKey, - final JsonObject urlValue) { - this.streamJsonObj = streamJsonObj; - this.urlKey = urlKey; - this.urlValue = urlValue; - } - - JsonObject getStreamJsonObj() { - return streamJsonObj; - } - - String getUrlKey() { - return urlKey; - } - - JsonObject getUrlValue() { - return urlValue; - } -} diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java index aadbfa197..991d30d53 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/peertube/extractors/PeertubeStreamExtractor.java @@ -400,7 +400,6 @@ public class PeertubeStreamExtractor extends StreamExtractor { baseUrl + JsonUtils.getString(caption, "captionPath"); return new SimpleSubtitleStreamImpl( - // TODO: Check for null new SubtitleFormatRegistry() .getFromSuffixOrThrow( url.substring(url.lastIndexOf(".") + 1)), diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java index 7e633cfc1..a94840fac 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/soundcloud/extractors/SoundcloudStreamExtractor.java @@ -260,7 +260,7 @@ public class SoundcloudStreamExtractor extends StreamExtractor { return null; } - return (AudioStream) new SimpleAudioStreamImpl( + return new SimpleAudioStreamImpl( mediaFormat, protocol.equals("hls") ? new SimpleHLSDeliveryDataImpl(mediaUrl) diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/dashmanifestcreator/AbstractYoutubeDashManifestCreator.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/dashmanifestcreator/AbstractYoutubeDashManifestCreator.java index a0bcb4715..f8c2cc9a2 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/dashmanifestcreator/AbstractYoutubeDashManifestCreator.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/dashmanifestcreator/AbstractYoutubeDashManifestCreator.java @@ -54,7 +54,18 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; -// TODO: Doc +/** + * Abstract class for YouTube DASH manifest creation. + * + *

+ * This class includes common methods of manifest creators and useful constants. + *

+ * + *

+ * Generation of DASH documents and their conversion as a string is done using external classes + * from {@link org.w3c.dom} and {@link javax.xml} packages. + *

+ */ public abstract class AbstractYoutubeDashManifestCreator implements DashManifestCreator { /** 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 a01a54489..2d4f28734 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 @@ -614,7 +614,8 @@ public class YoutubeStreamExtractor extends StreamExtractor { @Override public List getVideoStreams() throws ExtractionException { - return buildStrems(FORMATS, + return buildStrems( + FORMATS, ItagFormatRegistry.VIDEO_AUDIO_FORMATS, (itagInfo, deliveryData) -> new SimpleVideoAudioStreamImpl( itagInfo.getItagFormat().mediaFormat(), @@ -1249,6 +1250,19 @@ public class YoutubeStreamExtractor extends StreamExtractor { } } + /* + * Note: We build the manifests for YT ourself because the provided ones (according to AudricV) + * + */ @Nonnull private > DeliveryData buildDeliveryData(final ItagInfo itagInfo) { final ItagFormatDeliveryData iDeliveryData = itagInfo.getItagFormat().deliveryData(); diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/itag/format/registry/ItagFormatRegistry.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/itag/format/registry/ItagFormatRegistry.java index e69dc4988..030230ee0 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/itag/format/registry/ItagFormatRegistry.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/itag/format/registry/ItagFormatRegistry.java @@ -21,7 +21,15 @@ import org.schabi.newpipe.extractor.streamdata.format.registry.AudioFormatRegist import java.util.stream.Stream; // CHECKSTYLE:OFF - Link is too long -// https://github.com/ytdl-org/youtube-dl/blob/9aa8e5340f3d5ece372b983f8e399277ca1f1fe4/youtube_dl/extractor/youtube.py#L1195 +/** + * A registry that contains all supported YouTube itags. + *

+ * For additional information you may also check: + *

    + *
  • https://github.com/ytdl-org/youtube-dl/blob/9aa8e5340f3d5ece372b983f8e399277ca1f1fe4/youtube_dl/extractor/youtube.py#L1195
  • + *
  • https://gist.github.com/AgentOak/34d47c65b1d28829bb17c24c04a0096f
  • + *
+ */ // CHECKSTYLE:ON public final class ItagFormatRegistry { diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/itag/info/ItagInfo.java b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/itag/info/ItagInfo.java index 5e8b7ed1a..13c704d4c 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/itag/info/ItagInfo.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/itag/info/ItagInfo.java @@ -15,7 +15,6 @@ public class ItagInfo> { @Nonnull private final I itagFormat; - // TODO: Maybe generate the streamUrl on-demand and not always instantly? @Nonnull private final String streamUrl; diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/delivery/dashmanifestcreator/DashManifestCreatorConstants.java b/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/delivery/dashmanifestcreator/DashManifestCreatorConstants.java index 10d74239c..01c494dcc 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/delivery/dashmanifestcreator/DashManifestCreatorConstants.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/delivery/dashmanifestcreator/DashManifestCreatorConstants.java @@ -2,7 +2,7 @@ package org.schabi.newpipe.extractor.streamdata.delivery.dashmanifestcreator; public final class DashManifestCreatorConstants { private DashManifestCreatorConstants() { - // No impl! + // No impl } // XML elements of DASH MPD manifests diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/delivery/simpleimpl/SimpleDASHManifestDeliveryDataImpl.java b/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/delivery/simpleimpl/SimpleDASHManifestDeliveryDataImpl.java index d625016e6..a32e6b86d 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/delivery/simpleimpl/SimpleDASHManifestDeliveryDataImpl.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/delivery/simpleimpl/SimpleDASHManifestDeliveryDataImpl.java @@ -7,17 +7,6 @@ import java.util.Objects; import javax.annotation.Nonnull; -/** - * Note we build the manifests for YT ourself because the provided ones (according to TiA4f8R) - *
    - *
  • aren't working https://github.com/google/ExoPlayer/issues/2422#issuecomment-283080031
  • - *
  • causes memory problems; TransactionTooLargeException: data parcel size 3174340
  • - *
  • are not always returned, only for videos with OTF streams, or on (ended or not) - * livestreams
  • - *
  • Instead of downloading a 10MB manifest when you can generate one which is 1 or 2MB large
  • - *
  • Also, this manifest isn't used at all by modern YouTube clients.
  • - *
- */ public class SimpleDASHManifestDeliveryDataImpl extends AbstractDeliveryDataImpl implements DASHManifestDeliveryData { @Nonnull diff --git a/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/stream/simpleimpl/SimpleVideoAudioStreamImpl.java b/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/stream/simpleimpl/SimpleVideoAudioStreamImpl.java index 6d0bc1829..68d03a090 100644 --- a/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/stream/simpleimpl/SimpleVideoAudioStreamImpl.java +++ b/extractor/src/main/java/org/schabi/newpipe/extractor/streamdata/stream/simpleimpl/SimpleVideoAudioStreamImpl.java @@ -36,13 +36,6 @@ public class SimpleVideoAudioStreamImpl extends AbstractStreamImpl