-
Notifications
You must be signed in to change notification settings - Fork 421
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Delivery methods without design flaws #862
base: dev
Are you sure you want to change the base?
Delivery methods without design flaws #862
Conversation
dd35950
to
fd33006
Compare
fd52219
to
c0f1777
Compare
c6b4e06
to
d251a91
Compare
Took a brief look: I like the structure. I usually tend to avoid having this many abstract things, but in this case there is no way to avoid it because of the complexity of the data. With this structure a user of the extractor would need to use Also, what about removing completely the concept of |
@Stypox I'm currently already struggling with NewPipe itself because nearly everything that is player related has to be reworked (which with the fact that I currently don't have much spare time gradually slows down the progress quite a bit). Btw there will be further unfinished changes inbound here that are mostly download-related e.g. marking TorrentData as not downloadable or how the playback should be resolved in the best way, e.g. preferring the hlsMasterPlaylistUrl or something else for certain streams. |
@litetex any news? :-) |
* Killed StreamType * Move ``Privacy`` out of ``Extractor`` * Reworked YT stream extractor
deduplication should be done by the extractor
…terPlaylistUrl()`` instead
Updated javadoc Cleanup more code * Improve /Add java doc * Remove unused code * Convert TODOs to followup issues
* Added support for content-length (important for downloader) * Code cleanup
* Throw ContentNotSupportedExceptions when extracting (as was done before)
Not finished yet
d0a4a8d
to
8b7cb62
Compare
@Stypox |
Fixes #858
Status: Extractor implementation nearly done, changes in Client/NewPipe still have to be implemented
Changelog
This PR reimplements #810.
Short overview the delivery methods work in the first place (click to expand)
Architecture
The architecture how Streams and StreamingData (and the different types of them) work was completely rewritten.
Click to expand architecture overview
Note that all "classes" are interfaces except the YT-specific implementation.
Changes in detail
MediaFormat
was reworked and split into Service specific media formats likeAudioMediaFormat
,SubtitleMediaFormat
and so on.Stream
was reworked and split into multiple interfacesDeliveryData
) and it's subsequent implementations (e.g.DASHUrlDeliveryData
,ProgressiveHTTPDeliveryData
, ...)DeliveryType
which is no longer requiredItagFormatRegistry
if you want to know more)StreamType
was removed and replaced byisLive
andisAudioOnly
inside theStreamInfo
class and the extractorsManifestCreatorCache
as it's no longer requiredIn total this PR removes nearly 2k LoC (compared to the original PR #810 that's nearly 50% of the added code) and makes the extractor much more object oriented.
Todo: