With the extractor PR, fixes title & description shown in the wrong language.
Fixed views / spectators counts possibly in the wrong language
Fixed live spectators not showing full count on detail page
Fixed LIVE shown on players, it shows translated instead
Fixed Videos string in search / three dots not available in Weblate
(because it was videos, but there already was a plural string named videos, in Weblate)
Subscriber count is always giving the short count.
We can't get exact number since this YouTube update: https://support.google.com/youtube/thread/6543166
But only short count (B, M, k), so showing full number, eg for 1.9M: 1,900,000, is wrong because the number could be 1,923,490 or 1,897,789…
Added a « sytem default » option to content language and country language selector.
It's the one selected by default (not en-GB anymore then), and correspond to the
language of the system / country of the system
By system I mean phone, tablet, TV…
Fixed russian showing - before time ago (eg 19hrs ago)
This is a workaround fix, I opened an issue on prettytime library repo.
Fixed russian plurals:
other was used instead of many for videos and subscribers
Fixed seek_duration english only
* migrate few annotations to androidx
* mission recovery: better error handling (except StreamExtractor.getErrorMessage() method always returns an error)
* post-processing: more detailed progress
[file specific changes]
DownloadMission.java
* remove redundant/boilerplate code (again)
* make few variables volatile
* better file "length" approximation
* use "done" variable to count the amount of bytes downloaded (simplify percent calc in UI code)
Postprocessing.java
* if case of error use "ERROR_POSTPROCESSING" instead of "ERROR_UNKNOWN_EXCEPTION"
* simplify source stream init
DownloadManager.java
* move all "service message sending" code to DownloadMission
* remove not implemented method "notifyUserPendingDownloads()" also his unused strings
DownloadManagerService.java
* use START_STICKY instead of START_NOT_STICKY
* simplify addMissionEventListener()/removeMissionEventListener() methods (always are called from the main thread)
Deleter.java
* better method definition
MissionAdapter.java
* better method definition
* code cleanup
* the UI is now refreshed every 750ms
* simplify download progress calculation
* indicates if the download is actually recovering
* smooth download speed measure
* show estimated remain time
MainFragment.java:
* check if viewPager is null (issued by "Apply changes" feature of Android Studio)
* implement socket timeout error
* use 128k buffer size for copy
* use NewPipe HTTP user agent in the downloads
* automatically recover downloads with network errors that are queued
* replace "In queue" to "Pending" in the downloads header to avoid confusions (all languages)
* use 29bits Clusters size to support huge video resolutions (fixes#2291) (WebmWriter.java)
* add missing changes to WebmMuxer.java (i forget select the audio track)
* re-work finished mission database
* re-work DownloadMission and bump it Serializable version
* keep the classic Java IO API
* SAF Tree API support on Android Lollipop or higher
* add wrapper for SAF stream opening
* implement Closeable in SharpStream to replace the dispose() method
* do required changes for this API:
** remove any file creation logic from DownloadInitializer
** make PostProcessing Serializable and reduce the number of iterations
** update all strings.xml files
** storage helpers: StoredDirectoryHelper & StoredFileHelper
** best effort to handle any kind of SAF errors/exceptions
Translated using Weblate (Swedish)
Currently translated at 100.0% (383 of 383 strings)
Translated using Weblate (Chinese (Mandarin))
Currently translated at 27.4% (105 of 383 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 97.1% (372 of 383 strings)
Translated using Weblate (German)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Arabic)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Basque)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Dutch)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Spanish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Catalan)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (German)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Turkish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Swedish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (French)
Currently translated at 97,1% (372 of 383 strings)
Translated using Weblate (French)
Currently translated at 97,1% (372 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Arabic)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Basque)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Dutch)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Spanish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Catalan)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Chinese (Traditional))
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (German)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Ukrainian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Swedish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Turkish)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Estonian)
Currently translated at 91.6% (351 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)
Translated using Weblate (Russian)
Currently translated at 100,0% (383 of 383 strings)