- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 496
 
Delivery methods without design flaws #862
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
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
MediaFormatwas reworked and split into Service specific media formats likeAudioMediaFormat,SubtitleMediaFormatand so on.Streamwas reworked and split into multiple interfacesDeliveryData) and it's subsequent implementations (e.g.DASHUrlDeliveryData,ProgressiveHTTPDeliveryData, ...)DeliveryTypewhich is no longer requiredItagFormatRegistryif you want to know more)StreamTypewas removed and replaced byisLiveandisAudioOnlyinside theStreamInfoclass and the extractorsManifestCreatorCacheas 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: