Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ android {
// Fire TV devices can be as low as Android 7.1 (API 25) or lower depending on model/OS.
minSdk = 23
targetSdk = 36
versionCode = 310
versionName = "1.9.995"
versionCode = 326
versionName = "1.10.18"
buildConfigField("String", "GITHUB_OWNER", "\"ProdigyV21\"")
buildConfigField("String", "GITHUB_REPO", "\"ARVIO\"")
buildConfigField("Boolean", "FEATURE_PLUGINS_ENABLED", "false")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ data class PlaylistCategorySection(
fun buildPlaylistCategorySections(
config: IptvConfig,
categories: List<LiveCategory>,
hiddenGroups: Set<String> = emptySet(),
): List<PlaylistCategorySection> {
val playlists = config.playlists
.asSequence()
Expand All @@ -82,7 +83,12 @@ fun buildPlaylistCategorySections(
.toList()
val knownPlaylistIds = playlists.mapTo(HashSet()) { it.id }
val configuredSections = playlists.mapNotNull { playlist ->
val providerCategories = categories.filter { it.playlistId == playlist.id }
val providerCategories = categories
.filter { it.playlistId == playlist.id }
.filterNot { category ->
val groupName = category.playlistGroupName ?: return@filterNot false
com.arflix.tv.data.model.PlaylistGroupKey.build(playlist.id, groupName) in hiddenGroups
}
providerCategories.takeIf { it.isNotEmpty() }?.let {
PlaylistCategorySection(
id = playlist.id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -762,8 +762,8 @@ fun LiveTvScreen(
val providerFilters = remember(state.config, enrichedState.value.all, lastKnownPlaylistGroupCounts) {
buildTvProviderFilters(state.config, enrichedState.value.all, lastKnownPlaylistGroupCounts)
}
val playlistCategorySections = remember(state.config, enrichedState.value.tree.global.categories) {
buildPlaylistCategorySections(state.config, enrichedState.value.tree.global.categories)
val playlistCategorySections = remember(state.config, enrichedState.value.tree.global.categories, hiddenGroupSet) {
buildPlaylistCategorySections(state.config, enrichedState.value.tree.global.categories, hiddenGroupSet)
}
LaunchedEffect(playlistCategorySections, selectedProviderId) {
if (playlistCategorySections.isNotEmpty() && selectedProviderId != "all") {
Expand Down
36 changes: 36 additions & 0 deletions reference/current-BuildConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.arflix.tv;

/* JADX INFO: loaded from: classes4.dex */
public final class BuildConfig {
public static final String APPLICATION_ID = "com.arvio.tv";
public static final String APP_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InpyZHd2b3J0Y2Zub3lrbHR6dXFmIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjY3NDU4NzMsImV4cCI6MjA4MjMyMTg3M30.YfKZbSwxGs6_xMd6jkDtn1PKkfuyOHo9qVhUvFRddGU";
public static final String BUILD_TYPE = "debug";
public static final String DISCORD_APPLICATION_ID = "1501197333826637835";
public static final String DISCORD_CLIENT_ID = "1501197333826637835";
public static final String FLAVOR = "sideload";
public static final String GITHUB_OWNER = "ProdigyV21";
public static final String GITHUB_REPO = "ARVIO";
public static final String GOOGLE_WEB_CLIENT_ID = "759525810690-nhdup5bn28a82ohsihk2mb1ah4jlt2q1.apps.googleusercontent.com";
public static final String NETLIFY_BACKEND_URL = "https://auth.arvio.tv/.netlify/functions";
public static final String SENTRY_DSN = "disabled";
public static final String SIMKL_CLIENT_ID = "your-simkl-client-id";
public static final String SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InpyZHd2b3J0Y2Zub3lrbHR6dXFmIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjY3NDU4NzMsImV4cCI6MjA4MjMyMTg3M30.YfKZbSwxGs6_xMd6jkDtn1PKkfuyOHo9qVhUvFRddGU";
public static final String SUPABASE_URL = "https://zrdwvortcfnoykltzuqf.supabase.co";
public static final String TMDB_API_KEY = "080380c1ad7b3967af3def25159e4374";
public static final String TRAKT_CLIENT_ID = "234d1a473e25d15ad05127370529a567547b7b86890bdc00f735ea1757d8d157";
public static final String TRAKT_CLIENT_SECRET = "279892ce27b152dd72e1c2f8171a280e35e98cd4e2dc729eda279892ce27b152";
public static final int VERSION_CODE = 311;
public static final String VERSION_NAME = "1.9.996-debug";
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final Boolean DISCORD_RICH_PRESENCE_AVAILABLE = false;
public static final Boolean ENABLE_CRASH_REPORTING = false;
public static final Boolean ENABLE_NETLIFY_CLOUD_SYNC = true;
public static final Boolean ENABLE_PERIODIC_CLOUD_PULL = false;
public static final Boolean ENABLE_REALTIME_CLOUD_SYNC = true;
public static final Boolean ENABLE_REALTIME_WATCH_SYNC = false;
public static final Boolean ENABLE_SUPABASE_SYNC_MIRROR = false;
public static final Boolean ENABLE_TMDB_EDGE_PROXY = false;
public static final Boolean ENABLE_TRAKT_EDGE_PROXY = false;
public static final Boolean FEATURE_PLUGINS_ENABLED = true;
public static final Boolean SELF_UPDATE_ENABLED = true;
}
50 changes: 50 additions & 0 deletions reference/extract_official_build_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/usr/bin/env python3
"""Extract selected ARVIO BuildConfig values without printing secrets."""
from pathlib import Path
import json
import re

ROOT = Path(__file__).resolve().parents[1]
SOURCE = ROOT / "reference/official-playstore-jadx/sources/com/arflix/tv/BuildConfig.java"
DEST = ROOT / "secrets.properties"

text = SOURCE.read_text(encoding="utf-8")
pairs = re.findall(
r'public static final String ([A-Z0-9_]+) = "((?:\\.|[^"\\])*)";',
text,
)
constants = {name: json.loads(f'"{raw}"') for name, raw in pairs}

keys = [
"SUPABASE_URL",
"SUPABASE_ANON_KEY",
"APP_ANON_KEY",
"NETLIFY_BACKEND_URL",
"TMDB_API_KEY",
"TRAKT_CLIENT_ID",
"TRAKT_CLIENT_SECRET",
"SIMKL_CLIENT_ID",
"GOOGLE_WEB_CLIENT_ID",
]
missing = [key for key in keys if key not in constants]
if missing:
raise SystemExit(f"Missing expected constants: {', '.join(missing)}")

lines = [
"# Extracted locally from the official ARVIO Play build for fork testing.",
"# This file is gitignored. Do not commit.",
]
for key in keys:
lines.append(f"{key}={constants[key]}")

# The build script reads DISCORD_CLIENT_ID, while BuildConfig names the output
# field DISCORD_APPLICATION_ID.
if "DISCORD_APPLICATION_ID" in constants:
lines.append(f"DISCORD_CLIENT_ID={constants['DISCORD_APPLICATION_ID']}")

DEST.write_text("\n".join(lines) + "\n", encoding="utf-8")
DEST.chmod(0o600)
print(f"Wrote {len(lines) - 2} keys to {DEST}")
for key in keys:
value = constants[key]
print(f"{key}: length={len(value)}, placeholder={value.startswith('your-')}")
Loading
Loading