1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2025-02-02 12:19:16 +00:00

media browser: pass media ID to parsing error exceptions

This commit is contained in:
Haggai Eran 2024-09-17 22:46:55 +03:00 committed by Siddhesh Naik
parent fad463a403
commit b462c97ecd

View File

@ -304,11 +304,11 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
} }
} }
Log.w(TAG, "Unknown playlist URI: $parentId") Log.w(TAG, "Unknown playlist URI: $parentId")
throw parseError() throw parseError(parentId)
} }
ID_HISTORY -> return populateHistory() ID_HISTORY -> return populateHistory()
else -> throw parseError() else -> throw parseError(parentId)
} }
} catch (e: ContentNotAvailableException) { } catch (e: ContentNotAvailableException) {
return Single.error(e) return Single.error(e)
@ -432,7 +432,7 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
val path = ArrayList(mediaIdUri.pathSegments) val path = ArrayList(mediaIdUri.pathSegments)
if (path.isEmpty()) { if (path.isEmpty()) {
throw parseError() throw parseError(mediaId)
} }
val uriType = path[0] val uriType = path[0]
@ -440,17 +440,19 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
return when (uriType) { return when (uriType) {
ID_BOOKMARKS -> extractPlayQueueFromPlaylistMediaId( ID_BOOKMARKS -> extractPlayQueueFromPlaylistMediaId(
mediaId,
path, path,
mediaIdUri.getQueryParameter(ID_URL) mediaIdUri.getQueryParameter(ID_URL)
) )
ID_HISTORY -> extractPlayQueueFromHistoryMediaId(path) ID_HISTORY -> extractPlayQueueFromHistoryMediaId(mediaId, path)
ID_INFO_ITEM -> extractPlayQueueFromInfoItemMediaId( ID_INFO_ITEM -> extractPlayQueueFromInfoItemMediaId(
mediaId,
path, path,
mediaIdUri.getQueryParameter(ID_URL) mediaIdUri.getQueryParameter(ID_URL)
) )
else -> throw parseError() else -> throw parseError(mediaId)
} }
} catch (error: ContentNotAvailableException) { } catch (error: ContentNotAvailableException) {
return Single.error(error) return Single.error(error)
@ -459,11 +461,12 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
@Throws(ContentNotAvailableException::class) @Throws(ContentNotAvailableException::class)
private fun extractPlayQueueFromPlaylistMediaId( private fun extractPlayQueueFromPlaylistMediaId(
mediaId: String,
mediaIdSegments: ArrayList<String>, mediaIdSegments: ArrayList<String>,
url: String?, url: String?,
): Single<PlayQueue> { ): Single<PlayQueue> {
if (mediaIdSegments.isEmpty()) { if (mediaIdSegments.isEmpty()) {
throw parseError() throw parseError(mediaId)
} }
val playlistType = mediaIdSegments.first() val playlistType = mediaIdSegments.first()
@ -472,7 +475,7 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
when (playlistType) { when (playlistType) {
ID_LOCAL, ID_REMOTE -> { ID_LOCAL, ID_REMOTE -> {
if (mediaIdSegments.size != 2) { if (mediaIdSegments.size != 2) {
throw parseError() throw parseError(mediaId)
} }
val playlistId = mediaIdSegments[0].toLong() val playlistId = mediaIdSegments[0].toLong()
val index = mediaIdSegments[1].toInt() val index = mediaIdSegments[1].toInt()
@ -485,7 +488,7 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
ID_URL -> { ID_URL -> {
if (mediaIdSegments.size != 1) { if (mediaIdSegments.size != 1) {
throw parseError() throw parseError(mediaId)
} }
val serviceId = mediaIdSegments[0].toInt() val serviceId = mediaIdSegments[0].toInt()
@ -494,16 +497,17 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
.map(::PlaylistPlayQueue) .map(::PlaylistPlayQueue)
} }
else -> throw parseError() else -> throw parseError(mediaId)
} }
} }
@Throws(ContentNotAvailableException::class) @Throws(ContentNotAvailableException::class)
private fun extractPlayQueueFromHistoryMediaId( private fun extractPlayQueueFromHistoryMediaId(
mediaId: String,
path: List<String> path: List<String>
): Single<PlayQueue> { ): Single<PlayQueue> {
if (path.size != 1) { if (path.size != 1) {
throw parseError() throw parseError(mediaId)
} }
val streamId = path[0].toLong() val streamId = path[0].toLong()
@ -692,17 +696,18 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
} }
} }
private fun parseError(): ContentNotAvailableException { private fun parseError(mediaId: String): ContentNotAvailableException {
return ContentNotAvailableException("Failed to parse media ID") return ContentNotAvailableException("Failed to parse media ID $mediaId")
} }
@Throws(ContentNotAvailableException::class) @Throws(ContentNotAvailableException::class)
private fun extractPlayQueueFromInfoItemMediaId( private fun extractPlayQueueFromInfoItemMediaId(
mediaId: String,
path: List<String>, path: List<String>,
url: String? url: String?
): Single<PlayQueue> { ): Single<PlayQueue> {
if (path.size != 2) { if (path.size != 2) {
throw parseError() throw parseError(mediaId)
} }
val infoItemType = infoItemTypeFromString(path[0]) val infoItemType = infoItemTypeFromString(path[0])
val serviceId = path[1].toInt() val serviceId = path[1].toInt()
@ -729,7 +734,7 @@ class MediaBrowserConnector(private val playerService: PlayerService) : Playback
} }
} }
else -> throw parseError() else -> throw parseError(mediaId)
} }
} }
} }