1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2026-01-13 18:22:41 +00:00

10448 Commits

Author SHA1 Message Date
tobigr
f5245eac91 Merge branch 'dev' into refactor 2026-01-09 14:09:14 +01:00
Tobi
694124814e Merge pull request #13014 from jloutsch/fix/download-resume-corruption
Fix download resume corruption when server returns HTTP 200
2026-01-08 19:05:49 -08:00
Tobi
e61bc012d9 Merge pull request #12990 from dustdfg/db_migration_kotlin
Use "factory" method for creating db migrations
2026-01-08 17:23:12 -08:00
Justin L
08008ca6f9 Fix download resume corruption when server returns HTTP 200
When resuming a download after interruption, if the server returns
HTTP 200 (full resource) instead of HTTP 206 (partial content), the
code correctly resets mMission.done but fails to reset the 'start'
variable. This causes the subsequent file seek to use a stale offset,
writing new data at incorrect positions.

This bug causes file corruption for large downloads (>5GB) that are
interrupted and resumed, particularly when:
- Switching between WiFi networks
- Server CDN returning different responses
- Connection drops during long downloads

The corruption manifests as duplicate data regions in the file,
which for MP4 downloads results in multiple MOOV atoms and
broken seek functionality.

Fix: Reset start=0 when HTTP 200 is received, ensuring the file
write position correctly restarts from the beginning of the current
resource.
2026-01-06 09:03:44 -05:00
Yevhen Babiichuk (DustDFG)
61c0d134d7 Commit all the playlist changes to db immediately
+ some additional minor code cleanup in the file
2026-01-05 22:59:14 +02:00
Yevhen Babiichuk (DustDFG)
35eb08baf0 Delete long orphaned file
Was oprhaned at 004c2fa55a
2026-01-04 13:53:43 +02:00
Mira
3369607b74 Feat: opus metadata encoding (#12974)
Feat: Downloading: Add opus audio metadata tags for title, author, date, and a comment tag with the originating URL

This removes the DownloadManagerService.EXTRA_SOURCE field, which is always inferred from the StreamInfo.
2026-01-03 02:54:07 -08:00
Yevhen Babiichuk (DustDFG)
0747b3a0a5 Use "factory" method for creating db migrations 2026-01-02 12:25:25 +02:00
Aayush Gupta
7283701073 Merge pull request #12978 from dustdfg/kotlin_merged
Conversion to kotlin of multiple files
2026-01-02 15:46:29 +08:00
Yevhen Babiichuk (DustDFG)
3ffcf11a3a Merge inheritors of newpipe/player/playqueue/PlayQueueEvent and
convert it to kotlin
2026-01-01 23:05:16 +02:00
Aayush Gupta
1fb2b4a42e Merge pull request #12981 from dustdfg/export_playlist_refactor
Refactor ExportPlaylist to use more idiomatic kotlin code
2026-01-01 21:40:05 +08:00
Yevhen Babiichuk (DustDFG)
83596ca907 Convert newpipe/settings/preferencesearch/PreferenceSearchResultListener to kotlin 2026-01-01 15:33:32 +02:00
Yevhen Babiichuk (DustDFG)
d9682f5e0a Convert newpipe/player/PlayerType to kotlin 2026-01-01 15:33:32 +02:00
Yevhen Babiichuk (DustDFG)
ab3314eb1c Convert newpipe/info_list/ItemViewMode to kotlin 2026-01-01 15:33:32 +02:00
Yevhen Babiichuk (DustDFG)
7d1d88fb87 Convert newpipe/local/playlist/PlayListShareMode to kotlin 2026-01-01 15:08:21 +02:00
Yevhen Babiichuk (DustDFG)
8379aa0a9d Refactor ExportPlaylist to use more idiomatic kotlin code 2026-01-01 15:03:29 +02:00
Yevhen Babiichuk (DustDFG)
cd4cb40e6d Convert newpipe/error/UserAction.java to kotlin 2026-01-01 11:04:19 +02:00
Yevhen Babiichuk (DustDFG)
f1b111212d Convert newpipe/util/FilenameUtils.java to kotlin
Co-authored-by: Aayush Gupta <aayushgupta219@gmail.com>
2026-01-01 11:04:19 +02:00
Yevhen Babiichuk (DustDFG)
84c646713d Convert newpipe/settings/preferencesearch/PreferenceSearchItem.java to kotlin 2026-01-01 11:04:19 +02:00
Yevhen Babiichuk (DustDFG)
873b2be9ca Convert newpipe/util/text/TimestampLongPressClickableSpan.java to kotlin
Also convert one class used by it into java record
2026-01-01 11:04:19 +02:00
Yevhen Babiichuk (DustDFG)
4ef4ed15f1 Convert newpipe/util/image/PreferredImageQuality to kotlin 2026-01-01 11:04:19 +02:00
Yevhen Babiichuk (DustDFG)
fef8a2455c Convert newpipe/util/image/ImageStrategy to kotlin 2026-01-01 11:04:19 +02:00
Yevhen Babiichuk (DustDFG)
3398b4cdc9 Convert newpipe/fragments/list/search/Suggestion{Item,ListAdapter} to kotlin 2026-01-01 11:04:19 +02:00
Yevhen Babiichuk (DustDFG)
74cf302bd6 Convert newpipe/local/playlist/RemotePlaylistManager to kotlin 2026-01-01 11:04:19 +02:00
Aayush Gupta
2e8e203276 Merge pull request #12963 from dustdfg/misc_refactor
Misc small refactors (mostly replacing old switch syntax with new)
2026-01-01 16:41:25 +08:00
Yevhen Babiichuk (DustDFG)
127064d6fc Misc small refactors (mostly replacing old switch syntax with new) 2026-01-01 10:26:56 +02:00
Aayush Gupta
93166afde4 Merge pull request #12973 from dustdfg/require_preference
Replace findPreference(getString(resId) with its null safe shortcut
2026-01-01 13:36:26 +08:00
Aayush Gupta
6c238fafbe fixup! Convert newpipe/util/KioskTranslator.java to kotlin
Copyright and license header are not doc-comments. Move them to the top of the file.
Also re-write it to follow the SPDX formatting as we have followed in the recent Kotlin
conversion.

Additionally, use a better name for the context parameter.

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
2025-12-31 17:05:17 +08:00
Tobi
e17b1a1fcc Merge pull request #12975 from dustdfg/playlist_button_work
Correct typo in playlist db sql query
2025-12-30 22:58:06 -08:00
Yevhen Babiichuk (DustDFG)
7806a708c2 Correct typo in playlist db sql query
Solve #12855
2025-12-31 05:23:14 +02:00
Yevhen Babiichuk (DustDFG)
f6085d0044 Replace findPreference(getString(resId) with its null safe shortcut 2025-12-30 13:30:37 +02:00
tobigr
0a65c862a3 Remove empty translations 2025-12-30 09:16:58 +01:00
Hosted Weblate
c9339a5a03 Translated using Weblate (French)
Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Punjabi)

Currently translated at 97.2% (743 of 764 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (87 of 87 strings)

Added translation using Weblate (Romany)

Translated using Weblate (Korean)

Currently translated at 97.7% (85 of 87 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (87 of 87 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Madalin <madalin.mail09@gmail.com>
Co-authored-by: Mona Lisa <nickwick@users.noreply.hosted.weblate.org>
Co-authored-by: NormalRandomPeople <normal.scribe833@silomails.com>
Co-authored-by: TobiGr <TobiGr@users.noreply.github.com>
Co-authored-by: whistlingwoods <72640314+whistlingwoods@users.noreply.github.com>
Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ko/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translation: NewPipe/Metadata
2025-12-29 22:06:50 +01:00
tobigr
465979e677 Do not change the aspectRation if the renderer is disabled 2025-12-29 16:41:25 +01:00
TobiGr
7101aecc98 Try to prevent invalid aspectRatio of SurfaceView
If the video's hieght is 0, the aspectRatio is set to Float.NaN which can cause further issues. Do not assign invalid values for the aspectRatio.
2025-12-29 16:30:20 +01:00
TobiGr
718335d733 fix(player): Fix scaleX being NaN on minimize to background app switch
This aims to fix the following Exception which might occour when watching a live stream and switching the app while 'minimize to backgorund' is enabled:

java.lang.IllegalArgumentException: Cannot set 'scaleX' to Float.NaN
	at android.view.View.sanitizeFloatPropertyValue(View.java:17479)
	at android.view.View.sanitizeFloatPropertyValue(View.java:17453)
	at android.view.View.setScaleX(View.java:16822)
	at org.schabi.newpipe.views.ExpandableSurfaceView.onLayout(ExpandableSurfaceView.java:71)

scaleX is set in onMeasure() in which width could be 0 in theory and this leading to a division by zero of a float which results in an assignment of Float.NaN.
2025-12-29 16:30:20 +01:00
tobigr
040b4c44ca Merge branch 'dev' into refactor
Conflicts:
VideoDetailFragment (see #12781)
libs.version.toml
2025-12-29 12:15:13 +01:00
Yevhen Babiichuk (DustDFG)
2dde0fef58 Convert newpipe/util/KioskTranslator.java to kotlin
Cherry picked from #12947 / 4649e46d1e
2025-12-27 23:13:17 +01:00
Yevhen Babiichuk (DustDFG)
c2f526d5b3 Use context.getString() shorthand instead of context.getResources().getString()
Cherry-picked from #12949 / 4360c1b873
2025-12-27 23:12:37 +01:00
Tobi
8ae5a55c4f Merge pull request #12947 from dustdfg/kotlin_refactor4
Convert newpipe/util/KioskTranslator.java to kotlin
2025-12-27 09:54:58 -08:00
TobiGr
58efbf4de8 Fix retrieving incomplete data for SubscriptionEntity
This fixes a visual bug in which the channels reported the the subscriber count was unavailable although stored in the db.

Closes #12953
2025-12-26 21:57:26 +01:00
Yevhen Babiichuk (DustDFG)
4360c1b873 Use context.getString() shorthand instead of context.getResources().getString() 2025-12-26 14:15:33 +02:00
Yevhen Babiichuk (DustDFG)
4649e46d1e Convert newpipe/util/KioskTranslator.java to kotlin 2025-12-26 11:21:10 +02:00
tobigr
3ffd194f78 Fix insufficient permissions on opening downloaded streams 2025-12-21 18:44:09 +01:00
TobiGr
535f9da422 Fix rebase 2025-12-20 21:23:58 +01:00
TobiGr
5582eac1c4 Only show enqueue option if play queue is not empty in RouterActivity
Make enqueue option avilable for playlists as well
2025-12-20 20:59:32 +01:00
Hatake Kakashri
acaaec2cde Add enqueue option to router dialog
- This allows users to enqueue a stream directly to the current player queue when sharing a link with the app, improving the user experience for queue management.
- The 'Enqueue' option is now available in the action selection dialog and can also be set as the preferred open action in the settings.
2025-12-20 20:59:25 +01:00
TobiGr
c596476c06 Only show enqueue option if play queue is not empty in RouterActivity
Make enqueue option avilable for playlists as well
2025-12-20 20:31:30 +01:00
Hatake Kakashri
90c36cb2e8 Add enqueue option to router dialog
- This allows users to enqueue a stream directly to the current player queue when sharing a link with the app, improving the user experience for queue management.
- The 'Enqueue' option is now available in the action selection dialog and can also be set as the preferred open action in the settings.
2025-12-20 20:31:30 +01:00
Damien Hardy
0607b14bb2 add indymotion.fr peertube instance on AndroidManifest.xml 2025-12-19 09:43:14 +01:00