Commit Graph

263 Commits

Author SHA1 Message Date
Stypox 89a77ae74a
[YouTube] Fix detection of ended livestreams and parse livestream upload date 2020-11-04 16:03:08 +01:00
Stypox 827f7bd137
[YouTube] Cache deobfuscation and improve requests made
Fix age restriction extraction
Automatically fixes more things
2020-11-04 16:02:12 +01:00
Isira Seneviratne 4f04cfccca Switch from Calendar to OffsetDateTime in DateWrapper. 2020-11-01 06:28:54 +05:30
Stypox 30ed4f2d63
Remove any reference to decrypt and improve error message 2020-10-28 20:26:00 +01:00
TobiGr 62912ee834 Merge branch 'master' into dev 2020-10-28 14:28:06 +01:00
bopol 6dc5ab4015 find playerUrl in another place when assetsPattern regex fails 2020-10-27 13:48:58 +01:00
bopol db0ef83d6b fix youtube decryption and three attemps bug
fixes teamnewpipe/newpipe#4572 fixes #439
2020-10-27 13:40:24 +01:00
bopol 01f49e8f66 polish strings 2020-10-26 16:32:39 +01:00
Stypox 57e7994c9e
Add some missing finals, nullables and comments 2020-10-25 08:12:41 +01:00
Stypox 68d23defba
[YouTube] Do not catch every exception on getErrorMessage
@B0pol suggestion
2020-10-24 18:39:55 +02:00
Stypox 3191bd6c70
[YouTube] Use final when possible 2020-10-24 18:39:55 +02:00
Stypox 3b2cfb4ca2
[SoundCloud] Return empty video stream list instead of null
Also replace every instance of `return new ArrayList<>();` with `return Collections.emptyList();`
2020-10-24 18:23:46 +02:00
Stypox 072bae321f
[YouTube] Fix frame extraction for livestreams
Use saved playerResponse instead of parsing json every time
2020-10-24 18:23:46 +02:00
Stypox 7cd410f3fc
[YouTube] Return 0 when there is no timestamp, not -2, as per javadoc 2020-10-24 18:23:45 +02:00
Stypox 7fb867c166
[YouTube] Fix error message obtaining when there is none 2020-10-24 18:22:44 +02:00
Stypox 19e862657a
[YouTube] Fix some decryption exceptions by retrying 2020-10-15 20:16:44 +02:00
wb9688 ebbfe7f6d4 Skip YouTube's OTF streams 2020-09-29 10:48:02 +02:00
wb9688 7657c2ed1a Use initSafeStandardsObjects() 2020-08-15 17:08:07 +02:00
TobiGr 5ac80624a4 Fix detection of YouTube's decryption function
Closes TeamNewPipe/NewPipe#3951
2020-07-28 01:01:10 +02:00
Tobias Groza 32dff1541f
Merge pull request #370 from wb9688/fix-yt-age-restricted
Fix age restricted YouTube videos
2020-07-26 14:17:19 +02:00
TobiGr ec778200d9 Add comments to the code 2020-07-26 14:15:13 +02:00
wb9688 81459e289f Fix age restricted YouTube videos 2020-07-18 19:52:54 +02:00
wb9688 ff560e907a Remove getNextStream() from StreamExtractor 2020-07-15 18:48:37 +02:00
wb9688 156a26b64b Support start= timestamps for YouTube 2020-07-06 14:08:40 +02:00
wb9688 98055a3c3c Revert "Add more decryption function regexes"
This reverts commit 384d6acd5d.
2020-05-29 18:41:40 +02:00
Tobias Groza cf18cdb2f5
Merge pull request #329 from wb9688/decryption-regexes
Add more decryption function regexes
2020-05-29 10:10:50 +02:00
wb9688 384d6acd5d Add more decryption function regexes 2020-05-28 11:40:38 +02:00
wb9688 7ef3e80493 Extract dashManifestUrl in playerResponse 2020-05-15 12:07:26 +02:00
bopol de26e00079 changed all == null || isEmpty() to isNullOrEmpty() 2020-05-11 11:40:24 +02:00
wb9688 1de0876fb4 Fix #327 2020-05-09 20:06:50 +02:00
Roy Yosef a408661771 Fix PR review
Rename "ParentChannel" to "SubChannel"
Add Tests for sub-channel info fetching
2020-05-07 20:20:12 +02:00
Roy Yosef 1de1f97cf1 Add parent channel info to StreamExtractor: name, url & avatar url 2020-05-07 20:20:12 +02:00
bopol bc13e0c616 Merge remote-tracking branch 'upstream/dev' into soundcloudComments 2020-05-05 14:49:21 +02:00
wb9688 a1eabc7589 Return null instead of "" in getTextFromObject() 2020-05-02 08:02:25 +02:00
wb9688 b51699a20e Implement @TobiGr's suggestions 2020-04-20 14:27:33 +02:00
wb9688 979c5a7502 Use our fork of nanojson 2020-04-17 19:36:42 +02:00
bopol 636c430743 refactor: create extractors and linkHandler packages for SoundCloud, move YoutubeParsingHelper to youtube package (not linkhandler anymore) 2020-04-10 10:51:05 +02:00
Tobias Groza 8a9ae32e6b
Merge pull request #292 from wb9688/fix-yt-no-views
Fix YouTube videos with no views
2020-03-24 20:27:08 +01:00
Tobias Groza 6fd9b38ad9
Merge pull request #287 from mauriciocolli/fix-channel-redirect
[YouTube] Fix channel with redirects directly in the response
2020-03-23 18:41:56 +01:00
wb9688 904c9d681f Fix YouTube videos with no views 2020-03-18 10:07:49 +01:00
Stypox 325a51f73a
[YouTube] Do not crash if there is no next stream, but return null
Like every other extractor does if there is no next stream
2020-03-14 14:02:48 +01:00
Mauricio Colli 00d1ed439b
[YouTube] Fix channel extraction when redirects are in the response
Some redirects were embed directly into the response as instructions
for the page, instead of the usual http redirects.
2020-03-14 02:39:48 -03:00
Mauricio Colli cfc278317d
[YouTube] Fail-fast if status exist and is anything other than "OK" 2020-03-01 10:29:29 -03:00
Mauricio Colli 5686a6f562 [YouTube] Detect when a stream is deleted or doesn't exist
Added a test case as well.
2020-03-01 12:49:13 +01:00
Mauricio Colli 408f042127 [YouTube] Fix bug when url isn't present in the browseEndpoint object 2020-03-01 12:49:13 +01:00
wb9688 bfe3eb1409 Use suggested try-if code style 2020-02-29 17:18:50 +01:00
wb9688 45df8248bf Use Localization in getJsonResponse() 2020-02-29 16:55:07 +01:00
wb9688 157055fbfd Create getJsonResponse() function 2020-02-29 16:42:04 +01:00
wb9688 4f406512c2 Use YoutubeChannelLinkHandlerFactory 2020-02-29 16:26:28 +01:00
wb9688 4ff655352d Reimplement getAgeLimit() 2020-02-28 17:14:26 +01:00
wb9688 8bfbae904d Cache getVideo(Primary|Secondary)InfoRenderer() 2020-02-28 17:03:21 +01:00
wb9688 0b940f5cf4 Use "getAgeLimit() != NO_AGE_LIMIT" instead of "getAgeLimit() == 18" 2020-02-28 16:40:50 +01:00
wb9688 7898ba230d Use pbj in YoutubeStreamExtractor 2020-02-28 15:17:47 +01:00
wb9688 612ec06839 Actually fix thumbnail URLs starting with // 2020-02-28 09:36:33 +01:00
wb9688 94a2d5be46 Fix thumbnail URLs starting with // 2020-02-27 19:08:46 +01:00
wb9688 365b0329f3 Implement getTextFromObject() function 2020-02-27 17:39:23 +01:00
wb9688 8ebd971648 Fix channel descriptions consisting of multiple parts 2020-02-27 10:06:35 +01:00
wb9688 880b951088 Fix getUploaderAvatarUrl() in YoutubeStreamExtractor 2020-02-27 09:53:59 +01:00
wb9688 8aa560bef4 Fix video titles consisting of multiple parts due to @ 2020-02-27 09:42:22 +01:00
wb9688 a2d8489e16 Parse timestamps in description 2020-02-26 20:27:30 +01:00
wb9688 8d503407ef Parse browseEndpoint and watchEndpoint in descriptions 2020-02-26 19:37:58 +01:00
wb9688 88282761f4 Fix YoutubeStreamExtractor not being able to getAgeLimit() in onFetchPage() 2020-02-26 16:19:42 +01:00
wb9688 1c3a4e710b Check if there are no related streams in getAgeLimit() 2020-02-26 16:03:06 +01:00
TobiGr fc465c8bf7 Fix getUploadDate() for premiered videos with a given date
Detect publishDate and uploadDate
2020-02-25 22:54:37 +01:00
TobiGr 96285e0815 Fix getUploadDate() for premiered videos with a given date 2020-02-25 21:51:30 +01:00
wb9688 5a35300a5e Fix parsing upload date for premiered streams 2020-02-25 21:51:30 +01:00
wb9688 729fd2eaee Fix parsing description for navigationEndpoint without urlEndpoint 2020-02-25 21:51:30 +01:00
wb9688 26fb44595f Fix parsing description 2020-02-25 21:51:30 +01:00
TobiGr 0fff03038e Get description with correct links 2020-02-25 21:51:30 +01:00
wb9688 5d08c34322 Fix parsing upload date in YoutubeStreamExtractor 2020-02-25 21:51:30 +01:00
wb9688 bbe1a3cd62 Use getVideo(Primary|Secondary)InfoRenderer() 2020-02-25 21:51:30 +01:00
TobiGr ecfc27a92c Implement fallback methods for getDescription() and getTextualUploadDate() in YouTubeStreamExtractor 2020-02-25 21:51:30 +01:00
wb9688 eed29ea734 Return null for related streams at age restricted videos 2020-02-25 21:51:30 +01:00
TobiGr f39603f6ef Implement getUploadDate() in YouTubeStreamInfoItemExtractor 2020-02-25 21:51:30 +01:00
wb9688 26ea3dceb6 Fix getViewCount() in YoutubeStreamExtractor 2020-02-25 21:51:30 +01:00
wb9688 76d54abdbf Reimplement more methods in YoutubeStreamExtractor 2020-02-25 21:51:30 +01:00
wb9688 f13c0288cc Reimplement some methods in YoutubeStreamExtractor 2020-02-25 21:51:30 +01:00
wb9688 02b59903fa Remove useless code 2020-02-25 21:51:30 +01:00
wb9688 4039409820 Fix getLikeCount() for certain streams 2020-02-25 21:51:30 +01:00
TobiGr 5816202cc7 Move getInitialData() method to YouTubeParsingHelper
Rename ytInitialData to initialData
2020-02-25 21:51:30 +01:00
wb9688 b88188d419 Move stuff from extractVideoPreviewInfo() into YoutubeStreamInfoItemExtractor and partially fix search 2020-02-25 21:51:30 +01:00
wb9688 af49b3c487 Fix live streams in extractVideoPreviewInfo() 2020-02-25 21:51:30 +01:00
TobiGr 10e9c16d8c Fix LiveStream view count 2020-02-25 21:51:30 +01:00
wb9688 127c4d5893 Fix getNextStream() in YoutubeStreamExtractor 2020-02-25 21:51:30 +01:00
wb9688 7bfc0e62c6 Fix getRelatedStreams() in YoutubeStreamExtractor 2020-02-25 21:51:30 +01:00
TobiGr 12166ca60c [StreamExtractor] Add fallback method for uploader avatar url 2020-02-25 21:51:30 +01:00
wb9688 3ec422a542 Fix like/dislike parsing 2020-02-25 21:51:30 +01:00
TobiGr 7dcc9f159b Stream: fix uploader avatar url 2020-02-25 21:51:30 +01:00
TobiGr 39bf1ff1eb Add ytInitialData regex 2020-02-25 21:51:30 +01:00
TobiGr 030465b5d4 Improve code formatting and optimise imports 2020-02-15 13:36:54 +01:00
bopol 70a40e7388 Description: rm constructor by serviceId 2020-02-07 13:28:27 +01:00
bopol 26c65b2948 Create class Description 2020-02-06 23:35:46 +01:00
B0pol b671a4ba18
Merge branch 'dev' into peertube 2020-02-01 18:18:23 +00:00
Mauricio Colli be81f2945c
[YouTube] Use correct upload date flag in StreamExtractor 2020-01-28 02:44:17 -03:00
TobiGr 033a9fb8e3 Revert change which I accidentally committed while fixing the decryption
function in 7b72fd2a7d
2020-01-25 21:08:17 +01:00
B0pol e392b6c68f getLanguageInfo returns Locale instead of String
so that java can automatically translate with Locale.getDisplayLanguage(), instead of always having English name of the language
2020-01-25 14:12:38 +01:00
B0pol b816e48216
Merge branch 'dev' into peertube 2020-01-24 20:10:47 +01:00
TobiGr f8d117f6cd Merge remote-tracking branch 'origin/master' into dev 2020-01-24 19:22:40 +01:00
TobiGr 7b72fd2a7d [YouTube] Add new decryption function 2020-01-24 02:10:56 +01:00
TobiGr bce87f3d01 Improve getDescriptionFuncName by removing catches and adding a loop 2020-01-24 02:10:38 +01:00
TobiGr 9b45c61103 Typos, comments and formatting 2020-01-24 02:10:18 +01:00
TobiGr 29a4cc78bf Fix typo in decryption constant 2020-01-24 02:10:08 +01:00
bopol 74439f692a add extraction for support info and rename getLanguageInfo function 2020-01-23 14:19:22 +01:00
B0pol bcfe7be4e6
Merge branch 'dev' into peertube 2020-01-22 19:19:41 +01:00
Stypox 1cfdc4547a
Update extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java
Co-Authored-By: Tobias Groza <TobiGr@users.noreply.github.com>
2020-01-20 22:52:48 +01:00
Stypox 1e1100ef76
Update extractor/src/main/java/org/schabi/newpipe/extractor/services/youtube/extractors/YoutubeStreamExtractor.java
Co-Authored-By: Tobias Groza <TobiGr@users.noreply.github.com>
2020-01-20 22:52:36 +01:00
bopol a281519e77 added metadata, fix descriptions, fix thumbnail, update tests
thumbnail: quality before: https://peertube.cpy.re/static/thumbnails/d2a5ec78-5f85-4090-8ec5-dc1102e022ea.jpg
quality after: https://peertube.cpy.re/static/previews/d2a5ec78-5f85-4090-8ec5-dc1102e022ea.jpg

