From 7f57c5ab9aa8098b00557d10357acadbc55dedff Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Sat, 22 Feb 2025 15:30:01 +0100 Subject: [PATCH] wip --- app/(auth)/player/direct-player.tsx | 20 ++- modules/hls-downloader/android/build.gradle | 4 +- .../bundleLibCompileToJarDebug/classes.jar | Bin 60658 -> 72101 bytes .../compile-file-map.properties | 2 +- .../bundleLibRuntimeToJarDebug/classes.jar | Bin 60371 -> 71814 bytes .../caches-jvm/inputs/source-to-output.tab | Bin 4096 -> 4096 bytes .../inputs/source-to-output.tab.values.at | Bin 13104 -> 27755 bytes .../jvm/kotlin/class-attributes.tab | Bin 4096 -> 4096 bytes .../jvm/kotlin/class-attributes.tab.values.at | Bin 79 -> 109 bytes .../jvm/kotlin/class-fq-name-to-source.tab | Bin 4096 -> 4096 bytes .../class-fq-name-to-source.tab.values.at | Bin 2079 -> 4109 bytes .../jvm/kotlin/internal-name-to-source.tab | Bin 4096 -> 4096 bytes .../internal-name-to-source.tab.keystream | Bin 4096 -> 4096 bytes .../internal-name-to-source.tab.keystream.len | Bin 8 -> 8 bytes .../kotlin/internal-name-to-source.tab.len | Bin 8 -> 8 bytes .../internal-name-to-source.tab.values.at | Bin 11214 -> 23800 bytes .../jvm/kotlin/internal-name-to-source.tab_i | Bin 32768 -> 32768 bytes .../cacheable/caches-jvm/jvm/kotlin/proto.tab | Bin 4096 -> 4096 bytes .../caches-jvm/jvm/kotlin/proto.tab.values.at | Bin 7594 -> 15425 bytes .../jvm/kotlin/source-to-classes.tab | Bin 4096 -> 4096 bytes .../kotlin/source-to-classes.tab.values.at | Bin 9154 -> 19421 bytes .../caches-jvm/jvm/kotlin/subtypes.tab | Bin 4096 -> 4096 bytes .../jvm/kotlin/subtypes.tab.values.at | Bin 294 -> 539 bytes .../caches-jvm/jvm/kotlin/supertypes.tab | Bin 4096 -> 4096 bytes .../jvm/kotlin/supertypes.tab.values.at | Bin 234 -> 419 bytes .../cacheable/caches-jvm/lookups/counters.tab | 2 +- .../caches-jvm/lookups/file-to-id.tab | Bin 4096 -> 4096 bytes .../lookups/file-to-id.tab.values.at | Bin 79 -> 109 bytes .../caches-jvm/lookups/id-to-file.tab | Bin 4096 -> 4096 bytes .../lookups/id-to-file.tab.keystream | Bin 4096 -> 4096 bytes .../lookups/id-to-file.tab.keystream.len | Bin 8 -> 8 bytes .../caches-jvm/lookups/id-to-file.tab.len | Bin 8 -> 8 bytes .../lookups/id-to-file.tab.values.at | Bin 554 -> 1059 bytes .../caches-jvm/lookups/id-to-file.tab_i | Bin 32768 -> 32768 bytes .../cacheable/caches-jvm/lookups/lookups.tab | Bin 4096 -> 4096 bytes .../caches-jvm/lookups/lookups.tab.keystream | Bin 12288 -> 20480 bytes .../lookups/lookups.tab.keystream.len | Bin 8 -> 8 bytes .../caches-jvm/lookups/lookups.tab.len | Bin 8 -> 8 bytes .../caches-jvm/lookups/lookups.tab.values.at | Bin 8113 -> 17981 bytes .../caches-jvm/lookups/lookups.tab_i | Bin 32768 -> 32768 bytes .../cacheable/last-build.bin | Bin 18 -> 18 bytes .../shrunk-classpath-snapshot.bin | Bin 98767 -> 101643 bytes .../cacheable/last-build.bin | Bin 18 -> 18 bytes ...HlsDownloaderModule$definition$1$1$1.class | Bin 6323 -> 8595 bytes ...inition$lambda$6$$inlined$Function$4.class | Bin 7742 -> 8233 bytes ...inition$lambda$6$$inlined$Function$6.class | Bin 4382 -> 4382 bytes ...bda$6$$inlined$FunctionWithoutArgs$1.class | Bin 4643 -> 4643 bytes ...inition$lambda$6$$inlined$OnCreate$1.class | Bin 6122 -> 6400 bytes .../hlsdownloader/HlsDownloaderModule.class | Bin 16987 -> 22452 bytes ....alt.kt => HlsDownloaderModule.alt.kt.bak} | 0 .../hls-downloader/HlsDownloaderModule.kt | 136 +++++++++++++++--- 51 files changed, 133 insertions(+), 31 deletions(-) rename modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/{HlsDownloaderModule.alt.kt => HlsDownloaderModule.alt.kt.bak} (100%) diff --git a/app/(auth)/player/direct-player.tsx b/app/(auth)/player/direct-player.tsx index a4bbfc92..67cebe57 100644 --- a/app/(auth)/player/direct-player.tsx +++ b/app/(auth)/player/direct-player.tsx @@ -128,15 +128,21 @@ export default function page() { if (!data?.mediaSource) return null; let m3u8Url = ""; - const path = `${FileSystem.documentDirectory}/downloads/${item?.Id}/Data`; - const files = await FileSystem.readDirectoryAsync(path); + if (Platform.OS === "ios") { + const path = `${FileSystem.documentDirectory}/downloads/${item?.Id}/Data`; + const files = await FileSystem.readDirectoryAsync(path); - for (const file of files) { - if (file.endsWith(".m3u8")) { - console.log(file); - m3u8Url = `${path}/${file}`; - break; + for (const file of files) { + if (file.endsWith(".m3u8")) { + console.log(file); + m3u8Url = `${path}/${file}`; + break; + } } + } else if (Platform.OS === "android") { + m3u8Url = `${FileSystem.documentDirectory}/downloads/${item?.Id}/playlist.m3u8`; + const fileContents = await FileSystem.readAsStringAsync(m3u8Url); + console.log(fileContents); } if (!m3u8Url) throw new Error("No m3u8 file found"); diff --git a/modules/hls-downloader/android/build.gradle b/modules/hls-downloader/android/build.gradle index cef9c7e2..a9a6650c 100644 --- a/modules/hls-downloader/android/build.gradle +++ b/modules/hls-downloader/android/build.gradle @@ -46,6 +46,7 @@ dependencies { def media3_version = "1.2.1" implementation "androidx.media3:media3-exoplayer:$media3_version" implementation "androidx.media3:media3-exoplayer-hls:$media3_version" + implementation "androidx.media3:media3-exoplayer-dash:$media3_version" implementation "androidx.media3:media3-database:$media3_version" implementation "androidx.media3:media3-datasource:$media3_version" } @@ -76,12 +77,11 @@ android { } kotlin { - jvmToolchain(17) + jvmToolchain(17) } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { - freeCompilerArgs += ["-Xshow-kotlin-compiler-errors"] jvmTarget = "17" } } \ No newline at end of file diff --git a/modules/hls-downloader/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar b/modules/hls-downloader/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar index 4ec7b15d76bb594e3861a0c2fc90d4b00de7079d..dddf760bd5abf44dc9835cdc6be583cdeaa4261f 100644 GIT binary patch delta 19432 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 E0Y-=fp8x;= delta 10610 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 diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab index 605fed36682b779a88694a2e9d14df4b7aeb43df..090960538d48b708ae1ebe02ef7c7a158a2b8f73 100644 GIT binary patch delta 30 mcmZorXi#9C?X#PYb0Vudqs&BKbC%8X{{P=NF`s{80Ve>P-wP`M delta 30 mcmZorXi#9C?X#PYWg@FPBkx3Ca~7uS|Nn2Cn9o14fD-_fB?_Ma diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at index 6d7dcd9e601a3ee0443025c36ac96af00bf21f0c..20a30a55c2a631bbaed81ac24a0a026a5808a3c8 100644 GIT binary patch delta 475 zcmdmx_WB0n25+Xx3sl86>uNJ|FrCwx{9j`cWA5Zcq2-e|aC68fGZZnTG9)sT07+*c zoy?E{WVtY80>xDr3^&Ki&*L2Ix-JTD{;Ofk#dJq!^M8#O9E>GE-%V6T_L(n(F+(VW u1w#Ns4$zO4Kr)k|n4x5HA)lylF+)DkuOR=YFgO9_K)$vYj$jZ!nr~-e}3p2o`t?Ce5U|`q`q&H5?=VxR900J2f&;S4c diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at index 9e593fa7d43e9615af1726821ae36e57ebbbf55b..850852da9a6a7794a104c98229aa7bdf87ad1a38 100644 GIT binary patch delta 10 Pcmeazo!~#wfggwf6v6{s delta 4 Lcmd1xpWqJw1QY?B diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab index 078492c18fabd5e25b063b00c778ed27d2172fa7..2fab24e05f28e93e8e4d0e2c99763a833ce68a9e 100644 GIT binary patch delta 37 tcmZorXi#9C?X#OtXd5U|`t$;s5`Q6Z82Q82|={4(BX#jyw3E%(# delta 7 OcmeBGm@lwFo&x|1Qvx&q diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab index b1ed9270e41a60fe3b267a871a5a7b169fbd4f17..ea3cc30de274f5dd7d7145e3c862585c8578873f 100644 GIT binary patch literal 4096 zcmeH@ISzqQ6orpjVu;cjw6y(cM&URw{;2<2&Pne3 z-f;7B^GzDZau+~R^-JZuy9<34m2guEOO%8dDkLzxJyeD0EX2-WPqx*4+L1T$xh04C zv?ex_Kx;$hQ^06V9>mLv?4*JBlB{Ncx_A~l3$m95t~2r_hPlT%U^@TKAA2A-+JFt% XfDPDy4cLGU*nkb#fDPEdpBeZ7WuH0+ literal 4096 zcmeH@s|o@^6o!BAtAYrYZ5j;*AH-;|2u7pPxW%w_t8d^F2!d6k!Mg@AT5Tfyo?&Li zv|Ts{X1+P+40HLWokgVupe*AXRlD+2Kp;y>m`cq|E~EuB;xN65OMdHdKZ%bkIgkx? z;azC%i{uc)UfR;jSk4`XS)2Pg%eCV;54^YJOW3`TvjPyF$&m*vPh_JAJdfl?*c1jO tpno9SA|Tq6H{oh$|C{t??WqAZpa#@{8c+jjKnfoBWThRNIh2g#m<<8HyNE z84?*vfTS~!PG-mevRoK4f#M()3=E+__3_Hc>U7y=k_fI2FHWF|u~L&@X^ kOrpZY4EaEvAk$J9oPcsbGd54;$!FfYfG2@@@&cZh0PUeE+5i9m delta 79 zcmZorXi(UY$;fCv`2myYX{$nTOhI87R8@T)wfy5nt09i!{RR910 delta 8 Pcmeydlkr^mhI85g78V47 diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i index 5a5c51d6b4484db65765f6924ac8759c70e8f70f..8490c4cbe992d7647dbe3651e0e854334c6bdf50 100644 GIT binary patch delta 144 zcmZo@U}|V!VqxHAVBRQb!pd=jfq@~Nr*QH{!3pe}FYsuHaZCV;uzw2Ozd2AygKzSI zDi#*&Y13W+c{6x99suP;xt@6edCLVhCkXxIom^1FqVpu`&&m}*si#1C1CV|Oq;~-6 b=Ro=ZkbVKAPXOtcKpLjik#}=Pbp;CmS~@hK delta 201 zcmZo@U}|V!Vqp+wVBQ=kbcSd11s)ACjvEXN4D6pm_XCAA_&6Q_dDhdWz1Zx?dV-B( z0+847{M~7w+;V}<2|_ajHYymh7`y-qKZ*LY@&k~53Z#Dk>1RNifsujXIgsW6(l3Ct z0FZtOq`}%ZDrmAyE{J8(Ne!5~Z3R$A8j#)qq|<@)4j`QYqz?e;Odx#%NM`|QpiTu2 Vju}9n)U{&;69o@!?x?O{0RW@sM~46a diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab index 289bf7c865131030adf8378dbd2a7a2e59cf0cdf..d15562c8baa083d42a0826c344d05217a0e59e24 100644 GIT binary patch delta 46 zcmZorXi#9C?X#OtdLpYkW9CF(a}mx{|Nkd2FfcS8`~UwDkbZdh|No5(d8#B_}qj3U~{38Y(hLTZ8@Tj0^YOl5G#5%PN=+#z-2;{Y diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab index 390fd25cffdf99f6ab08a7072487e224de7354de..133cb90f526b0b31e77590517182a6e43995a92e 100644 GIT binary patch delta 30 mcmZorXi#9C?X#PYb0VudquxYcbC$Qe|Nq}OF`s{80Ve>Up9_=# delta 30 mcmZorXi#9C?X#PYWg@FPqv%9mbC#&b|Nn2Cn9o14fD-_j6hH(0QM9{zsZGSrIUFXIpmWW ziWpKE5*bQ>q%)9CX2<}tTo^Ke;wlV=n>Vs^j!2^-xHtQ;=iu=A3Hi+d>{-|(=P)yd z0>d_5897{i8H^c187vqA7;=CiTnQvI8HyQ7CL3~z3Kuiv149}V`Y8-fKsjKTPu|F$ NJei-}o@rQF0|4;7vvmLf delta 196 zcmcaRo$-+ShPjN4=94dSiB2xyoCRj7PB!3L0A{TRl8xLT(vSy4J_M5!c|mMPzEhjy Pb#n$xvn)H%dRcY=RBl5R diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab index 44636a1103e5e0e023968d5b64fa14d4951f989a..fc9378791963e5860a19906f6433f29183945622 100644 GIT binary patch delta 23 fcmZorXi%8o!+33?uQ`k8zyJR?PR!?@SilJYae@ix delta 23 fcmZorXi%8o!&o@c*PMmx|Ns9RC+71{EZ_tHYQqV6 diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at index 7341f98e47069d54dbf7ba43445b5bca139cbfbe..b16c716230a10566fffffff6a5952e187d46e0b5 100644 GIT binary patch delta 22 TcmZ3+G@E6E8so&ThR6s2a9Rqo delta 7 OcmbQuvW#hi8Y2J+{{kNX diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab index d19d17b95b40530e54d7638067438141edc19ea5..9b705a472739e7fa44fd88a3921ed21b95bfa450 100644 GIT binary patch delta 30 mcmZorXi#9C?X#PYb0Vud{{P=NF`s{80Ve>Z*$dwQ delta 30 mcmZorXi#9C?X#PYWg@FPW9UR*a~7-r|Nn2Cn9o14fD-_noeM_* diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at index 4ed69115d2e2ef6613ed0c623285dafe59159381..11f4b13bc6292e9432ce0ac00d4ba9e053d42018 100644 GIT binary patch delta 15 TcmaFGxR`mutBDJ|z(^GUJa-3J delta 6 NcmZ3?{EBhHD*y?c0}KEF diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab index 4a12deaa..0737472a 100644 --- a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +++ b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab @@ -1,2 +1,2 @@ -5 +10 0 \ No newline at end of file diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab index d4be18c5681be5dc593976e6ec41cc66d64f5587..c188e64ab228f68b74f6276f57e47fda03f5b44b 100644 GIT binary patch delta 30 mcmZorXi#9C?X#PYb0Vudqs&BKbCwzZ|Nq}OF`s{80Ve>SfD3T| delta 30 mcmZorXi#9C?X#PYWg@FPBkx3CbCzxY|Nq}OF`s{80Ve>SaSM9@ diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at index f6a4f172632b88e1dbec38c6c8ee201ffea89027..263bcd3c1cbe0592738b1e50bf5a029ab6ee352f 100644 GIT binary patch delta 35 bcmeazo!~FW!TVA27ij84@#j43PJ*#tRO!c7)#DLmlMsl>_Znq$SmI&V|5r- z%ge%7dLI;a{z~t7kLlZcs#Wtpcz^HZ%*8@1#Y(KjMr=iYe?H?stt2pj0SsUO0~o*n P1~7mD3}65Q7)T7C delta 74 zcmZorXi(6d?X#PYg@J*A5s2YH0K!@Uq#A(uKM;UKSSRXAvw{>0O!N(BvHJJ_|Hg~@ J{1YE&0s!2q5f=ae diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream index 1dd772cedaf239fbefddcb6749c5b7b5ed42018f..8ad02ff9d7702110d05a3c6b7e970bd38657c5a9 100644 GIT binary patch delta 22 dcmZorXi(r{U}R!uVP#|I;M^$qo`0eOI{+xi1MmO< delta 17 YcmZorXi#8fU}R!u*(ms)f1&~p03eS8%>V!Z diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len index 62f3e6fff7af10a35059124bcb1c4f486e18abed..c15663dd6ba782a0dacefaf01e24bc712fd45cd7 100644 GIT binary patch literal 8 LcmZQz00S-n01^NT literal 8 LcmZQz00UM401W^J diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len index ec8f944c8acd49bcace4e4c78d4306ebd9e28078..fd5292d4bdcdb76028e1eb3dd4835aa24aab9241 100644 GIT binary patch literal 8 LcmZQz0D}tv0N4Q0 literal 8 LcmZQz0D~0(0I&e5 diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at index 2b490fb9923bbcffe820bbeddd102819726b43db..2d47b43d98f7a83908575d4ddda6a8415dab1591 100644 GIT binary patch delta 19 VcmZ3*vY2Co7SrSe##2z73IIke2MYiI delta 7 OcmZ3?v5IAb783vpbOJU2 diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i index e6ff6ac7a201e5c94c6e93cab6f84956bdaef1a5..5f2acb463bc21fb4ae0cdad9b74962dbfe3fb020 100644 GIT binary patch delta 54 ycmZo@U}|V!Vq)N&$fT#bf`Ng76^J(gF&hx?0Ah9^J^;iVKzss-IX4=vt_J||vIxBZ delta 19 acmZo@U}|V!Vq##K$fUP1WlsIX0uul@!3Hq^ diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab index e1511c1dc89b3009ce37701f73ff13253b682735..4382b7415480275860d91e569897bad692344326 100644 GIT binary patch literal 4096 zcmeI!XLy#?835o%_D~^#phALx5m^CQGL%9KR%{h)G!`gW6&yH=E23#Z5s8CgrJ&+O zso)3}iwIFhtRfmIjRLkPf=Iy@j3^0BBEH_=rCygm{n;NmKfe2W-gVA-&UoJiXB8hE z%Ag}szu%SS-+FnIh^hW2O6tfDuSs40{Vgd|=Pqm;(S+Y0Pu=rlN_t6>v~gim4rV>( z^6d1&w*q=Q(hMic*)+}NRZe@MOQ4wFSkuQGEJbub)Y^&eT@?&us-(wZmu#MUMG6(T5 zyoe9;Ue01__RruhPG$XO5!bOJ&*un^aF@MSm4rC8&r8o20jmvl<53()$r9~XW z$!yN$Y|I0!!%pcDHLH{45+3Bk+|M$8#Ecfkm819;=kYb};w#K-8L^ysEaE+Un(O#D z>t;m!k%M>-Z{hE`f;aIXFK3@t5f||$b~vmb93$S(v)JjFhw*8{TK+{m8CMXYB5*YY*4WV6;0%Q%kD@)_m^oa?$8BpJ{yqJlT@GcM&GR&odXwvYHH^I67~e490Vl|wp2yu=x-tVxnL zxm4Wfgowo)&WAXS_j5JxWeuluXm-ROcn9;jhQDJKFJ`|JBYwktp2rgYoMk+L<;-A% zjuBPGNs`4+*q>XN%T=7n7g@;XxRi^ynUC@i=dDTxA1^GruB{ZfVtevLjFyE%Xl{TaWLzg649TT?8$-b!ZFO`WH#g+{#SmM z^Y8qSZ?bW}h;?kwU$F<7R+a#8A7E8H|E4YOVS-~l6+u!#NhjS9I=LpW`8C=96 tT+ab~pRHKIW^6LR_X<0(+V~IVKAz95G}^VLHUqU8sLeoa2L6vS@C_|#&|&}p literal 4096 zcmeIzd9Y4p90%~9?S|;ux9sX7qz&0BEyfZmWl0jr(t;#6LZTZ<%Oy2snL!3#d zh>;ExExYI6V{*yapX`=x_PLscBYOOu@t<4f?j$+i=mAHQq!mZYT{(<{`7kH2A7`;Q z7x6BxWoMq`EiCWHv}Su=&oOMurL512xg+YbH*0VTt8f*|@f3@*Zk~uj?8$tb&a=Cc zWIKOjg}f1m*ok{MiQBoBn^+`Y#9FrHYL4TVT*1#6DG?v@3Vy(We2X7)29I$HuRJGW z5{L6yF5nm*;Yil<9}QtY4rCVZ<0kfGt^yHVS)Co&h3z-sdS`)RoipJ0CuXC?=89{Y1E`!F>% zqB|S#c6Mfa4&{xU&KtOqS25LIX~34egrixLD_NB(MI+8<3zp#1EX>tRVS!@y*A8{# zNe<&-W^peMaR<|iM{H(auH!rWntQp74N62T<^X1KHs^8+-)6~@5i{A5Q<=$rhmvF& zUzGEfig=FAIF=*$I2Um!qjbbWY{L7Q&ibyO%X{Sgypz?+M08|l-o#9{Oql*{ds1)`|~&#^8gR?XVxemv6XGPkt6s$ z=W!+X@N<@{5b-Hn@gu&(_qm?4Sg~TnYwX2W_%0`MAIGzLrHBmn<_OMUdiHq^V6Dm# zec6vaxR_mdmbbEDm54SR#O7Sct9gpK588)SBd(Owc`37a5l^!kuc;PMo?}>&%XuF2 zUtm8Su7@0i^ACI;6>Xdbhg= z;*;SItdRN-@E2etE}S@W*h8e{xYFJ@B2HX5&^;bc#_g3`3AWa(vV*i?8#D8Qs zM|S03lSj{X9O#P=2)ri%>}|>xQEf-}!;TI4d~`OOIHIZuUmy(E1Z53*wKydk#lnwS zhJ94W>(s0+Il4c2{94;c3gP(o0Q)t}50XPCr`}ck2=7IVGRSr3JWqcQI$Oc^HfGq} zWJF-5vEh*#!${!D?8eo*9%^_*e#%Wq%PBeogs%jiS7nR!--Mp-Sk|s1QQN^>8_qyI z5NON8%Y=*SwuTDFbUB+u?9f0g?g{L3)o<;|WjSR6yYtaKgN~pJG*D-&Os9}D&UjD2 z<@3JrOiW!##BNhp-(A!dcC?E+7gFJ}F?!u3uiyjn$}q_*=wHYyPl~*<P~ifbRIa~-UQ=X=zXfk+U0M?;|4J1 zZ>lasxXx_ChYr;Y8oseMS1H}8uB@%EZroX~uHJ%?m}fIu*|-)sBrqw+sJmT|(=K>3 zk}W{ghGfqTF?H>8wy)9>s{C{EWFjiHS*A!Ls8iGmN=;u|u_$3o?q4`Lq_wZMknm_n zTHtUCOcdWjn=RBFK`wqv2nEPu-{pFHAdMd0{&Ymtjx=zPy8ZTXJea&0@rJ#fF5c~2 eapMtbFS`Mo?M}Zu;eP32Pxw!1;(PvXTHgR&sEgnL delta 195 zcmZozz}S#5L6%oIJ+;KOq9nB_FEPh$qx?i37Usmf%E^j+a+^2ss4-5CG*sPug*TfW zB79KLXtTZOCdSG0j4e067xUnP2!E6{-)ydUm61I!r8qpZBxCYNIg8EQ%72+AiyKHy z=1>!#Y-k|5*-Fink%QeYza%3wFMV^WdN?CQx1*-mAx20lR33xC(5c!Hr4T;EUzZLx!KZ~2>^vuLU;fG diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len index 396abe0cb5f57d68de174e35d1dc7408fa65215a..9c1e85c7672b95b8ba71b241a5c554871433533f 100644 GIT binary patch literal 8 McmZQz00GMq008a)t^fc4 literal 8 McmZQz00G_800Auk`2YX_ diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len index e862f594aa171b2c3964960647801e191c9a6bb9..e66d94daad0d8ad6a8dcbf03fec3e1d899772536 100644 GIT binary patch literal 8 McmZQz00FKH004vla{vGU literal 8 McmZQz009mS002M$F#rGn diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at index ef46d8590f91425f9e3338fee411a14e66242ad5..ec8142cb31de268051e3d3863c8df0e713cbd854 100644 GIT binary patch literal 17981 zcmeI&*-v6;7{_tu_{h+|pnFTxHr+ej)9t#Mn&mnC z3V%mdVGY({1M*OSB9x%@o|_EVf^8_n4(!4n?85;Z!Vw%p1y0};&Y%kCZ~>Q4gMsJt zvk$@$3`6TZM;I^)K^TK^2tgPk5QPbd!6ZyU91<`MGcXHDn1gvpK^hjI^`039WML7O zU>S0-0;{kF>#zZNC_oWPunAkR4Q1GYUD$(tIDkVqf@7$_37o5vqAp%jDfEY}|6vQC`(=Y?Gkc2syhZLk?0Wy$qoMJ#65-<%jFbheTgLz0n8WteqwmEybCAyTfLFPpr zo`pqN0{w@zmfRS%H*~YQ zDq7MmwKsJZT`DcPF?Qe5&FX?{$rDfNU46T{h+EPwsrPgiUD++^Ji{O8_VmDDNi*{F z)FXl=|C92Ex>-G1SkjEdJ?*KBza`B$rl+p@medpdNM~7emU~OCmE6ZV=Q>kgE61Pc z)LTsbC|#nZHqZpS2-4tbKLXupyV!RPc96{i(dD9xRl{J1)rmlK_3mO3H`pPYKspeC zFlQU&KeG>KA`Q{QwQ$rn*eSIeh?}mS;s|Ft20PDYfw-CJxtoZglM%RC>*=d-7HhEg zPZP-XMqnRmJl*ElSGuabYqONy=GiG zx5T>T)}pruyxb))cuWNUiD23JMaj!eH$!Vl#NO7-^cJ|6Ti^yex=sXg==@ydqvTSgvOr}$HQIJ)t7rBLoihn@F!HKacAmj6bwd%h*8*D%NHCxwp|5n#6kXz! zmMJx)OqV=eTrQ|AQ|S`@TBkmuvLQvflwcFWejV44@o%&(1YwB42ICr1pi2=-P-VbA xr6K1jeV?3B3Q_u(Z?$cT%13!dv}Ev@2uuVX6M>1qUMkI6U?MPk!PWi|{sDpz6(s-w literal 8113 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 diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin index 7e07d8bc10ef0e5ca30d43c428d6d11fea00a640..9d5f4b2e6b42fadeb42863ad6b6e6792902f7959 100644 GIT binary patch literal 18 YcmZ4UmVvdLhk=1{svb|{4+bCr05UlQYXATM literal 18 YcmZ4UmVvdLhk=1{s>H`?dj=o?05l5(djJ3c diff --git a/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin b/modules/hls-downloader/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin index 8abafdc7e09df67f699a135d1b2039c8c09e6e48..142660aa3484513b8f2cbb038d5c3e83476e75fc 100644 GIT binary patch delta 1792 zcmZuyT}+#06h3E+vKCs_KMRFH=AsN`l*mj>mMub|q)_%_jc$p!RVZDR_UrnCV#ew; zix)E{8%y3~7rQaW3pKl$X`&TTImO*dHeM{?|Gl| zoadbP^!s;g7q8kJMD#osk#}kBP|u~sw)4@?qI_kHNp;4!r*dqZBdwL+ruo-hD)$y| zS6}*gfZb}%$KJMn8m1DZX^v(nNqO=Xg7KHu_8(9Wc5<&8nBwk=I>FZ(RCt*8a!@_H zkGrE$Dr)Bho(2vTXac|9zSllH|L%L|gh~Te6V2+~QA*G>orYxx0$EO~`@I}cy-#r8 zq=$xpl!xy^74IaS++8mO*hi z=Rqe+DT-2tax|yDp5Pv}*vDP=Mre|yHz}=-9^w%1(P=v;VJ(8-D^M#brjF4sZnyo^ zzkAjze3~_<1caOc?>T&kI;#}swO&OXI)<PukCb0ZE_kfOaLMJqvG1U`7o@ zIP7eN*@TEvR{b7fzu%^X%fT$w5^)h$Z?$gdA{7J+r%mID_&`?Qj`5Qd%@l@~2B-)n zT{KPVf#c5YuhO@GkZA6bI2uN2hpC`7j_d2rn6jK_{zAD1}Muw*rmR3pA;z zrCvY(!`WunL!su<)Z~HQ0xj{x-` z);$Xd`pv{J5E9J~3T9WDRi z$`Fu{F)X>sGIZoUj&WlkL7;i6tm-a&1!L{1t<2i}RRo>K>euBE*<~QswJ5y^pxWH} zxL^-GvpV$%j*^^rQSE$4pAXf0Zyms1ZA)K$Uw&%;+`eqP`Lo$bt!H^q9Y4pOE(b|R zisI(eoSwg=FIT@OBM;W30P%*yEv}m;QVD4@4Mz^Z)<= delta 81 zcmeC4#df}#jf;VS!4-%Z7=$N(v{Rp0E79n=)su0G`*hJdMyc&n>ln?LreF4CRN2nz k!RW@n{bniSJm%?FLxFPP&5YG-(=UWF%5V1$XM83L0Nvji;s5{u diff --git a/modules/hls-downloader/android/build/kotlin/kaptGenerateStubsDebugKotlin/cacheable/last-build.bin b/modules/hls-downloader/android/build/kotlin/kaptGenerateStubsDebugKotlin/cacheable/last-build.bin index 3b5496413a7547838389c8545fab7cdf63b37438..5231507f64f9103e237ad4c9105f9e1d7c8ec954 100644 GIT binary patch literal 18 YcmZ4UmVvdLhk=1{svb}M0|p=f05P=$Q2+n{ literal 18 YcmZ4UmVvdLhk=1{s>H`iI|d*C05kdocmMzZ diff --git a/modules/hls-downloader/android/build/tmp/kotlin-classes/debug/expo/modules/hlsdownloader/HlsDownloaderModule$definition$1$1$1.class b/modules/hls-downloader/android/build/tmp/kotlin-classes/debug/expo/modules/hlsdownloader/HlsDownloaderModule$definition$1$1$1.class index d6d589554fd6ed4222816c4c5a08ccb7e5dab0dd..b208bde35f38d06feb5166860a060da599d0a5dc 100644 GIT binary patch literal 8595 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 literal 6323 zcmdT|d3;<|75?taY?)4*=`?MVvW*f-T3V(H0yd>I%|fT0CNW7<+p@jRye8AkyqC^< zleBye?bU==ni#IP2^O)H_^UrhnBX2s1R78>Y0L(&Fo6#wMZPxDpDc2~^ZC=!qbR>0$UVL%=7c3N%hp<{RwRAW&IX(9&9VP%8+`G<44vO?|YZ zmJt}LPfgi^4O5uXkSe*YWmj4okY2S-SLK1g^-Bn|1&;1FEIKW*V=$k{>Xuf})m$Q} zTZOD{X47U6a|LFn`?Pd_n_;yTbGZ(+pyo9W6ga-VY%K>O<*Ro|A-!BWf?CWAqXtI^ zgghleI7;BesUaYUV+5+ybXqgbx?audZakxIK%jZ*NGem@RWpLO;H_cAajd|?L-$Y+ z#|ijNOSLosk&NJY)K_9Y76?>R!w#*G)^y85fdl}t*BZeISQO^4#R3bw&Uo6vNPKa; zOUhdj7mMN@1*5mX?Xq%Q2nm6@l6$lIpwX`-oDDP?dRnzw)wE?4b_cOkU~XRR*PP}} zS*wq4R8zNz^XtkT=Stb2S$#%kEq6}Js7o0}e{oXWVIVO1C_ak{_}C2%#SEuLb}Ii>_!F_}r0sOE}V`*wj@_3O(0D@Smx_u;ZIF2&^nwXU7gMlQ!I z3hiPhc+hNDjr;zqd>uY6 zwfzJmyVoDzu2Q41gK?QreFbAk-ImjW_$2w2+OK?5+vMb(ah$d6mN5|x zl5}svrzPorhTb;xmO{ZOgz!0fOmkj`$E`kglL_J$oz)`Y@HLxCyZ|4L?6#^z+(86iAK^LDhfIhF6Q($(GG(IM^eT`t$zvZ1}l z9``7f>1^rhZtU!~>)+?ljcx1OC@X{?$a}YH_9rtTJWdMhbZ)qrc*ad6;>7_Hv}PNm zsQ2q^F7;(Iwuycm<6WDW5?i=D;ZgWLKFWo}v8lBo)N3$7Ny8i3;L33~Hs!!t79srj{8?Fits~ z1Y?WLt&Z^QYQ_g_ncj`m_TTTg-TE!%WbB@Bd1?DY41WBPko6GZYDEWcA$SZu$!n#+ z$%mtxRIL=m^G;G3&zkWpWrpxq8UI{vF9U>|w! z`Nji#mWB`P2`e>{ zsf(wvq?>5u_G6xf%28U)4+D!mhiQd#GTOFcFL|K!H9+7bM*49{nrmtA+k*1}p?U24 zK{M}Z4G~cxe54mI@h6HsXn7vu-F}h}5hwOD=K7k946#y`;VPxV#8O5@AFUaHh(_h-1Omy&Ul1WetCDZ4 zI6`3=UUt%b_#;d)3)PM+|Jjrq#6j6~0>E14=@U zzEv(GPUl0yUur#GKzCb!eVOZUZhv}YyB0mjNLtg9bL74Uo7V=GO!;- zr^z21jO}t>1F`eu*bALnFt$h5E*`=AorV#7ct5V0sOz-~Z2fC}Be;H8TsvN;y};rF z_|ynKYY&Qj{>}8ddGY245Z;e3Y<>`dO|dVPl)K}9RBl*QaL;#EUb7c7Y4wrIW$ki( z7`|zz`pdPQ>mS9vWj6eJG$4%_s11xWV!#*s#$5jh9 zV*X^i{H=7$#@Iu{sEs{5jOy4U!>EdVZy4d&W5e*re&`4t=ZU~XPXt1-A31JpbA~&f z8OA(!J8tJFek!-~i%k;76(T|iosZ~iI5UWzS8?@0G$9a#62!AX%n#yLHV5&XY>Nl+ zJYR)f_zn{9hcfW_SCE>sS~-Xz1SiPlBG17;PVhnE`2T(wFItoBbfO8Le;KFEkvt+4 ztVRTDQOERdB~$fAq;MwMuoLYlGSePHC$2;n_OiSQ-MEG2?bwLBSdKF1dWhx2Ov@kT z_{XrBR^5V^a2EONY%v|@h$^UJKDLPlmaC8!tt^wsh;Ejfn8#`?dztv|;P^cH#KlZR zuRu;*kG!~n?|Yea-pL&EZWP2lu*BmiiYHkT$lZ7#AoB z_AQ5{oQw;VMwZRENa%C@8Mq-0&bJ%y*qf&wq#w=QpQVUOg+8i#A$LvZ9M{^XqI5{ri= zl4;+$Ocf=Q$DMiJiu}syuE@6+@n?<}wC-QrbyBR$_)tA=o!H+bg-=}LD#n7V%c4c~ z*c#RD8h-i`<*zaSTpI+tGMMy+hZlz9tr_KJc6%|SR zGl_rkKmMJ>%XlS;SMeGLnD`G~--@UyUk{p?#fWHPwuvW99A)B36Hl3V+7#@4!NiMp h?@OjogbZl&sn980WQqMe(|+D)KS%B7PweOK{|np=%8~#8 diff --git a/modules/hls-downloader/android/build/tmp/kotlin-classes/debug/expo/modules/hlsdownloader/HlsDownloaderModule$definition$lambda$6$$inlined$Function$4.class b/modules/hls-downloader/android/build/tmp/kotlin-classes/debug/expo/modules/hlsdownloader/HlsDownloaderModule$definition$lambda$6$$inlined$Function$4.class index 3dc73222ffa189da9a668a49f75d289ccd56103f..818258664f3235f316f07ee696f43c1f63b26f0d 100644 GIT binary patch delta 2641 zcmb7F3w%>&75|^FP4Df^>K;0sPIS}F$CNqeoVw}Ootu=kzJC1t<=%Yf z@js96obNk#Z25tU?T@^9d<;M{ts-0{uMk%q+W4x{;SNND@mM%GY~&TwrUu}HbOxnlw<{= z+1>eX;3m&G$$29-*{~fqnL&3Drm@S`fkZMEX$@?=KC~*dm2i=}b5meTz}Fv$_W9PP zlJRh~@Bj1vKD^)be>1^yt+`D?wfp=Da$+CEhfKo{6SS2#GrgYF{YXvNah>5Gp1L^50B6JuNouh4)h$YH%09 ze$I?jH#5JRpl}Lpfnq!O{f)oRqn9*)k8R} zVHhLwF>4hal`mWUl#xxg3OX(~*s5#~;-rQX7$eMeOWip`-fMFfoYHU%r{z(bRKJdI znDM_U*Vu#V!}zwzd`CWLZ(aCZe9wxx_&)b37F`pM^~FPpgo?)q)`|MB355AKcwL2@}Q$S^$ecX@C*Es zTbM`&k|7n(aZ%T_U*6`w{1O$vW=D}wG7#hvtN1OUkWukuS2)7R7YL3?zn!sYpMpOS zirklZrW|rp&dq-YFKRf8KXRZ*VDme#Bg}I5bjmCA3iVHT*(}wc<)FS;{R>_-OYv8E zM4wH6mrv>Ch5sN>h_KwOW4SDKR(8FCH#Ib2oKuZO+vD+ATqR=9p&XgVrQ@Trn(M|5 zwUGr84P{iox4dJezq7qfC3Uiz>!RVLLYmy=oY_b=vKNw-9K6%)a52XTVfJ|kK-0*G za}(9fB~+eoIw@2mD_lzq50|f}b4p8_6q-+%=a$zvie2|DML-;18MB+c6}s+k2X3^U{|-HX0@ZZ z-B1tX&feZMKHcrQhxKWEHjU3uV0G^ixH9-+_ruWEyB^5kAQ^fZM{?piLp_dBAcGa_ zP00xyGaVN&I;E`7;Gq(26kp5WTRHe6hB^f?2{?vF^N@AmdR#q;A2d1*XP)axL(Smn zwT3g_b;gmwuX2pV^}OphIkLd@yKJbeqnt=_{k}xY;H3;wrey}Nr17`=G1TaolJM(* z;W&kVW+)f5h(tE3Zs?Oy_532rHyml=8nP>$;}%h2j{eWU`ea}e%yDZtFbj#yghKP=N~6pUjN{$V-lb8>U2= zIU8mF!`7Gz)4|zVc;7AjI?yVMN>`+=#9px$`$QM+6YFqLT!~?^9%JHaJj(AAq8m>$ ze@67+74a^zi1(0P^pY;FAwvYHjQJ`Nq!nt6n(Uu`F631{Ne^$B_h--q7>$} zU&JWM>!8?7J9)iTyqET*n7C8)(_L(^PYlq0v4xI_K{_dh=#=1Tdb+J{r#GsfiZWacAG|hXt7dn4KUL+??g9B%9np{)_o%SPvH>j9p zb@T#FrxFw*)j^N*%)NlG@zpd&Gsxg;9ianMN@cLaOJ`{&mGgBrsS2hPlj5O03k7`f zi7MHR1)6YD70u>R;Se^O!&DxM_)t|dm2VD$+>mgt#0;v-4GAuTV$3j=_0QiBYGt{`NK?-@iQ4!-A0BF?cBTZM@(y#QCc0## za%RK7Ot@v2vZ{hpS-`M`J;?LZB0n|oL+|j@Vp`&-3(3zI2V<7=+uQ?6&_#5aEUhS4 K(pbWQUwaFzVTLsT delta 2210 zcmb7Fd3aRS75|-^<-K{6S@IGC!(S9E~V~U7i|lb(z;t~TdK8{c-~Af`TFsX-`sc4x##@u zIrpA>&Y4H+_nql_>3H8h0Mn_C&@2~<=AEs_6q+K7ol}M@ND@3oES!i(!l9UHg_a~D z3R3bOb)vc&YczCWt(>ZjcU-Q)!WD#oT<f0je9g~!@Y#^SpxUdRX4=8tHrlk80R~#|We4jACC|Hfr;X&S~dXHy6Q$pJ~{RpUbaY zQvC(G?IZ7$(j8WN@PxhCE&JUwXYWDAiP3nHBNC4-NW|Ohi>r8w;B1du(MT+`z=$Li z>?MduSj97Z>jA~$RALAy=ySet_15lVvR4&+eQpDpKSe;My;cn7~{M;%7zd6yEZf-Oz*R&S;HM;x+) zcv$v%C#mn@h#i?f%P+m7=r3|aaRq%Ke^A`8_#=F*VH!T+A`ZKm>=Gf0U zdTpjPk3+|4P=qhgp}~)T5DI6X-PqJHOU1ti1G*#@;oSeXe6zURfv@l%2foDDJ!ABh zl<&!9%mlwe#eBh*rXg=IO`#IP=|SoDjFGja3YE#prB@UNXe42TyrgPG&s(K!q)eWC zYTdX=Q+n#l)>Fk8F5n;p{{XFK>~82advMB5UJ(W5;bA@(BMKUz!povhWd86iX`kv- zGFZ0zC;_X0UmxyXFb#8Qi+;Ahf0WZ5iB2K6fwf%ZbPP)IK~2WH4i? zEqMytm$9uvMk`A*_-UE82ajj4D~Im&sV4HB?Z2ESb7 z^W^Kla%b>bZc(7Wp}&=53-wKXE`lhF`}0ieu@Jje*LOZt@L*RJaRl)1Vsu1nT97{u$|o z*doryRD%IRI?VJv(M3lY|Gr4m$GC-pTtzp*jcy#k|L_gm z)P+ubgySq5Pkrboz=7FxKldu`54eCfk)S*jp@Y)vD4zdSIjM*X*-eMY#atdr=pAx1mv5IYV}}9WvoV}b;azs&Pai0JN6py% z9UY?y-W#su+GS)0I-PbbL}t{Gq!0)RBxxzN zG!$A3-GE-#;!-#2Rs~vaz2`gMJxk8_ z{wVLU7*1cGJPzP){LZkB+nI^ar0aQ^YW}$6ie`~I=xS>h(a2D+%3{3g+_X_wH94!&3H)ddigkc$lrRdbgGKBiqTUqGjXO~__QTN|X3+Pc=ez2#<8 zg^11Et8Emwpj#nq1M{jKU}8IJJ+A(v0<4{4s4unPxyw_!kh5icpEmw8%Rzi||Y6ysHf^nY{K z+P(HBmtVx|4EM}UCS5Ev3wV>^0sas(r`5FBH`>eHzVelBk824x3I*D?Bpk-u3|6Hj zePN9|5OjH6egWhB-t;wvM{rcB;2p~2cLg@Ixt7m$7|ESAhw=7pA0i`86N$*;+?Y=&RU%Der0Qlg$z1W1^Nn`zI)EyyBd z22eR5LI9YBFUhVC#bC9S$&LtCSW|OS!>B%hd}XhxD>(`|nlx5VVm%N=Q38yi*_M+U zLyIkf);QX7)N%MC@JF#RhD`)^$&Z8)QisuJlXpbXZ`CNVV%TLXO>mQu_t~Z(h3e#? zC>~>RJdvY`S>4NnyN;aq2q- zKhRo@)azKq1l%RS`ZuZsJV=LGtb-5|pqg_eQGs+$Ut6w-lk_C6_yjb&1?+OtiytXo zFO0Ohp+XDN(MpyVCit)j?XaQ)s}MvzI^m>P9(2Kv&De=<3}P#W5yA+1aFFa#^o2-f z+cAM1cn^IzPP9|##}o!|mXck@Zv2Wp_>=IzFv#*S#40e%%#>Ui@_jT&6)VRiVl-SM z%cLmBs4Nppp;+%z`}MepI8H!K#hk-Q!cxf-zz6sc8WKUsl2k~>Qc}oANrk{dyP_Vk zB#fyEoExLFD$%(nfhUtE6(-IpOr&BJy)j}cza0ETtC~K>3;3B%Dk|nmV!w!AD6x8N z?b6j!EgzkCwedzVOC>8L>Kw?YfS=OU&l-?Yjp=Hfrw5-`;|qLQjj!+!Is2l|q6p9bZISJ>l|bIV}H0*t-i-y>oRCoghaetpE3fab1dSNE9weJx9JhW zT*YKj%k?(%62l;&Xq%*G`$lVbS*gC!J6iiqL-(3tSDQtQ`TCH#+MOh2QON?uHDX$& z@3zK`HR!NN+uqCW&2+@0?Mqt{$tj`WRFg$|M`^R!$r78eRC}zLdpTXU(yf@Feb#t$ zQZN{tY?9U6t!i@>4Hj3kS|76-)LK1kt*Uy2N9~B~6y7lMP9N=+w{$4>#FsK2*5dQknTu)ccZ&jKLwjYvefdV-A<{5ufOjBfDIu_(D;s{iDY0 zZ3#?PfpC3eXljEMs-HR`TpMl-O$+J1QN!x2?klfS=k$T{3h!A^|6t;h9sPUx%xuj* z0zgS6zCSK-XlI!Jqtg+rtT%mfw>u*^BYib!B(jx~)XMXR1jZGmfRIeH^U zu^tFKp5sZC=jn=)Ji2(YInVQhY|XK~sJ~KVz9!798e&((h6i~g&sziRzKEj+*ek_? z5qwkl1)S%Zt_-dZg1P-#T z_-Lb=c7i0SCq*L*m@ZCcl3}rY-E^{=C9D^D1IyUNayHY&RypZs1p{Qs3w}gcf3k-2 ztYui7pOX;ROQjwB%Rb(df>-mium=SRa+)0PGa@TtcCw!#oZ@^TA8>#Y`*9e}81UaD zH$5n-JRD)!=xNk$j4Q{iy=KlPSIYT`a5A+f;nV|3ci=sDLsCgA4Kvw zq^duP;NVMs0=+Hp_k$NVl2vn?C6|Zs;_0ZE9Gk_6CO&QAxC~A-@fjzZ_?%yaQzo1< TGQXOIO7k_p3TBEPkvZc(c0?|n diff --git a/modules/hls-downloader/android/build/tmp/kotlin-classes/debug/expo/modules/hlsdownloader/HlsDownloaderModule.class b/modules/hls-downloader/android/build/tmp/kotlin-classes/debug/expo/modules/hlsdownloader/HlsDownloaderModule.class index e68288e6ee3191fd23b90c38e1160138df4f42b3..2014e658de71bf61c0cc613b9cc9d2ec9e90366b 100644 GIT binary patch delta 8606 zcmeHNd3amZl|Sb^+fRO$6GwK4E6=1zx(vOHG$5b^GEaf zy?frdXTRs3dvw3NbqzoDIG4Ws*W=F+(OL2cQ>`_@s6E`Wta4IWXXf&BDiiNC>$vt( zGn004Gt(K?UZdP7vd3i7X3gH{=EdBqCYCUb2g`yjW+v5}O{|P(x4HQ|Zd7w^OcPhf zcP7(Yecg#{yfdDS`?8ssk6nC$hcsnES^P-Wdq^gEI(icEY+_k>ZFFTS-j_<6S-3RI zs+;7st}3X=F_nz+%EecDs6g=-C3b<-baO6m&TbGU&Be){L`OE$)92<-IU?)^cr{b(=Od$9M3Z23vd= zl-!N5#5+0?I}pOtX3ZXBF|5uedRpAPhwt%F5r3AcSOr^ogQcB0)<1`O_NFm1!2LPC zPc88MOqI(sKC?Hsr7M#{Kuup)rZ?T`OQzK#@AZ(b7OC8Jxi_0k)h+1hiT5pqLY?;+ zydU#4Ze%t;aR4jy!2xX^ifq))pU+43(D+;tf5Ag8uc7vu3Fu;VtFiVxcH|` zUI)Eq!K!mx*DPMUYQY*c8wz6j=ZK#(y{vU{+k%?atrxCsUB0L_re=Q$r7F%UQ$`gL z!~=WS&JC3WZvJonRSAEI-y2HVG4neAFZRN=xVapQ?&ja9z3^-PEh=#u2o((ce4&Xp`Thh#bZ|&G-^Oc{X#K8)iaj3u`>GGUI2%EEFltw#E z5StdJ=*hmWJe9BY0eCy!Ol(yyEbc}6p>{K&*C2O%REL2SQXyfg&kOD~6CWJFdW6T` zG05b~;e%}K_JoZkJDjEf&4a3py<76(#;NFbEK+p_pJk(JqFwvIoR5Ovp>V0Xr(g&g z65H0POC>C@9;>R%=>n^C^i9j--3hlu?0!iapvu9`s;#Y^?UJUUf?}_ss++45m-Qyn z9SL2~(@hv%RaYgpCU)rpSG0>d=ep!9v~{QuGEdOf>D}>c$2MjCWaMv7^)M%iL^tD> z1+q}FEJDzdrgFh8t#%6~==5~w1arxGBU{EU=_t-<^VAtC=OaRibf>9Kl|W~rE8d&J zW^Zw}jjh#s)X=R5ydK}iwowT)beO`5rLxSB3uO6`DO3DhENf+5F^RNW=S_XHST2%_ z)z?Rk%$@cYPxY!+$23ooPD~%Mru*uxSEuM!)1(RLBPSN~75q^&V{)lg;M*gTw(j>m zRLErmyO&t!PG96Pq*4rVX_W)J>m|rBuCnf!en#c_m1U<@NwA{6sB99(N{n8Ng;xLc zKAvpV&$xQ?ta!S!CzI^lRo9*9Ovc0LGP=7n>AGd=3tOQ(u&_6&S|nYrLM!r*sC7Zd zsyi%9HP(cwldU&qlo!e;(WR-c(#2?}S7&;AR4!a^P4F)%lpC0WHf6JaqNdAD)-C?C zMQ*WH25PL=rs_c5W)%g_6S)JZ29dk0+X9Ow%V);4Xv^X|0qS?s zUbbMRp(@moOJ?RIH`f;m`8M0FoLRd)YdBdry06MlUXb0q*`d22Yk;lZw|S(K`XJs> z6t;jd-^QG!IV0o`Rfijcv5?Ua_1DM3jUgix@rMD_8}$t~5H{+Y{E=#fix}aMKN5>H zM2t|d!QW7=IGO<0`x^l@0}A^a6}AZ!k%+=JH3Dh^HXMtDKwBRKHc}r16wc+*4Iu;A zCeQ}+KqLgE3KNNdBkYeV?M*N(4@N?e?tqb~5sC)=&DBv*fViQ_-y91^8=y1_EQCfC z1>jh?8QA=Mvob2`&)EdcV2d_`AQFUJn;;S#5fBN2xKXK4cEgA~MLoD|6(N`zhC7k4 zKNM8HN0o5rBT^6T;YhIA9|~bE(g3-^223irX&e+csta5o?n=^U4@ULg(_$w3f+SWmK|f~R0*~5D6AMgG>uNjI3B!(N`gFO&8`lL?6Wpi zPn#n9G3Uk{k&kAOA0vLD(M-sF=*XSbB?YDOFqCvq@gV(y%B|PxE3K6w$m)Eh;3w-oXn=sfR~GX8|j;HxDBcmdyq zL-lT1&U<79-y;_SZU-*6k?)mFAh;Nen>iXwFfdc9a7f%K40bu3mP6 zYd2IM<;dKl96iow5gp_C%WIDEq75&Sag@((KR^ZTbDpAcz@2X$j4t$Sp#)cvrt+8S zs9=yH*89;pIhC~3NTpCVi5QB@Kvlt$sgkGAbigzDbZX$~w1j6sf}grLK)pPZ`uI$H zw?trK8LeUysVmqiXK^p@B#pYL9BFqsaLWArUIK)q?Zck(sO|(#=HO-FZ4faLdnc&8 zf=7|+En%RU|2n{L#Y(&-&+*%P2;%_1eSpTD;I~0F(KyEc zKEUt9TpTMVuM2ZAL(4Umc#U%Y&!hYkHU7*Qf8mV(rN$yoiCdtMD3?p5uZvwuO2tj*D)?LnROzh~Fs$ z4XD3_=hsAkrt=4>@|5a_83?2mgXGG6C>dxR!jgZWpI#r)Z+x*jC~fEF9HmgbcH-H^XH$+}qI>xqI>-xgz%8VgcoBVzTj|@tzsX;t zxAAZm*HsqIv3$7=4D)h!>*E7b0?l2UW@v&4(C@p&b9TpW8TE~;=1j5 zz6dAU#kdvw2=1UZ^Dj7e2`+$M#;wjbkl7vlN3j2eSIac+k~-dM7r6JyOZQTfoJK!E zYjBX}$|R{o!Q4YJ@uJj~(4BOSRLNvAC`T8`6wv8(C2f|eG7T-ppJ=?C4xEdAPag5f zbX-(EPjh4ja1)frGsQ0f1nS%5m6=dc!Ov2SoB`2g+)oX*=<%p?Yi-e`yoc69^mN>< z^w9NkCd8C*hHgLuG8-m%WSY#eEATx2jm(9q1&D3GR7(vNB1$u*7ElplRS6e!J7Fs- z?@)opFF{qvk@OM-){XLAg`@t){CR|;uGs~>2FKAgd+5wLN2PH?xkUT9V?bg{Psluc zoqbH^&pj%OhpO)*Lt7AKUglzhs3QlzOpzav90fQss_V-8O;CypZ%63{@Trb00Bz^) zp=qO(mP?yf2 zin~x&sn)Q}E30LV!yJP@>ZmK4Gxv+K{_rWePs>x}xfQK!$e}A`2-+x{P9&eVCX@oiV zVXC)D(&27JLTZq#&zW0&Oty~=m*%XRFHbTYcYP?wNzdmv0+*6*M`V5_bM{gmlgwC= z;)pzHDV@HiNDjc7h2)Y?$Te~;cJy`fDfx6!vD_#(%ct>utK2RYzVDQ~F<(qSK$_)% z-vd6v_*rPUx2U*W4&qbfbMkpu^3Q9De_l)c^IGEn@3n*+LcPH0&vF^cY0oCo+Qe*= zEdHdoO?JxVZL&-HP~%OxLO!~QrkLb6d7MdwCKZ{uRF^AFs!(t4Gvy*vE;ePYDeFv{ zX42`Vd`!J5V9Li$o@A5lGWiOVO`O)I1WnnQGiA5^J8~SXxDU_$wl@5VhGpx~uQcFr vtF_#V)L$Nu)?o&)>v=4}}F(uao*i^v?j3aRrZnsxgdmXuyn+}XFWx2Lb8)2&B6 z>ejn`y%!-_EJ_-^Sd#Juz;fLOf z^(_iN@+O8O0qljOyoy>Um-2;ga-sVQ03b;CfH+ndz@l${JSXo4)ACbfb%<%G#*#+|TEYOODD z!Zb@HGXnbc1=fEZI2Oe*9YW{LBz%QKt4s)sX*!%v#0gqqJ@=$`o_%o~$9rpeS6Ua= zv4d8ouvw58Ws)Jshq|y4E{U#cNKb}d{JLgQQnRtBW_4XNh*hP%ZO6#!x@J+7rTveG zH1qSty0X4hmp1D*Bh8NMWJVQ^c99KdhZ3V$SJ!8gPAER=Sy$Khp{tukwm-f?=N4vl zeOgyHi!2I8bB~3%5&Yy>-BA<`S)(ynS{7h*!0~QKoLY=u@>aPj<>6ie)b*$p}j1 z6fTzcFj>wJzt47-{0At;L`=anl%j%oI$KbNV4)0gl(Sum2KEj34DY^jwyBuUzJ=;# zRIfx3J*dPM;yW<|_h2UOPooMuQH=-qGDvb4W?_he-86avAv}p%-YY>Iqv0FGZ}W0I z&1?8whW#gOoFV=fxpRmpL9J4#Pys~MMTn^)1l4p@DvNj?;;I=5)rOS13JvON;&yWB zm6)SeQSb#CUW;k!I+Uq3XjIqZ3bg}s)f1Sf_7FeGwwL@qG^s<>Jjebh=Bw9nrFw(- z1i9bKDfKp*)nC!Vwm|)z{kvGC&S5cc$t6Y^+KejV1gW2w=MWoe@YpEDNlrH$m( zSYa%qU^x~U*Wg;C9nHo{TxYCChjBMn8-rM5JW9NaZHWBi=rs0IGs6B^bQv#Wt?>%+ ztK^Q$JH~Hd8oytz!6*hX^9Ri;ajJrOoxv!JL9U%?j6 zD9tG`9q>;ipc8(IfTxO2eN2U3bd*A0fUjylw7v;9`}L3%Bj^~pHM5?^E&GYaT2J;B zzO~lkRvv1dMfx^;{eL;SHo|33cp=ynoYdSo$d0F?T`TOUnNE>cDCYs{Ko^W_&y$N#Y1U4yh?ZhKZ3zk zQtC?3#duc&uH?E>;NnqNO7s((UEJ8Dh>*yUnMMz+btkc-DN kzd+*|`3T$3GXZ{qSC~yXe}AGpwRM^2Y>9e3?fF>vZv%dog8%>k diff --git a/modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/HlsDownloaderModule.alt.kt b/modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/HlsDownloaderModule.alt.kt.bak similarity index 100% rename from modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/HlsDownloaderModule.alt.kt rename to modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/HlsDownloaderModule.alt.kt.bak diff --git a/modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/HlsDownloaderModule.kt b/modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/HlsDownloaderModule.kt index 4db5537d..3a3cd55a 100644 --- a/modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/HlsDownloaderModule.kt +++ b/modules/hls-downloader/android/src/main/java/expo/modules/hls-downloader/HlsDownloaderModule.kt @@ -41,15 +41,28 @@ class HlsDownloaderModule : Module() { OnCreate { android.util.Log.d(TAG, "Creating HLS Downloader module") val context = appContext.reactContext as Context - - val cacheDir = File(context.filesDir, "downloads") - if (!cacheDir.exists()) { - cacheDir.mkdirs() - android.util.Log.d(TAG, "Created base downloads directory: ${cacheDir.absolutePath}") + + // Create the base downloads directory + val baseDownloadsDir = File(context.filesDir, "downloads") + if (!baseDownloadsDir.exists()) { + baseDownloadsDir.mkdirs() + android.util.Log.d(TAG, "Created base downloads directory: ${baseDownloadsDir.absolutePath}") } val databaseProvider = StandaloneDatabaseProvider(context) - downloadCache = SimpleCache(cacheDir, NoOpCacheEvictor(), databaseProvider) + + // Initialize the cache with a temporary directory + val tempCacheDir = File(baseDownloadsDir, "temp") + if (!tempCacheDir.exists()) { + tempCacheDir.mkdirs() + android.util.Log.d(TAG, "Created temp cache directory: ${tempCacheDir.absolutePath}") + } + + downloadCache = SimpleCache( + tempCacheDir, + NoOpCacheEvictor(), + databaseProvider + ) val dataSourceFactory = DefaultHttpDataSource.Factory() .setUserAgent("Streamyfin/1.0") @@ -76,6 +89,24 @@ class HlsDownloaderModule : Module() { when (download.state) { Download.STATE_COMPLETED -> { android.util.Log.d(TAG, "Download completed for ${metadata.providedId}") + + // Move files from temp directory to providerId directory + val tempDir = File(baseDownloadsDir, "temp") + val providerDir = File(baseDownloadsDir, metadata.providedId) + if (tempDir.exists() && tempDir.isDirectory) { + tempDir.listFiles()?.forEach { file -> + val destination = File(providerDir, file.name) + if (file.renameTo(destination)) { + android.util.Log.d(TAG, "Moved ${file.name} to ${destination.absolutePath}") + } else { + android.util.Log.e(TAG, "Failed to move ${file.name} to ${destination.absolutePath}") + } + } + } + + // Generate the .m3u8 playlist + createM3U8Playlist(context, metadata.providedId) + sendEvent( "onComplete", mapOf( @@ -163,11 +194,11 @@ class HlsDownloaderModule : Module() { } Function("downloadHLSAsset") { providedId: String, url: String, metadata: Map? -> - android.util.Log.d(TAG, "Starting download for $providedId from $url") + android.util.Log.d(TAG, "Starting download for $providedId from $url") val startTime = System.currentTimeMillis() val context = appContext.reactContext as Context - // Create the directory for this download + // Create the specific download directory val downloadDir = File(context.filesDir, "downloads/$providedId") if (!downloadDir.exists()) { downloadDir.mkdirs() @@ -175,12 +206,15 @@ class HlsDownloaderModule : Module() { } try { - val downloadRequest = DownloadRequest.Builder( - providedId, - Uri.parse(url) - ) - .setStreamKeys(emptyList()) - .build() + // Create MediaItem with proper URI + val mediaItem = MediaItem.Builder() + .setUri(Uri.parse(url)) + .setCustomCacheKey(providedId) // This is optional and depends on the media type + .build() + + val downloadRequest = DownloadRequest.Builder(providedId, Uri.parse(url)) + .setData(providedId.toByteArray()) + .build() downloadManager.addDownload(downloadRequest) android.util.Log.d(TAG, "Download request added for $providedId") @@ -244,15 +278,14 @@ class HlsDownloaderModule : Module() { private fun saveMetadataFile(metadata: DownloadMetadata) { try { val context = appContext.reactContext as Context - // Create metadata file in internal storage + // Save the metadata file directly in the /downloads folder val metadataFile = File( context.filesDir, - "downloads/${metadata.providedId}/${metadata.providedId}.json" + "downloads/${metadata.providedId}.json" // Save outside the providerId folder ) - - // Ensure the parent directory exists + metadataFile.parentFile?.mkdirs() - + android.util.Log.d(TAG, "Saving metadata to: ${metadataFile.absolutePath}") metadataFile.writeText(JSONObject(metadata.metadata).toString()) } catch (e: Exception) { @@ -260,5 +293,68 @@ class HlsDownloaderModule : Module() { e.printStackTrace() } } -} + private fun createM3U8Playlist(context: Context, providerId: String) { + val providerDir = File(context.filesDir, "downloads/$providerId") + + // Check if the provider directory exists + if (!providerDir.exists() || !providerDir.isDirectory) { + android.util.Log.e("M3U8", "Provider directory does not exist: ${providerDir.absolutePath}") + return + } + + // List all subfolders (0/, 1/, 2/, etc.) + val subFolders = providerDir.listFiles { file -> + file.isDirectory && file.name.matches(Regex("\\d+")) // Match folders with numeric names + } + + if (subFolders.isNullOrEmpty()) { + android.util.Log.e("M3U8", "No subfolders found in ${providerDir.absolutePath}") + return + } + + // Collect all .v3.exo files from subfolders + val segmentFiles = mutableListOf() + subFolders.forEach { folder -> + val filesInFolder = folder.listFiles { file -> + file.isFile && file.name.endsWith(".v3.exo") + } + if (!filesInFolder.isNullOrEmpty()) { + segmentFiles.addAll(filesInFolder) + } + } + + if (segmentFiles.isEmpty()) { + android.util.Log.e("M3U8", "No .v3.exo files found in any subfolder") + return + } + + // Sort files by their numeric names (e.g., 102.124532.v3.exo) + val sortedFiles = segmentFiles.sortedBy { file -> + file.nameWithoutExtension.toDoubleOrNull() ?: 0.0 + } + + // Create the .m3u8 file + val m3u8File = File(providerDir, "playlist.m3u8") + m3u8File.bufferedWriter().use { writer -> + // Write the M3U8 header + writer.write("#EXTM3U\n") + writer.write("#EXT-X-VERSION:3\n") + writer.write("#EXT-X-TARGETDURATION:10\n") // Adjust target duration as needed + writer.write("#EXT-X-MEDIA-SEQUENCE:0\n") // Start sequence from 0 + + // Write each segment with absolute path + sortedFiles.forEach { file -> + val segmentDuration = 10.0 // Adjust segment duration as needed + val absolutePath = "file://${file.absolutePath}" // Add file:// prefix and use absolute path + writer.write("#EXTINF:$segmentDuration,\n") + writer.write("$absolutePath\n") // Use absolute path instead of relative + } + + // Write the end tag + writer.write("#EXT-X-ENDLIST\n") + } + + android.util.Log.d("M3U8", "Playlist created at: ${m3u8File.absolutePath}") +} +} \ No newline at end of file