From 2dc57df85fbd98b306d99afcdeb7090e8daa3048 Mon Sep 17 00:00:00 2001 From: Pauljd Date: Sun, 1 Nov 2026 23:34:40 +0000 Subject: [PATCH] Add Terra and Paradox, built from named shows in the library (0.36.0) Co-Authored-By: Claude Opus 5.5 (1M context) --- VERIFICATION-0.36.0.md | 18 +++++ android/app/build.gradle.kts | 4 +- .../java/tv/orbit/classic/ChannelBranding.kt | 4 +- .../java/tv/orbit/classic/ChannelPresets.kt | 26 +++++++ .../main/java/tv/orbit/classic/EmbyClient.kt | 2 +- .../tv/orbit/classic/EmbyConnectionScreen.kt | 39 ++++++++-- .../tv/orbit/classic/EmbyPlaybackProtocol.kt | 28 ++++++- .../java/tv/orbit/classic/RememberedState.kt | 18 ++++- .../tv/orbit/classic/SecureMediaDataSource.kt | 2 +- .../java/tv/orbit/classic/SeriesDiscovery.kt | 32 ++++---- .../orbit_terra_background.webp | Bin 0 -> 32784 bytes .../res/drawable-nodpi/orbit_terra_bug.webp | Bin 0 -> 4648 bytes .../res/drawable-nodpi/orbit_terra_epg.webp | Bin 0 -> 4886 bytes .../drawable-nodpi/paradox_background.webp | Bin 0 -> 60992 bytes .../main/res/drawable-nodpi/paradox_bug.webp | Bin 0 -> 3566 bytes .../main/res/drawable-nodpi/paradox_epg.webp | Bin 0 -> 6336 bytes .../tv/orbit/classic/ChannelPresetsTest.kt | 73 ++++++++++++++++++ 17 files changed, 215 insertions(+), 31 deletions(-) create mode 100644 VERIFICATION-0.36.0.md create mode 100644 android/app/src/main/java/tv/orbit/classic/ChannelPresets.kt create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_terra_background.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_terra_bug.webp create mode 100644 android/app/src/main/res/drawable-nodpi/orbit_terra_epg.webp create mode 100644 android/app/src/main/res/drawable-nodpi/paradox_background.webp create mode 100644 android/app/src/main/res/drawable-nodpi/paradox_bug.webp create mode 100644 android/app/src/main/res/drawable-nodpi/paradox_epg.webp create mode 100644 android/app/src/test/java/tv/orbit/classic/ChannelPresetsTest.kt diff --git a/VERIFICATION-0.36.0.md b/VERIFICATION-0.36.0.md new file mode 100644 index 0000000..8fea698 --- /dev/null +++ b/VERIFICATION-0.36.0.md @@ -0,0 +1,18 @@ +# Orbit TV 0.36.0 verification + +Two new channels, built by the app from Paul's library. Includes 0.35's bar fix and scrolling guide, which weren't installed on their own. + +## Changed +- 140 Orbit Terra (Documentaries) and 152 Orbit Paradox (Entertainment), with their approved logos and backgrounds. The numbers come from the design and are placeholders. +- A build button for each in Connect Emby, behind the gear. It searches for the preset's shows (Terra: Blue Planet, Planet Earth, Frozen Planet, Life, Our Planet; Paradox: The X-Files, Buffy the Vampire Slayer, Supernatural, Fringe, Doctor Who), uses the first three found, takes up to five regular episodes of each, and opens each once to confirm it plays. It then reports what it used and what wasn't found. +- The saved settings file gains an optional list of extra channels. Files saved before this still open, and channels 101 to 103 aren't touched. The catalogue database doesn't change. +- Building a channel no longer forgets Vortex's episodes until the next restart, which would have stopped Vortex tuning. + +## Checked +- assembleDebug, testDebugUnitTest and lintDebug pass; 149 tests, 0 failures. Tests cover show matching, episode filtering, saving and restoring the new channels, and opening an older saved file. +- APK signature verified with apksigner. + +## Not checked +- Not yet run on the box. Which shows Paul's library has, and whether matching picks the right versions, can only be seen there. +- Going back to an older build after saving with Terra or Paradox selected would make that build reject the saved setup and ask for sign-in. +- These are proof channels: at most 15 episodes, looping. Rotation and rolling schedules are later roadmap work. diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 5ad43ae..72f21aa 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -9,8 +9,8 @@ android { applicationId = "tv.orbit.classic" minSdk = 26 targetSdk = 36 - versionCode = 36 - versionName = "0.35.0-guide-scroll" + versionCode = 37 + versionName = "0.36.0-paradox-terra" } buildFeatures { compose = true } compileOptions { sourceCompatibility = JavaVersion.VERSION_17; targetCompatibility = JavaVersion.VERSION_17 } diff --git a/android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt b/android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt index dcf77ab..fe13e84 100644 --- a/android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt +++ b/android/app/src/main/java/tv/orbit/classic/ChannelBranding.kt @@ -6,7 +6,9 @@ internal object ChannelBrands { private val brands = mapOf( 101 to ChannelBranding("orbit-1", "Orbit 1", R.drawable.orbit_one_epg, R.drawable.orbit_one_background, R.drawable.orbit_one_bug, ChannelCategory.Entertainment), 102 to ChannelBranding("orbit-after-dark", "Orbit After Dark", R.drawable.orbit_after_dark_epg, R.drawable.orbit_after_dark_background, R.drawable.orbit_after_dark_bug, ChannelCategory.Movies), - 103 to ChannelBranding("vortex", "Vortex", R.drawable.vortex_epg, R.drawable.vortex_background, R.drawable.vortex_bug, ChannelCategory.Entertainment)) + 103 to ChannelBranding("vortex", "Vortex", R.drawable.vortex_epg, R.drawable.vortex_background, R.drawable.vortex_bug, ChannelCategory.Entertainment), + 140 to ChannelBranding("orbit-terra", "Orbit Terra", R.drawable.orbit_terra_epg, R.drawable.orbit_terra_background, R.drawable.orbit_terra_bug, ChannelCategory.Documentaries), + 152 to ChannelBranding("paradox", "Orbit Paradox", R.drawable.paradox_epg, R.drawable.paradox_background, R.drawable.paradox_bug, ChannelCategory.Entertainment)) fun forNumber(number: Int): ChannelBranding? = brands[number] /** Saved channels keep their original names; what the viewer sees comes from the brand. */ fun displayName(channel: SampleChannel) = brands[channel.number]?.displayName ?: channel.name diff --git a/android/app/src/main/java/tv/orbit/classic/ChannelPresets.kt b/android/app/src/main/java/tv/orbit/classic/ChannelPresets.kt new file mode 100644 index 0000000..5d7e814 --- /dev/null +++ b/android/app/src/main/java/tv/orbit/classic/ChannelPresets.kt @@ -0,0 +1,26 @@ +package tv.orbit.classic + +/** A channel the app can build from named shows. Numbers follow the design and may change with the generic channel list. */ +internal data class ChannelPreset(val number: Int, val name: String, val searches: List) + +internal val ChannelPresets = listOf( + ChannelPreset(140, "Terra", listOf("Blue Planet", "Planet Earth", "Frozen Planet", "Life", "Our Planet")), + ChannelPreset(152, "Paradox", listOf("The X-Files", "Buffy the Vampire Slayer", "Supernatural", "Fringe", "Doctor Who"))) + +/** What a build used, so the viewer can see what the library did and didn't have. */ +internal class PresetBuild(val channel: SampleChannel, val shows: List, val missing: List) + +private fun seriesKey(title: String) = title.lowercase(java.util.Locale.ROOT).replace(Regex("[^a-z0-9 ]"), " ").trim().removePrefix("the ").replace(Regex(" +"), " ") + +/** The same title, or else the title with something after it, such as Blue Planet II. Oldest first, so an original beats its revival. */ +internal fun bestSeriesMatch(requested: String, candidates: List): SeriesCandidate? { + val key = seriesKey(requested) + val oldest = compareBy { it.year ?: Int.MAX_VALUE } + return candidates.filter { seriesKey(it.title) == key }.minWithOrNull(oldest) + ?: candidates.filter { seriesKey(it.title).startsWith("$key ") }.minWithOrNull(oldest) +} + +/** Keeps numbered regular episodes, once each. A show with none is left out rather than failing the channel. */ +internal fun regularEpisodes(groups: List): List = groups.map { group -> + group.copy(episodes = group.episodes.filter { (it.season ?: 0) >= 1 && (it.episode ?: 0) >= 1 }.distinctBy { it.season to it.episode }) +}.filter { it.episodes.isNotEmpty() } diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt b/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt index 0c8759c..e120d62 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyClient.kt @@ -41,7 +41,7 @@ internal class HttpsEmbyTransport(internal val deviceId: String = UUID.randomUUI connection.connectTimeout = 10_000 connection.readTimeout = request.readTimeoutMs ?: if (request.path == "/Sessions/Logout") 5_000 else 15_000 connection.setRequestProperty("Accept", "application/json") - connection.setRequestProperty("X-Emby-Authorization", "Emby Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.35.0\"") + connection.setRequestProperty("X-Emby-Authorization", "Emby Client=\"Orbit TV\", Device=\"Orbit TV\", DeviceId=\"$deviceId\", Version=\"0.36.0\"") request.token?.let { connection.setRequestProperty("X-Emby-Token", it) } if (request.method == "POST") { val bytes = request.body.orEmpty().toByteArray(Charsets.UTF_8) diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt b/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt index 13d9860..9d13536 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyConnectionScreen.kt @@ -85,6 +85,7 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea var lastNumber by remember { mutableStateOf(null) } var afterDarkChannel by remember { mutableStateOf(null) } var toonamiChannel by remember { mutableStateOf(null) } + var extraChannels by remember { mutableStateOf>(emptyList()) } var selectedNumber by remember { mutableIntStateOf(101) } var channel by remember { mutableStateOf(null) } var watchingChannel by remember { mutableStateOf(false) } @@ -108,9 +109,9 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea fun clearPassword() { password.edit { replace(0, length, "") } } fun applyChoices(saved: RememberedState) { seriesMatches = saved.matches.takeIf { it.isNotEmpty() }; approvedSeries = saved.approved - episodeSamples = saved.episodes; channel = saved.orbitOne; toonamiChannel = saved.toonami + episodeSamples = saved.episodes; channel = saved.orbitOne; toonamiChannel = saved.toonami; extraChannels = saved.extra darkMovies = saved.darkMovies; approvedDark = saved.approvedDark; afterDarkChannel = saved.afterDark - val available = availableSampleChannels(channel, afterDarkChannel, toonamiChannel) + val available = availableSampleChannels(channel, afterDarkChannel, toonamiChannel, *extraChannels.toTypedArray()) selectedNumber = available.firstOrNull { it.number == saved.selectedNumber }?.number ?: available.firstOrNull()?.number ?: 101 onChannelAvailable(available.isNotEmpty()) } @@ -127,7 +128,7 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea seriesMatches = null; episodeSamples = null; reviewingSeries = false; approvedSeries = emptySet() darkMovies = emptyList(); approvedDark = emptySet(); reviewingDark = false; afterDarkChannel = null metadataCoverage = null; reviewingCoverage = false; reviewingCatalogue = false; catalogueSummary = null; catalogueRun = null; reviewingHealth = false; libraryHealth = null; lastNumber = null - playback = null; session = null; sample = null; channel = null; toonamiChannel = null; selectedNumber = 101; watchingChannel = false + playback = null; session = null; sample = null; channel = null; toonamiChannel = null; extraChannels = emptyList(); selectedNumber = 101; watchingChannel = false onChannelAvailable(false) sessionSlot.clear()?.let { active -> EmbyCleanup.run { active.close() } } } @@ -185,14 +186,14 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea message = "The saved connection could not be opened. Sign in again." } finally { restoring = false; onRestoreChecked() } } - LaunchedEffect(session, seriesMatches, approvedSeries, episodeSamples, channel, toonamiChannel, selectedNumber, restoring, afterDarkChannel, darkMovies, approvedDark) { + LaunchedEffect(session, seriesMatches, approvedSeries, episodeSamples, channel, toonamiChannel, extraChannels, selectedNumber, restoring, afterDarkChannel, darkMovies, approvedDark) { val active = session if (active != null && !restoring) { setupSaved = false delay(100) try { val saved = RememberedState(active.rememberedIdentity(), active.sample, seriesMatches.orEmpty(), - approvedSeries, episodeSamples, channel, toonamiChannel, selectedNumber, afterDarkChannel, darkMovies, approvedDark) + approvedSeries, episodeSamples, channel, toonamiChannel, selectedNumber, afterDarkChannel, darkMovies, approvedDark, extraChannels) val ticket = saveTicket if (withContext(Dispatchers.IO) { savedStore.save(saved, ticket) }) { pendingSaved = saved; setupSaved = true @@ -219,7 +220,7 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea val ready = !busy && !restoring && now >= nextAttemptAt && username.isNotBlank() && password.text.isNotEmpty() playback?.let { plan -> session?.let { active -> EmbyPlaybackDialog(active, plan, onClose = { playback = null }) } } val liveSession = session - val availableChannels = availableSampleChannels(channel, afterDarkChannel, toonamiChannel) + val availableChannels = availableSampleChannels(channel, afterDarkChannel, toonamiChannel, *extraChannels.toTypedArray()) val liveChannel = availableChannels.firstOrNull { it.number == selectedNumber } if ((mainGuide || mainHome) && liveSession != null && liveChannel != null) { if (watchingChannel) ScheduledChannelPlayer(liveSession, liveChannel, channelClockOffset, @@ -367,6 +368,27 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea }, onBack = { job?.cancel(); busy = false; reviewingDark = false }) return } + fun buildPreset(preset: ChannelPreset) { + val active = session ?: return + if (busy) return + busy = true; busyLabel = "Building ${preset.name}. This checks each episode, so it can take a few minutes…"; message = null + job = scope.launch { + try { + val built = withContext(Dispatchers.IO) { + val context = coroutineContext + active.buildPresetChannel(preset) { context.ensureActive() } + } + extraChannels = extraChannels.filter { it.number != preset.number } + built.channel + selectedNumber = preset.number + onChannelAvailable(true) + message = "${preset.name} is ready with ${built.channel.lineup.size} episodes from ${built.shows.joinToString()}." + + if (built.missing.isEmpty()) "" else " Not found: ${built.missing.joinToString()}." + } catch (cancelled: CancellationException) { throw cancelled } + catch (failure: EmbyCheckException) { message = failure.message } + catch (_: Exception) { message = "${preset.name} could not be built. Try again later." } + finally { busy = false } + } + } fun checkMoreSeries() { val active = session ?: return if (busy) return @@ -548,6 +570,11 @@ internal fun EmbyConnectionScreen(modifier: Modifier = Modifier, visible: Boolea Modifier.fillMaxWidth(), enabled = !busy && session != null, onClick = { if (seriesMatches != null) reviewingSeries = true else checkMoreSeries() }) + ChannelPresets.forEach { preset -> + val built = extraChannels.any { it.number == preset.number } + OrbitButton("${preset.number} ${preset.name} — ${if (built) "rebuild" else "build"}", Modifier.fillMaxWidth(), + enabled = !busy && session != null, onClick = { buildPreset(preset) }) + } OrbitButton("Check metadata coverage", Modifier.fillMaxWidth(), enabled = !busy && session != null, onClick = { message = null; reviewingCoverage = true }) OrbitButton("Library import test", Modifier.fillMaxWidth(), diff --git a/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt b/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt index 7179a5e..b3f62ea 100644 --- a/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt +++ b/android/app/src/main/java/tv/orbit/classic/EmbyPlaybackProtocol.kt @@ -57,7 +57,7 @@ internal class EmbySampleSession(private val transport: EmbyTransport, private v sample = saved.sample checkedEpisodes = saved.episodes.orEmpty() candidateEpisodes = checkedEpisodes.flatMap { group -> group.episodes.map { episodeSampleItem(group.series, it) } }.associateBy { it.id } - channelEpisodes = saved.toonami?.lineup.orEmpty().associate { it.item.id to it.item } + channelEpisodes = (saved.toonami?.lineup.orEmpty() + saved.extra.flatMap { it.lineup }).associate { it.item.id to it.item } darkCandidates = saved.darkMovies darkLineup = saved.afterDark?.lineup.orEmpty().associate { it.item.id to it.item } } @@ -153,9 +153,33 @@ internal class EmbySampleSession(private val transport: EmbyTransport, private v } checkActive(); currentToken() val channel = SampleChannel(media, "Toonami", 103) - channelEpisodes = ordered.associateBy { it.id } + channelEpisodes = channelEpisodes + ordered.associateBy { it.id } return channel } + /** Finds the preset's shows in the library and opens each episode once to confirm it plays. An episode that won't open is skipped. */ + fun buildPresetChannel(preset: ChannelPreset, checkActive: () -> Unit = {}): PresetBuild { + val found = mutableListOf() + val missing = mutableListOf() + for (search in preset.searches) { + if (found.size == 3) break + checkActive() + val match = bestSeriesMatch(search, searchSeries(transport, userId, ::currentToken, search).candidates) + if (match != null && found.none { it.id == match.id }) found += match else missing += search + } + if (found.isEmpty()) throw EmbyCheckException("None of ${preset.name}'s shows were found in your library.") + val groups = regularEpisodes(discoverSeriesEpisodes(transport, userId, ::currentToken, found, checkActive)) + if (groups.isEmpty()) throw EmbyCheckException("${preset.name}'s shows have no numbered episodes to schedule.") + val ordered = toonamiEpisodeOrder(groups) + channelEpisodes = channelEpisodes + ordered.associateBy { it.id } + val media = ordered.mapNotNull { item -> + checkActive() + val plan = try { prepare(item, isPlayback = false) } catch (_: EmbyCheckException) { return@mapNotNull null } + plan.durationMs?.takeIf { it in 1_000..SampleChannel.MAX_DURATION_MS }?.let { ScheduledMedia(item, plan.sourceId, it) } + } + if (media.size < 2) throw EmbyCheckException("Too few of ${preset.name}'s episodes could be opened. Try again later.") + checkActive(); currentToken() + return PresetBuild(SampleChannel(media, preset.name, preset.number), groups.map { it.series.title }, missing) + } fun checkMetadataCoverage(checkActive: () -> Unit = {}): List = auditMetadataCoverage(transport, userId, ::currentToken, checkActive) diff --git a/android/app/src/main/java/tv/orbit/classic/RememberedState.kt b/android/app/src/main/java/tv/orbit/classic/RememberedState.kt index 307bf38..a926400 100644 --- a/android/app/src/main/java/tv/orbit/classic/RememberedState.kt +++ b/android/app/src/main/java/tv/orbit/classic/RememberedState.kt @@ -8,9 +8,9 @@ internal class RememberedIdentity(val userId: String, val token: String?, val de internal class RememberedState(val identity: RememberedIdentity, val sample: EmbySample, val matches: List, val approved: Set, val episodes: List?, val orbitOne: SampleChannel?, val toonami: SampleChannel?, val selectedNumber: Int, - val afterDark: SampleChannel? = null, val darkMovies: List = emptyList(), val approvedDark: Set = emptySet()) { + val afterDark: SampleChannel? = null, val darkMovies: List = emptyList(), val approvedDark: Set = emptySet(), val extra: List = emptyList()) { fun withoutToken() = RememberedState(RememberedIdentity(identity.userId, null, identity.deviceId), sample, - matches, approved, episodes, orbitOne, toonami, selectedNumber, afterDark, darkMovies, approvedDark) + matches, approved, episodes, orbitOne, toonami, selectedNumber, afterDark, darkMovies, approvedDark, extra) } internal object RememberedStateCodec { @@ -33,6 +33,7 @@ internal object RememberedStateCodec { .put("darkMovies", arr(state.darkMovies.map { movie -> JSONObject().put("item", item(movie.item)).put("year", movie.year ?: JSONObject.NULL) .put("rating", movie.rating).put("genres", JSONArray(movie.genres)) })) .put("approvedDark", JSONArray(state.approvedDark.toList())) + .put("extra", arr(state.extra.map { channel(it) as JSONObject })) .put("one", channel(state.orbitOne)).put("toonami", channel(state.toonami)) .put("episodes", state.episodes?.let { groups -> arr(groups.map { group -> JSONObject().put("series", candidate(group.series)).put("more", group.moreAvailable) .put("items", arr(group.episodes.map { e -> JSONObject().put("id", e.id).put("title", e.title) @@ -57,6 +58,9 @@ internal object RememberedStateCodec { private fun readChannel(o: JSONObject, key: String, number: Int): SampleChannel? { if (o.isNull(key)) return null val c = o.getJSONObject(key); require(c.getInt("number") == number) + return readEntries(c, number) + } + private fun readEntries(c: JSONObject, number: Int): SampleChannel { return SampleChannel(list(c, "entries", 15).map { m -> ScheduledMedia(readItem(m.getJSONObject("item")), id(m, "source"), requireNotNull(duration(m))) }, text(c, "name", 80, false), number) } fun decode(bytes: ByteArray): RememberedState { @@ -91,7 +95,13 @@ internal object RememberedStateCodec { require(darkApproval.length() <= 3) val approvedDark = (0 until darkApproval.length()).map { darkApproval.getString(it) }.toSet() require(approvedDark.all { value -> darkMovies.any { it.item.id == value } }) - val selected = o.optInt("selectedChannel", o.getInt("selected")); require(selected in 101..103) - return RememberedState(identity, sample, matches, approved, episodes, one, toonami, selected, dark, darkMovies, approvedDark) + // Absent in files saved before presets existed. + val extra = if (!o.has("extra")) emptyList() else list(o, "extra", ChannelPresets.size).map { c -> + val number = c.getInt("number"); require(ChannelPresets.any { it.number == number }) + readEntries(c, number) + } + require(extra.map { it.number }.distinct().size == extra.size) + val selected = o.optInt("selectedChannel", o.getInt("selected")); require(selected in 101..103 || ChannelPresets.any { it.number == selected }) + return RememberedState(identity, sample, matches, approved, episodes, one, toonami, selected, dark, darkMovies, approvedDark, extra) } } diff --git a/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt b/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt index 4a9a15d..8f02b50 100644 --- a/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt +++ b/android/app/src/main/java/tv/orbit/classic/SecureMediaDataSource.kt @@ -33,7 +33,7 @@ internal class SecureMediaDataSource(private val session: EmbySampleSession) : B next.instanceFollowRedirects = false next.connectTimeout = 10_000 next.readTimeout = 20_000 - next.setRequestProperty("User-Agent", "OrbitTV/0.35.0") + next.setRequestProperty("User-Agent", "OrbitTV/0.36.0") next.setRequestProperty("Accept-Encoding", "identity") session.mediaHeaders(address).forEach { (key, value) -> next.setRequestProperty(key, value) } if (dataSpec.position != 0L || dataSpec.length != C.LENGTH_UNSET.toLong()) { diff --git a/android/app/src/main/java/tv/orbit/classic/SeriesDiscovery.kt b/android/app/src/main/java/tv/orbit/classic/SeriesDiscovery.kt index f2391ee..d445f2b 100644 --- a/android/app/src/main/java/tv/orbit/classic/SeriesDiscovery.kt +++ b/android/app/src/main/java/tv/orbit/classic/SeriesDiscovery.kt @@ -17,23 +17,27 @@ internal fun discoverToonamiSeries(transport: EmbyTransport, userId: String, tok require(startIndex in 0..ToonamiSearches.size) return ToonamiSearches.drop(startIndex).take(5).map { requested -> checkActive() - val term = URLEncoder.encode(requested, "UTF-8") - val reply = transport.execute(EmbyRequest("GET", "/Items?UserId=$userId&Recursive=true&IncludeItemTypes=Series&SearchTerm=$term&StartIndex=0&Limit=10&SortBy=SortName&SortOrder=Ascending&EnableImages=false&EnableUserData=false", token = token())) - EmbyClient.expectSuccess(reply.status, false) - val body = EmbyClient.parse(reply.body) - val items = body.optJSONArray("Items") ?: throw EmbyCheckException("The provider did not return series search results.") - val candidates = (0 until minOf(items.length(), 10)).mapNotNull { index -> - val item = items.optJSONObject(index) ?: return@mapNotNull null - val id = item.optString("Id") - val title = EmbyClient.clean(item.optString("Name"), 160) - if (item.optString("Type") != "Series" || !EmbyClient.validId(id) || title.isBlank()) return@mapNotNull null - SeriesCandidate(id, title, item.optInt("ProductionYear").takeIf { it in 1800..2200 }, - EmbyClient.clean(item.optString("OfficialRating"), 40)) - }.distinctBy { it.id } - SeriesMatches(requested, labelSeriesVariants(candidates), body.optLong("TotalRecordCount", items.length().toLong()) > 10) + searchSeries(transport, userId, token, requested) } } +internal fun searchSeries(transport: EmbyTransport, userId: String, token: () -> String, requested: String): SeriesMatches { + val term = URLEncoder.encode(requested, "UTF-8") + val reply = transport.execute(EmbyRequest("GET", "/Items?UserId=$userId&Recursive=true&IncludeItemTypes=Series&SearchTerm=$term&StartIndex=0&Limit=10&SortBy=SortName&SortOrder=Ascending&EnableImages=false&EnableUserData=false", token = token())) + EmbyClient.expectSuccess(reply.status, false) + val body = EmbyClient.parse(reply.body) + val items = body.optJSONArray("Items") ?: throw EmbyCheckException("The provider did not return series search results.") + val candidates = (0 until minOf(items.length(), 10)).mapNotNull { index -> + val item = items.optJSONObject(index) ?: return@mapNotNull null + val id = item.optString("Id") + val title = EmbyClient.clean(item.optString("Name"), 160) + if (item.optString("Type") != "Series" || !EmbyClient.validId(id) || title.isBlank()) return@mapNotNull null + SeriesCandidate(id, title, item.optInt("ProductionYear").takeIf { it in 1800..2200 }, + EmbyClient.clean(item.optString("OfficialRating"), 40)) + }.distinctBy { it.id } + return SeriesMatches(requested, labelSeriesVariants(candidates), body.optLong("TotalRecordCount", items.length().toLong()) > 10) +} + internal fun discoverToonamiSeries(transport: EmbyTransport, userId: String, token: () -> String): List = discoverToonamiSeries(transport, userId, token, 0) diff --git a/android/app/src/main/res/drawable-nodpi/orbit_terra_background.webp b/android/app/src/main/res/drawable-nodpi/orbit_terra_background.webp new file mode 100644 index 0000000000000000000000000000000000000000..d6adf7314f72d168244edc34b9e2fa1b43951c00 GIT binary patch literal 32784 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/orbit_terra_epg.webp b/android/app/src/main/res/drawable-nodpi/orbit_terra_epg.webp new file mode 100644 index 0000000000000000000000000000000000000000..8dea00ccde76db071350afa85762c2fc642c0e6a GIT binary patch literal 4886 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%0D>%nS>*yn} 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π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≷j!~m!giV?XZPIzjY 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 NE19vB!HjFP?0}Y^jT`^~ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/paradox_bug.webp b/android/app/src/main/res/drawable-nodpi/paradox_bug.webp new file mode 100644 index 0000000000000000000000000000000000000000..9ae4b46b927dbed60d9bfd0eb86e0e32bdcc84a7 GIT binary patch literal 3566 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-nodpi/paradox_epg.webp b/android/app/src/main/res/drawable-nodpi/paradox_epg.webp new file mode 100644 index 0000000000000000000000000000000000000000..0bb857d0d881e76d145e03c87daeaba236fa06c9 GIT binary patch literal 6336 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, selected: Int) = RememberedState(RememberedIdentity("fixture-user", "fixture-token", "fixture-device"), + EmbySample(emptyList(), 0), emptyList(), emptySet(), null, null, null, selected, extra = extra) + + @Test + fun presetChannelsSurviveASaveAndRestore() { + val terra = SampleChannel(listOf(media("a"), media("b")), "Terra", 140) + val restored = RememberedStateCodec.decode(RememberedStateCodec.encode(state(listOf(terra), 140))) + assertEquals(listOf(140), restored.extra.map { it.number }) + assertEquals(140, restored.selectedNumber) + assertEquals(listOf("a", "b"), restored.extra.single().lineup.map { it.item.id }) + } + + @Test + fun aFileSavedBeforePresetsStillOpens() { + val saved = JSONObject(String(RememberedStateCodec.encode(state(emptyList(), 101)))) + saved.remove("extra") + assertTrue(RememberedStateCodec.decode(saved.toString().toByteArray()).extra.isEmpty()) + } + + @Test + fun aChannelNumberThatIsNotAPresetIsRejected() { + val saved = JSONObject(String(RememberedStateCodec.encode(state(listOf(SampleChannel(listOf(media("a"), media("b")), "Terra", 140)), 101)))) + saved.getJSONArray("extra").getJSONObject(0).put("number", 999) + assertThrows(Exception::class.java) { RememberedStateCodec.decode(saved.toString().toByteArray()) } + } +}