description: we were getting about the first 260 characters, we now get full description (with fallback to first 260 chars if the get request for full description fails)
test: updated tests to match description, also changed some test: it was assertEquals(extracted, expected), but the proper way to do it is assertEquals(expected, extracted)

metadata: got host, privacy (public, private, unlisted), licence, language, tags
2020-01-20 12:22:33 +01:00
Stypox 1ed89aad3e
Use more often playerResponse in yt stream extractor
This enhances performance and should make the extractor more reliable since it get info from a stable json structure that shouldn't be subject to many changes. Fallback html methods have been kept. In case of error the thrown exception contains the data about the playerResponse failure, that should be clearer than a NPE caused by not-found html tags.
2020-01-06 20:45:57 +01:00
Tobias Groza d83787a5ca
Merge pull request #226 from 7FM/dev
fix switching on null causing NPE
2019-12-31 00:26:27 +01:00
Zsombor Gegesy 0a3422a591 Fix invalid jsoup query 2019-12-26 14:03:40 +01:00
7FM f57d9d43ce fix switching on null causing NPE 2019-12-21 14:15:42 +01:00
Mauricio Colli 3d21ef5dba
Introduce class that indicates when the time ago is an approximation 2019-11-03 15:46:28 -03:00
Mauricio Colli cb1e327a6e
[YouTube] Fix parsing of video reminders 2019-11-03 15:46:23 -03:00
Mauricio Colli d8280ce0da
[YouTube] Parse watching count in live streams items 2019-11-03 15:46:22 -03:00
Mauricio Colli 3638f0e0ea
Implement time ago parser and improve localization handling
- Handle special cases for languages where the number is not shown
- Rework the Downloader base implementation, allowing for more
advanced things to be done
- Separate the localization from the content country (just like
YouTube let's the user choose both).
2019-11-03 15:46:21 -03:00
wojcik-online 180836c180
Base Implementation: Parse the upload date of StreamInfoItems
In the format '2 days ago' (in English) on a YouTube channel page.
(Parser extensible to other pages.)
2019-11-03 15:46:20 -03:00
Mauricio Colli c4fe2183ce
[YouTube] Improve detection of reCAPTCHA pages 2019-10-29 02:00:41 -03:00
Mauricio Colli 9a325b280d
[YouTube] Make detection of age restricted pages more reliable 2019-10-29 02:00:40 -03:00
Mauricio Colli 91c360df5e
Remove section of dead code 2019-10-29 02:00:39 -03:00
Tobias Groza 06f2144e4d
[YouTube] Remove GEMA exception handling (#202) 2019-10-05 14:59:05 +02:00
Vasiliy d8279f91f6
Merge branch 'dev' of https://github.com/TeamNewPipe/NewPipeExtractor into feature/frames 2019-09-28 14:46:14 +03:00
TobiGr 0710f31a39 Fix TeamNewPipe/NewPipeExtractor#197 2019-09-25 08:37:26 +02:00
Stypox 3f1ba93be5
Fix NPE when extracting itags with non-existing streamingData key 2019-09-12 15:08:17 +02:00
Stypox 0d8fb65003
Fix NPE on determining whether stream is live on Youtube 2019-09-12 15:07:07 +02:00
Stypox 24a37b88a9
Use pre-generated playerResponse field in yt's getHlsUrl()
Also refactored code to always throw exception when the url can't be found
2019-09-11 20:12:30 +02:00
Stypox 9c423a0a40
Use FORMATS to get video+audio streams on yt
Not ADAPTIVE_FORMATS
2019-09-11 20:04:28 +02:00
Stypox e5e8c66686
Readd signature decryption in YtStreamExtractor 2019-09-11 19:56:16 +02:00
Stypox d9570d8634
Use pre-generated playerResponse field everywhere in YtStreamExtractor 2019-09-11 19:35:08 +02:00
Stypox 63a37c48e3
Remove println left behind 2019-09-11 19:31:39 +02:00
Stypox bf017bf5b9
Fix TeamNewPipe/NewPipe#2615 2019-09-11 19:05:41 +02:00
Vasiliy f084cfec24
Refactor frames extraction 2019-09-10 19:38:51 +03:00
Vasiliy a6c94c7a9d
Grub frames preview from youtube 2019-08-26 19:14:09 +03:00
jimbo1qaz e38d906ff9 Fix timestamp links in Youtube video descriptions
For some reason, in NewPipeExtractor,
comments were loaded from JSON by YoutubeCommentsInfoItemExtractor as text,
sent via CommentsInfoItem#getCommentText to NewPipe,
where timestamps are converted to hyperlinks using Linkify:
https://github.com/TeamNewPipe/NewPipe/pull/2168

On the other hand, video descriptions are handled in NewPipeExtractor
by scraping the watch-page HTML.
There, timestamp links were previously mangled (and now properly parsed),
before being sent as HTML via YoutubeStreamExtractor#getDescription
to NewPipe (where HTML gets converted to Spanned).

The logic introduced in this commit is different from the above PR,
since it operates in the extractor, and mutates the HTML DOM
rather than identifying via regex.
2019-08-18 01:05:41 -07:00
Stypox 06689a2f27
Add url to ReCaptchaException
Sometimes YouTube introduces recaptchas only on some pages. By adding an url to the ReCaptchaException the NewPipe app is able to use that url to load the page that originally caused the problem.
Also removed every instance of exception caught and rethrown with a different description: it makes no sense and it removes part of the useful stacktrace.
2019-08-17 09:09:07 +02:00
Christian Schabesberger 5798c8fdf5 fix duration can not be paresd
update gradle to version 5.1

fix sts issue for agegated videos

GOD DAMN FUCKING BULLSHIT

add duratin for controversal/age gated videos

bring back sts

remove ignores

fix ogg test
2019-07-31 16:11:42 +02:00
Stypox c70d28597b
Add fallback for urls not conaining the "sp" tag
If ever YouTube changes thing again (or uses old urls for some unknown reason), this prevents the extractor from crashing.
As suggested here: 133cc032d9 (r283529811)
2019-05-14 13:57:45 +02:00
Stypox 133cc032d9
Fix invalid yt url: signature tag name is not always "signature"
Thanks to @omarroth for the suggestion: see TeamNewPipe/NewPipeExtractor#155
2019-05-13 21:25:35 +02:00
Christian Schabesberger 560c648e92 fix decrypt regex for akamai 2 times in file 2019-03-14 16:49:30 +01:00
Christian Schabesberger dd61d66cf5 speed up finding decrypt function 2019-03-14 09:07:19 +01:00
Christian Schabesberger e072bf6461 fix dercrypt error due to wrong dollar sign detection 2019-03-14 08:49:11 +01:00
Ritvik Saraf c60d6ec0ab removed unused import 2019-01-19 18:20:02 +05:30
Ritvik Saraf 50c4783f71 fixed extracting hls url 2019-01-19 18:07:35 +05:30
Kunal Sareen b6790bbe6b Updating regex 2019-01-18 21:47:34 +11:00
kapodamy e4afb21862 make Subtitle object Stream compliant
* merge SubtitlesFormat into MediaFormat
* implement Stream interface on Subtitle class
* misc fixes: dont show a snackbar error on age-restricted videos, lint fix.
2018-11-08 16:29:05 -03:00
Christian Schabesberger 7129d6db55 add inline documentation for StreamExtractor 2018-11-07 18:28:44 +01:00
Christian Schabesberger ad4b15ac66
Merge pull request #114 from TeamNewPipe/localization
Localization
2018-09-24 14:00:20 +02:00
Christian Schabesberger 49c2eb5185 fix failing watch links 2018-09-20 13:51:06 +02:00
Christian Schabesberger ce2bbee1e9 add propper localization 2018-09-15 22:29:28 +02:00
Christian Schabesberger 96b4c97cee
Merge pull request #109 from karyogamy/sig-fix-update
Decryption Signature Regex Update
2018-09-15 22:10:31 +02:00
John Zhen Mo ed73ae55f1 -Added more decrypt function name matching regex.
-Cleaned up decryption code generation method.
2018-09-07 22:25:07 -07:00