pstream is dead; long live pstream taciturnaxolotl.github.io/pstream-ng/
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix le code

+143 -72
+2 -2
package.json
··· 1 1 { 2 2 "name": "sudo-flix", 3 - "version": "4.6.3", 3 + "version": "4.6.4", 4 4 "private": true, 5 5 "homepage": "https://sudo-flix.lol", 6 6 "scripts": { ··· 29 29 "@formkit/auto-animate": "^0.8.1", 30 30 "@headlessui/react": "^1.7.17", 31 31 "@ladjs/country-language": "^1.0.3", 32 - "@movie-web/providers": "^2.2.5", 32 + "@movie-web/providers": "^2.2.6", 33 33 "@noble/hashes": "^1.3.3", 34 34 "@plasmohq/messaging": "^0.6.1", 35 35 "@react-spring/web": "^9.7.3",
+11 -17
pnpm-lock.yaml
··· 22 22 specifier: ^1.0.3 23 23 version: 1.0.3 24 24 '@movie-web/providers': 25 - specifier: ^2.2.5 25 + specifier: ^2.2.6 26 26 version: 2.2.6 27 27 '@noble/hashes': 28 28 specifier: ^1.3.3 ··· 452 452 453 453 /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.3): 454 454 resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} 455 - peerDependencies: 456 455 '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 457 456 dependencies: 458 457 '@babel/core': 7.24.3 ··· 885 884 886 885 /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.3): 887 886 resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} 888 - engines: {node: '>=6.9.0'} 889 887 peerDependencies: 890 888 '@babel/core': ^7.0.0-0 891 889 dependencies: ··· 946 944 947 945 /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.3): 948 946 resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} 949 - engines: {node: '>=6.9.0'} 950 947 peerDependencies: 951 948 '@babel/core': ^7.0.0-0 952 949 dependencies: ··· 1644 1641 1645 1642 /@esbuild/linux-arm@0.20.2: 1646 1643 resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} 1647 - engines: {node: '>=12'} 1648 1644 cpu: [arm] 1649 1645 os: [linux] 1650 1646 requiresBuild: true ··· 2666 2662 2667 2663 /array-includes@3.1.8: 2668 2664 resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} 2669 - engines: {node: '>= 0.4'} 2670 2665 dependencies: 2671 2666 call-bind: 1.0.7 2672 2667 define-properties: 1.2.1 ··· 5144 5139 resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 5145 5140 dev: true 5146 5141 5147 - /node-domexception@1.0.0: 5148 - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 5149 - engines: {node: '>=10.5.0'} 5150 - dev: false 5151 - 5152 - /node-fetch-native@1.6.4: 5153 - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} 5142 + /node-fetch-native@1.4.0: 5143 + resolution: {integrity: sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==} 5154 5144 dev: false 5155 5145 5156 - /node-fetch@3.3.2: 5157 - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 5158 - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 5146 + /node-fetch@2.7.0: 5147 + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 5148 + engines: {node: 4.x || >=6.0.0} 5149 + peerDependencies: 5150 + encoding: ^0.1.0 5151 + peerDependenciesMeta: 5152 + encoding: 5153 + optional: true 5159 5154 dependencies: 5160 5155 data-uri-to-buffer: 4.0.1 5161 5156 fetch-blob: 3.2.0 ··· 5830 5825 5831 5826 /regenerate-unicode-properties@10.1.1: 5832 5827 resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} 5833 - engines: {node: '>=4'} 5834 5828 dependencies: 5835 5829 regenerate: 1.4.2 5836 5830 dev: true
+1 -1
src/assets/locales/fa.json
··· 386 386 "badge": "اکستنشن غیر فعال شد", 387 387 "enableExtension": "اکستنشن را فعال کنید", 388 388 "homeButton": "خانه", 389 - "text": "شما اکستنشن مووی-وب را نصب کردید. برای شروع استفاده از ان، شما نیاز به فعال کردن آن دارید", 389 + "text": "شما اکستنشن مووی-وب را نصب کردید. برای شروع استفاده از ان، نیاز به فعال کردن آن دارید", 390 390 "title": "لطفا اکستنشن را فعال کنید" 391 391 }, 392 392 "items": {
+95 -40
src/assets/locales/id.json
··· 4 4 "faqTitle": "Pertanyaan umum", 5 5 "q1": { 6 6 "body": "sudo-flix tidak menyimpan berkas media apapun. Ketika anda mengklik sesuatu untuk ditonton, aplikasi akan mencari berkas media di internet (saat media dimuat dan pada tab 'sumber media' anda dapat melihat sumber mana yang digunakan). sudo-flix tidak pernah mengunggah media apapun, semua media didapat melalui mekanisme pencarian di internet.", 7 - "title": "Dari mana konten media di sini berasal?" 7 + "title": "Dari mana konten berasal?" 8 8 }, 9 9 "q2": { 10 10 "body": "Kami tidak menerima permintaan penambahan serial televisi atau film, sudo-flix tidak mengelola konten apapun. Semua konten ditonton melalui sumber-sumber dari internet.", ··· 26 26 "deviceNamePlaceholder": "Perangkat personal", 27 27 "generate": { 28 28 "description": "Kombinasi kata ini berfungsi sebagai nama pengguna sekaligus kata sandi anda. Pastikan untuk menyimpannya dengan aman karena anda memerlukannya untuk masuk ke akun anda", 29 - "next": "Saya sudah menyimpan kombinasi kata di atas", 29 + "next": "Saya sudah menyimpan kombinasi kata", 30 30 "passphraseFrameLabel": "Kombinasi kata", 31 - "title": "Kombinasi kata anda" 31 + "title": "Kombinasi kata Anda" 32 32 }, 33 33 "hasAccount": "Sudah memiliki akun? <0>Masuk disini.</0>", 34 34 "login": { 35 - "description": "Mohon masukkan kombinasi kata anda untuk masuk ke akun anda", 35 + "description": "Mohon masukkan kombinasi kata anda untuk masuk ke akun Anda", 36 36 "deviceLengthError": "Mohon masukkan nama perangkat", 37 37 "passphraseLabel": "12 kombinasi kata unik", 38 38 "passphrasePlaceholder": "Kombinasi kata", 39 39 "submit": "Masuk", 40 - "title": "Masuk ke akun anda", 41 - "validationError": "Kombinasi kata unik salah" 40 + "title": "Masuk ke akun Anda", 41 + "validationError": "Kombinasi kata salah atau tidak lengkap" 42 42 }, 43 43 "register": { 44 44 "information": { 45 - "color1": "Gradasi warna profil pertama", 46 - "color2": "Gradasi warna profil kedua", 45 + "color1": "Warna profil pertama", 46 + "color2": "Warna profil kedua", 47 47 "header": "Masukkan nama perangkat anda lalu pilih warna latar belakang dan ikon pengguna yang ingin anda gunakan", 48 48 "icon": "Ikon pengguna", 49 49 "next": "Berikutnya", ··· 52 52 }, 53 53 "trust": { 54 54 "failed": { 55 - "text": "Apakah anda mengkonfigurasi server dengan benar?", 55 + "text": "Apakah Anda mengkonfigurasi server dengan benar?", 56 56 "title": "Gagal terhubung dengan server" 57 57 }, 58 - "host": "Anda ingin terhubung ke <0>{{hostname}}</0> - mohon konfirmasi anda mempercayai server ini sebelum anda membuat akun", 58 + "host": "Anda ingin terhubung ke <0>{{hostname}}</0> - mohon konfirmasi Anda mempercayai server ini sebelum Anda membuat akun", 59 59 "no": "Kembali", 60 - "title": "Apakah anda mempercayai server ini?", 61 - "yes": "Saya percaya" 60 + "noHost": "Server belum dikonfigurasi, maka dari itu Anda tidak dapat membuat akun", 61 + "noHostTitle": "Server belum dikonfigurasi!", 62 + "title": "Apakah Anda mempercayai server ini?", 63 + "yes": "Saya percaya server ini" 62 64 }, 63 65 "verify": { 64 - "description": "Mohon masukkan kombinasi kata pribadi anda sebelumnya untuk mengonfirmasi bahwa anda telah menyimpannya untuk melanjutkan proses pembuatan akun", 66 + "description": "Mohon masukkan kombinasi kata pribadi Anda sebelumnya untuk mengonfirmasi bahwa Anda telah menyimpannya untuk melanjutkan proses pembuatan akun", 65 67 "invalidData": "Data tidak valid", 66 68 "noMatch": "Kombinasi kata tidak cocok", 67 - "passphraseLabel": "12 kombinasi kata pribadi anda", 69 + "passphraseLabel": "12 kombinasi kata Anda", 68 70 "recaptchaFailed": "Validasi reCaptcha gagal", 69 71 "register": "Buat akun", 70 - "title": "Konfirmasi kombinasi kata pribadi anda" 72 + "title": "Konfirmasi kombinasi kata Anda" 71 73 } 72 74 }, 73 75 "errors": { 74 76 "badge": "Terjadi masalah", 75 - "details": "Detail eror", 77 + "details": "Rincian kesalahan", 76 78 "reloadPage": "Muat ulang halaman", 77 - "showError": "Lihat detail eror", 79 + "showError": "Lihat rincian kesalahan", 78 80 "title": "Kami mengalami galat!" 79 81 }, 80 82 "footer": { ··· 87 89 "dmca": "DMCA", 88 90 "github": "GitHub" 89 91 }, 90 - "tagline": "Tonton serial televisi dan film favorit anda dengan aplikasi streaming open source ini." 92 + "tagline": "Tonton serial televisi dan film favorit anda dengan aplikasi streaming sumber terbuka ini." 91 93 }, 92 94 "global": { 93 95 "name": "sudo-flix", ··· 109 111 "sectionTitle": "Lanjut menonton" 110 112 }, 111 113 "mediaList": { 112 - "stopEditing": "Berhenti mengubah" 114 + "stopEditing": "Berhenti menyunting" 113 115 }, 114 116 "search": { 115 117 "allResults": "Hanya itu yang kami punya!", ··· 131 133 "day": { 132 134 "default": "Apa yang ingin anda tonton sore ini?", 133 135 "extra": [ 134 - "Lagi pengen nonton genre Adventure? Jurassic Park mungkin cocok buat anda." 136 + "Merasa suka bertualang? Jurassic Park mungkin pilihan cocok untuk Anda." 135 137 ] 136 138 }, 137 139 "morning": { ··· 139 141 "extra": ["Kayaknya film Before Sunrise bagus deh"] 140 142 }, 141 143 "night": { 142 - "default": "Apa yang ingin anda tonton malam ini?", 143 - "extra": ["Capek? Katanya The Exocist rekomended."] 144 + "default": "Apa yang ingin Anda tonton malam ini?", 145 + "extra": ["Capek? Saya dengar The Exocist bagus."] 144 146 } 145 147 } 146 148 }, ··· 149 151 "types": { 150 152 "movie": "Film", 151 153 "show": "Serial TV" 152 - } 154 + }, 155 + "unreleased": "Belum dirilis" 153 156 }, 154 157 "navigation": { 155 158 "banner": { 156 - "offline": "Periksa koneksi internet anda" 159 + "offline": "Periksa koneksi internet Anda" 157 160 }, 158 161 "menu": { 159 162 "about": "Tentang kami", ··· 167 170 "notFound": { 168 171 "badge": "Tidak ditemukan", 169 172 "goHome": "Kembali", 170 - "message": "Kami sudah mencari dimana-mana: di bawah tempat sampah, di lemari, di belakang server proxy, tapi tetap gagal menemukan halaman yang anda cari.", 173 + "message": "Kami sudah mencari dimana-mana: di bawah tempat sampah, di lemari, di belakang server proxy, tetapi tidak dapat menemukan halaman yang Anda cari.", 171 174 "title": "Gagal menemukan halaman" 172 175 }, 173 176 "onboarding": { 174 177 "defaultConfirm": { 175 178 "cancel": "Batal", 176 - "title": "Apa kamu yakin?" 179 + "confirm": "Gunakan pengaturan bawaan", 180 + "description": "Pengaturan bawaan tidak memiliki streaming terbaik dan bisa menjadi sangat lambat.", 181 + "title": "Apa Anda yakin?" 177 182 }, 178 183 "extension": { 179 184 "back": "Kembali", 180 - "explainerIos": "Sayangnya, ekstensi browser tidak didukung di iOS, Tekan <bold>Kembali<bold> untuk memilih opsi lain." 185 + "explainer": "Menggunakan ekstensi browser, Anda dapat mendapatkan streaming terbaik yang kami tawarkan. Dengan instalasi sederhana.", 186 + "explainerIos": "Sayangnya, ekstensi browser tidak didukung di iOS, Tekan <bold>Kembali<bold> untuk memilih opsi lain.", 187 + "extensionHelp": "Jika Anda telah menginstal ekstensi tetapi tidak terdeteksi, <bold>buka ekstensi melalui menu ekstensi browser Anda</bold> dan ikuti instruksi di layar.", 188 + "linkChrome": "Instal ekstensi Chrome", 189 + "linkFirefox": "Instal ekstensi Firefox", 190 + "notDetecting": "Terinstal di Chrome tetapi situs tidak mendeteksinya? Coba muat ulang halaman!", 191 + "notDetectingAction": "Muat ulang halaman", 192 + "status": { 193 + "disallowed": "Ekstensi tidak diaktifkan untuk halaman ini", 194 + "disallowedAction": "Aktifkan ekstensi", 195 + "failed": "Gagal meminta status", 196 + "loading": "Menunggu Anda menginstal ekstensi", 197 + "outdated": "Versi ekstensi terlalu tua", 198 + "success": "Ekstensi berkerja sesuai harapan!" 199 + }, 200 + "submit": "Lanjutkan", 201 + "title": "Mari mulai dengan ekstensi" 202 + }, 203 + "proxy": { 204 + "back": "Kembali", 205 + "explainer": "Menggunakan metode proxy, Anda dapat mendapatkan streaming berkualitas baik dengan membuat layanan proxy mandiri.", 206 + "input": { 207 + "errorConnection": "Tidak dapat terhubung ke proxy", 208 + "errorInvalidUrl": "URL tidak valid", 209 + "errorNotProxy": "Mengharapkan proxy tapi menerima situs", 210 + "label": "URL proxy", 211 + "placeholder": "https://" 212 + }, 213 + "link": "Belajar cara membuat proxy", 214 + "title": "Mari buat proxy baru" 215 + }, 216 + "start": { 217 + "explainer": "Untuk mendapatkan streaming terbaik, Anda perlu memilih metode streaming yang Anda ingin gunakan.", 218 + "options": { 219 + "default": { 220 + "text": "Saya tidak menginginkan streaming kualitas baik, <0 /> <1>gunakan pengaturan bawaan</1>" 221 + }, 222 + "extension": { 223 + "action": "Instal ekstensi", 224 + "description": "Instal ekstensi browser dan dapatkan akses ke sumber terbaik.", 225 + "quality": "Kualitas terbaik", 226 + "title": "Ekstensi browser" 227 + }, 228 + "proxy": { 229 + "action": "Atur proxy", 230 + "description": "Atur proxy dalam hanya 5 menit dan dapatkan akses ke sumber terbaik.", 231 + "quality": "Kualitas baik" 232 + } 233 + } 181 234 } 182 235 }, 183 236 "overlays": { ··· 193 246 }, 194 247 "menus": { 195 248 "downloads": { 249 + "copyHlsPlaylist": "Salin tautan daftar putar HLS", 196 250 "disclaimer": "Tautan unduhan diambil langsung dari penyedia pihak ketiga. Aplikasi ini tidak memiliki kendali bagaimana unduhan disediakan.", 197 - "downloadSubtitle": "Unduh subtitle", 251 + "downloadSubtitle": "Unduh subtitle saat ini", 198 252 "downloadVideo": "Unduh media", 199 - "hlsDisclaimer": "Tautan unduhan diambil langsung dari penyedia pihak ketiga. Aplikasi ini tidak memiliki kendali bagaimana unduhan disediakan. Harap diperhatikan, anda akan mengunduh HLS playlist, media ini hanya ditunjukan bagi pengguna tingkat lanjut.", 253 + "hlsDisclaimer": "Unduhan didapatkan langsung dari penyedia. sudo-flix tidak memiliki kendali bagaimana unduan disediakan.<br /><br />Harap diperhatikan bahwa Anda mengunduh daftar putar HLS, <bold>ini tidak direkomendasikan untuk diunduh jika Anda tidak terbiasa dengan format streaming tingkat lanjut</bold>Coba sumber berbeda untuk format berbeda.", 200 254 "onAndroid": { 201 - "1": "Untuk mengunduh di Android, klik tombol unduh, lalu di halaman baru <bold>klik dan tahan</bold> pada video, lalu pilih <bold>save</bold>.", 255 + "1": "Untuk mengunduh di Android, klik tombol unduh, lalu di halaman baru <bold>klik dan tahan</bold> pada video, lalu pilih <bold>simpan</bold>.", 202 256 "shortTitle": "Unduh / Android", 203 257 "title": "Unduh di Android" 204 258 }, ··· 216 270 }, 217 271 "episodes": { 218 272 "button": "Episode", 219 - "emptyState": "Tidak ada episode di season ini, check lagi nanti!", 273 + "emptyState": "Tidak ada episode di season ini, periksa kembali nanti!", 220 274 "episodeBadge": "E{{episode}}", 221 - "loadingError": "Eror memuat season", 275 + "loadingError": "Gagal memuat season", 222 276 "loadingList": "Memuat...", 223 - "loadingTitle": "Memuat..." 277 + "loadingTitle": "Memuat...", 278 + "unairedEpisodes": "Satu atau lebih episode dalam season ini telah dinonaktifkan karena mereka belum ditayangkan." 224 279 }, 225 280 "playback": { 226 281 "speedLabel": "Kecepatan pemutar", ··· 228 283 }, 229 284 "quality": { 230 285 "automaticLabel": "Otomatis", 231 - "hint": "Anda dapat mencoba <0>mengganti sumber media</0> untuk mendapatkan opsi kualitas yang berbeda.", 232 - "iosNoQuality": "Karena keterbatasan dari Apple, opsi kualitas pada sumber ini tidak tersedia untuk iOS. Anda dapat mencoba <0>mengganti sumber media</0> untuk mendapatkan opsi kualitas yang berbeda.", 286 + "hint": "Anda dapat mencoba <0>mengganti sumber</0> untuk mendapatkan opsi kualitas yang berbeda.", 287 + "iosNoQuality": "Karena keterbatasan dari Apple, opsi kualitas pada sumber ini tidak tersedia untuk iOS. Anda dapat mencoba <0>mengganti sumber</0> untuk mendapatkan opsi kualitas yang berbeda.", 233 288 "title": "Kualitas" 234 289 }, 235 290 "settings": { 236 291 "downloadItem": "Unduh", 237 - "enableSubtitles": "Hidupkan subtitle", 292 + "enableSubtitles": "Aktifkan subtitle", 238 293 "experienceSection": "Pengaturan tambahan", 239 294 "playbackItem": "Pengaturan pemutar", 240 295 "qualityItem": "Kualitas", ··· 244 299 }, 245 300 "sources": { 246 301 "failed": { 247 - "text": "Terjadi galat saat mencoba mencari media, mohon pilih sumber yang lain.", 302 + "text": "Terjadi galat saat mencoba mencari media, mohon pilih sumber lain.", 248 303 "title": "Gagal memuat data" 249 304 }, 250 305 "noEmbeds": { 251 - "text": "Kami tidak dapat menemukan tautan, mohon pilih sumber yang lain.", 306 + "text": "Kami tidak dapat menemukan tautan, mohon pilih sumber lain.", 252 307 "title": "Tautan tidak ditemukan" 253 308 }, 254 309 "noStream": { 255 - "text": "Sumber ini tidak memiliki media untuk film atau seri yang anda cari.", 310 + "text": "Sumber ini tidak memiliki media untuk film atau seri yang Anda cari.", 256 311 "title": "Tidak ada media" 257 312 }, 258 313 "title": "Sumber", 259 314 "unknownOption": "Tidak diketahui" 260 315 }, 261 316 "subtitles": { 262 - "customChoice": "Pilih subtitle dari file", 317 + "customChoice": "Jatuhkan atau unggah berkas", 263 318 "customizeLabel": "Sesuaikan", 264 319 "offChoice": "Matikan", 265 320 "settings": {
+11 -7
src/assets/locales/pt-BR.json
··· 138 138 }, 139 139 "morning": { 140 140 "default": "O que você gostaria de assistir esta manhã?", 141 - "extra": [ 142 - "Ouvi dizer que Antes do Amanhecer é bom" 143 - ] 141 + "extra": ["Ouvi dizer que Antes do Amanhecer é bom"] 144 142 }, 145 143 "night": { 146 144 "default": "O que você gostaria de assistir esta noite?", 147 - "extra": [ 148 - "Cansado? Ouvi dizer que O Exorcista é bom." 149 - ] 145 + "extra": ["Cansado? Ouvi dizer que O Exorcista é bom."] 150 146 } 151 147 } 152 148 }, ··· 155 151 "types": { 156 152 "movie": "Filme", 157 153 "show": "Série" 158 - } 154 + }, 155 + "unreleased": "Não lançado" 159 156 }, 160 157 "navigation": { 161 158 "banner": { ··· 381 378 "title": "Falha ao reproduzir o vídeo!" 382 379 }, 383 380 "scraping": { 381 + "extensionFailure": { 382 + "badge": "Extensão desativada", 383 + "enableExtension": "Ativar extensão", 384 + "homeButton": "Ir para o início", 385 + "text": "Você instalou a extensão sudo-flix. Para começar a usá-la, você precisa ativar a extensão neste site.", 386 + "title": "Por favor, ative a extensão" 387 + }, 384 388 "items": { 385 389 "failure": "Ocorreu um erro", 386 390 "notFound": "Não tem o vídeo",
+1 -1
src/assets/locales/ru.json
··· 320 320 "unknownOption": "Неизвестный" 321 321 }, 322 322 "subtitles": { 323 - "customChoice": "Перетащите или загрузите файл", 323 + "customChoice": "Перетащите файл или нажмите для загрузки", 324 324 "customizeLabel": "Настроить", 325 325 "dropSubtitleFile": "Перетащите файл субтитров", 326 326 "offChoice": "Выключить",
+1
src/backend/extension/messaging.ts
··· 9 9 export const RULE_IDS = { 10 10 PREPARE_STREAM: 1, 11 11 SET_DOMAINS_HLS: 2, 12 + SET_DOMAINS_HLS_AUDIO: 3, 12 13 }; 13 14 14 15 // for some reason, about 500 ms is needed after
+6 -4
src/backend/metadata/getmeta.ts
··· 135 135 throw err; 136 136 } 137 137 138 - let imdbId = data.external_ids.find((v) => v.provider === "imdb_latest") 139 - ?.external_id; 138 + let imdbId = data.external_ids.find( 139 + (v) => v.provider === "imdb_latest", 140 + )?.external_id; 140 141 if (!imdbId) 141 142 imdbId = data.external_ids.find((v) => v.provider === "imdb")?.external_id; 142 143 143 - let tmdbId = data.external_ids.find((v) => v.provider === "tmdb_latest") 144 - ?.external_id; 144 + let tmdbId = data.external_ids.find( 145 + (v) => v.provider === "tmdb_latest", 146 + )?.external_id; 145 147 if (!tmdbId) 146 148 tmdbId = data.external_ids.find((v) => v.provider === "tmdb")?.external_id; 147 149
+15
src/components/player/display/base.ts
··· 191 191 }, 192 192 }); 193 193 }); 194 + hls.on(Hls.Events.AUDIO_TRACK_LOADED, async (_, data) => { 195 + const chunkUrlsDomains = data.details.fragments.map( 196 + (v) => new URL(v.url).hostname, 197 + ); 198 + const chunkUrls = [...new Set(chunkUrlsDomains)]; 199 + 200 + await setDomainRule({ 201 + ruleId: RULE_IDS.SET_DOMAINS_HLS_AUDIO, 202 + targetDomains: chunkUrls, 203 + requestHeaders: { 204 + ...src.preferredHeaders, 205 + ...src.headers, 206 + }, 207 + }); 208 + }); 194 209 } 195 210 }); 196 211 hls.on(Hls.Events.LEVEL_SWITCHED, () => {