From ed2006b83f42c84769bc6e93446e02e40e3a23af Mon Sep 17 00:00:00 2001 From: imper1aldev <23511335+imper1aldev@users.noreply.github.com> Date: Sun, 18 Aug 2024 19:25:45 -0600 Subject: [PATCH] fix(src): Multiple updates Closes #93 Closes #1 Closes #133 Closes #142 (Yeah, this extension had a bug but someone closed it before fixing it.) --- .../lib/voeextractor/VoeExtractor.kt | 12 +- src/all/chineseanime/build.gradle | 2 +- src/all/javguru/build.gradle | 2 +- src/all/lmanime/build.gradle | 2 +- src/all/supjav/build.gradle | 2 +- src/ar/anime4up/build.gradle | 2 +- src/ar/animerco/build.gradle | 2 +- src/ar/arabseed/build.gradle | 2 +- src/ar/asia2tv/build.gradle | 2 +- src/ar/egydead/build.gradle | 2 +- src/ar/okanime/build.gradle | 2 +- src/de/animebase/build.gradle | 2 +- src/de/animeloads/build.gradle | 2 +- src/de/animetoast/build.gradle | 2 +- src/de/aniworld/build.gradle | 2 +- src/de/cineclix/build.gradle | 2 +- src/de/cinemathek/build.gradle | 2 +- src/de/einfach/build.gradle | 2 +- src/de/filmpalast/build.gradle | 2 +- src/de/kinoking/build.gradle | 2 +- src/de/kool/build.gradle | 2 +- src/de/moflixstream/build.gradle | 2 +- src/de/movie4k/build.gradle | 2 +- src/de/serienstream/build.gradle | 2 +- src/en/allanimechi/build.gradle | 2 +- src/en/animegg/build.gradle | 7 + .../animegg/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 893 bytes .../animegg/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 586 bytes .../animegg/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 1057 bytes .../animegg/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1550 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 2119 bytes .../animeextension/en/animegg/AnimeGG.kt | 279 ++++++++++++++++++ src/en/animekhor/build.gradle | 2 +- src/en/animenosub/build.gradle | 2 +- src/en/asiaflix/build.gradle | 2 +- src/en/asianload/build.gradle | 2 +- src/en/dramacool/build.gradle | 2 +- src/en/gogoanime/build.gradle | 2 +- src/en/multimovies/build.gradle | 2 +- src/es/animefenix/build.gradle | 2 +- src/es/animeflv/build.gradle | 2 +- src/es/animeid/build.gradle | 1 + .../animeextension/es/animeid/AnimeID.kt | 21 +- src/es/animelatinohd/build.gradle | 2 +- src/es/animemovil/build.gradle | 2 +- src/es/asialiveaction/build.gradle | 2 +- src/es/cine24h/build.gradle | 14 + .../cine24h/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5366 bytes .../cine24h/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2510 bytes .../cine24h/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7849 bytes .../cine24h/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 15918 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 26476 bytes .../animeextension/es/cine24h/Cine24h.kt | 272 +++++++++++++++++ src/es/cinecalidad/build.gradle | 2 +- src/es/cineplus123/build.gradle | 2 +- src/es/cuevana/build.gradle | 2 +- src/es/doramasflix/build.gradle | 2 +- src/es/ennovelas/build.gradle | 2 +- src/es/gnula/build.gradle | 2 +- src/es/hackstore/build.gradle | 2 +- src/es/hentaila/build.gradle | 2 +- src/es/hentaitk/build.gradle | 2 +- src/es/jkanime/build.gradle | 2 +- src/es/lacartoons/build.gradle | 2 +- src/es/legionanime/build.gradle | 2 +- src/es/metroseries/build.gradle | 2 +- src/es/mundodonghua/build.gradle | 2 +- src/es/pelisforte/build.gradle | 2 +- src/es/pelisplushd/build.gradle | 2 +- src/es/tioanimeh/build.gradle | 2 +- src/es/tiodonghua/build.gradle | 2 +- src/es/veranimes/build.gradle | 2 +- src/fr/anisama/build.gradle | 2 +- src/fr/empirestreaming/build.gradle | 2 +- src/fr/otakufr/build.gradle | 2 +- src/fr/wiflix/build.gradle | 2 +- src/id/otakudesu/build.gradle | 2 +- src/it/toonitalia/build.gradle | 2 +- src/pt/animesgratis/build.gradle | 2 +- src/pt/pobreflix/build.gradle | 2 +- src/tr/animeler/build.gradle | 2 +- src/tr/anizm/build.gradle | 2 +- src/tr/tranimeizle/build.gradle | 2 +- src/tr/turkanime/build.gradle | 2 +- 84 files changed, 665 insertions(+), 75 deletions(-) create mode 100644 src/en/animegg/build.gradle create mode 100644 src/en/animegg/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/animegg/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/animegg/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/animegg/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/animegg/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/animegg/src/eu/kanade/tachiyomi/animeextension/en/animegg/AnimeGG.kt create mode 100644 src/es/cine24h/build.gradle create mode 100644 src/es/cine24h/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/cine24h/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/cine24h/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/cine24h/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/cine24h/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/cine24h/src/eu/kanade/tachiyomi/animeextension/es/cine24h/Cine24h.kt diff --git a/lib/voe-extractor/src/main/java/eu/kanade/tachiyomi/lib/voeextractor/VoeExtractor.kt b/lib/voe-extractor/src/main/java/eu/kanade/tachiyomi/lib/voeextractor/VoeExtractor.kt index 40878ebc..1e30fb57 100644 --- a/lib/voe-extractor/src/main/java/eu/kanade/tachiyomi/lib/voeextractor/VoeExtractor.kt +++ b/lib/voe-extractor/src/main/java/eu/kanade/tachiyomi/lib/voeextractor/VoeExtractor.kt @@ -22,6 +22,8 @@ class VoeExtractor(private val client: OkHttpClient) { private val base64Regex = Regex("'.*'") + private val scriptBase64Regex = "(let|var)\\s+\\w+\\s*=\\s*'(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)';".toRegex() + @Serializable data class VideoLinkDTO(val file: String) @@ -36,8 +38,9 @@ class VoeExtractor(private val client: OkHttpClient) { document = clientDdos.newCall(GET(originalUrl)).execute().asJsoup() } - val script = document.selectFirst("script:containsData(const sources), script:containsData(var sources), script:containsData(wc0)") - ?.data() + val alternativeScript = document.select("script").find { scriptBase64Regex.containsMatchIn(it.data()) }?.data() + val script = document.selectFirst("script:containsData(const sources), script:containsData(var sources), script:containsData(wc0)")?.data() + ?: alternativeScript ?: return emptyList() val playlistUrl = when { // Layout 1 @@ -46,10 +49,11 @@ class VoeExtractor(private val client: OkHttpClient) { if (linkRegex.matches(link)) link else String(Base64.decode(link, Base64.DEFAULT)) } // Layout 2 - script.contains("wc0") -> { + script.contains("wc0") || alternativeScript != null -> { val base64 = base64Regex.find(script)!!.value val decoded = Base64.decode(base64, Base64.DEFAULT).let(::String) - json.decodeFromString<VideoLinkDTO>(decoded).file + + json.decodeFromString<VideoLinkDTO>(if (alternativeScript != null) decoded.reversed() else decoded).file } else -> return emptyList() } diff --git a/src/all/chineseanime/build.gradle b/src/all/chineseanime/build.gradle index 70141c43..0ef78665 100644 --- a/src/all/chineseanime/build.gradle +++ b/src/all/chineseanime/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.ChineseAnime' themePkg = 'animestream' baseUrl = 'https://www.chineseanime.vip' - overrideVersionCode = 8 + overrideVersionCode = 9 } apply from: "$rootDir/common.gradle" diff --git a/src/all/javguru/build.gradle b/src/all/javguru/build.gradle index 4d328596..7da90918 100644 --- a/src/all/javguru/build.gradle +++ b/src/all/javguru/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Jav Guru' extClass = '.JavGuru' - extVersionCode = 15 + extVersionCode = 16 isNsfw = true } diff --git a/src/all/lmanime/build.gradle b/src/all/lmanime/build.gradle index 4710fec1..bafe69d0 100644 --- a/src/all/lmanime/build.gradle +++ b/src/all/lmanime/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.LMAnime' themePkg = 'animestream' baseUrl = 'https://lmanime.com' - overrideVersionCode = 6 + overrideVersionCode = 7 } apply from: "$rootDir/common.gradle" diff --git a/src/all/supjav/build.gradle b/src/all/supjav/build.gradle index b3bad3c1..beb008ea 100644 --- a/src/all/supjav/build.gradle +++ b/src/all/supjav/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'SupJav' extClass = '.SupJavFactory' - extVersionCode = 9 + extVersionCode = 10 isNsfw = true } diff --git a/src/ar/anime4up/build.gradle b/src/ar/anime4up/build.gradle index 54b07aca..c78aef15 100644 --- a/src/ar/anime4up/build.gradle +++ b/src/ar/anime4up/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Anime4up' extClass = '.Anime4Up' - extVersionCode = 57 + extVersionCode = 58 } apply from: "$rootDir/common.gradle" diff --git a/src/ar/animerco/build.gradle b/src/ar/animerco/build.gradle index dad3de1c..7676a28e 100644 --- a/src/ar/animerco/build.gradle +++ b/src/ar/animerco/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Animerco' extClass = '.Animerco' - extVersionCode = 37 + extVersionCode = 38 } apply from: "$rootDir/common.gradle" diff --git a/src/ar/arabseed/build.gradle b/src/ar/arabseed/build.gradle index 7f6ac620..cc4d4962 100644 --- a/src/ar/arabseed/build.gradle +++ b/src/ar/arabseed/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Arab Seed' extClass = '.ArabSeed' - extVersionCode = 13 + extVersionCode = 14 } apply from: "$rootDir/common.gradle" diff --git a/src/ar/asia2tv/build.gradle b/src/ar/asia2tv/build.gradle index 14987244..eea0e809 100644 --- a/src/ar/asia2tv/build.gradle +++ b/src/ar/asia2tv/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'asia2tv' extClass = '.Asia2TV' - extVersionCode = 18 + extVersionCode = 19 } apply from: "$rootDir/common.gradle" diff --git a/src/ar/egydead/build.gradle b/src/ar/egydead/build.gradle index f55a495f..2ad2e37e 100644 --- a/src/ar/egydead/build.gradle +++ b/src/ar/egydead/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Egy Dead' extClass = '.EgyDead' - extVersionCode = 12 + extVersionCode = 13 } apply from: "$rootDir/common.gradle" diff --git a/src/ar/okanime/build.gradle b/src/ar/okanime/build.gradle index 6fa1f114..a574966d 100644 --- a/src/ar/okanime/build.gradle +++ b/src/ar/okanime/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Okanime' extClass = '.Okanime' - extVersionCode = 10 + extVersionCode = 11 } apply from: "$rootDir/common.gradle" diff --git a/src/de/animebase/build.gradle b/src/de/animebase/build.gradle index 5feedbe2..2a1a3e80 100644 --- a/src/de/animebase/build.gradle +++ b/src/de/animebase/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Anime-Base' extClass = '.AnimeBase' - extVersionCode = 24 + extVersionCode = 25 isNsfw = true } diff --git a/src/de/animeloads/build.gradle b/src/de/animeloads/build.gradle index 69a8bb45..443c1111 100644 --- a/src/de/animeloads/build.gradle +++ b/src/de/animeloads/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Anime-Loads' extClass = '.AnimeLoads' - extVersionCode = 15 + extVersionCode = 16 isNsfw = true } diff --git a/src/de/animetoast/build.gradle b/src/de/animetoast/build.gradle index e3f402e4..b753c5ca 100644 --- a/src/de/animetoast/build.gradle +++ b/src/de/animetoast/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AnimeToast' extClass = '.AnimeToast' - extVersionCode = 14 + extVersionCode = 15 } apply from: "$rootDir/common.gradle" diff --git a/src/de/aniworld/build.gradle b/src/de/aniworld/build.gradle index 6734fb8a..c7486c8e 100644 --- a/src/de/aniworld/build.gradle +++ b/src/de/aniworld/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AniWorld' extClass = '.AniWorld' - extVersionCode = 23 + extVersionCode = 24 } apply from: "$rootDir/common.gradle" diff --git a/src/de/cineclix/build.gradle b/src/de/cineclix/build.gradle index 2854333f..069ad729 100644 --- a/src/de/cineclix/build.gradle +++ b/src/de/cineclix/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'CineClix' extClass = '.CineClix' - extVersionCode = 14 + extVersionCode = 15 } apply from: "$rootDir/common.gradle" diff --git a/src/de/cinemathek/build.gradle b/src/de/cinemathek/build.gradle index 31a467a6..84230da7 100644 --- a/src/de/cinemathek/build.gradle +++ b/src/de/cinemathek/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Cinemathek' themePkg = 'dooplay' baseUrl = 'https://cinemathek.net' - overrideVersionCode = 20 + overrideVersionCode = 21 isNsfw = true } diff --git a/src/de/einfach/build.gradle b/src/de/einfach/build.gradle index 1ad2b145..868eeabd 100644 --- a/src/de/einfach/build.gradle +++ b/src/de/einfach/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Einfach' extClass = '.Einfach' - extVersionCode = 10 + extVersionCode = 11 } apply from: "$rootDir/common.gradle" diff --git a/src/de/filmpalast/build.gradle b/src/de/filmpalast/build.gradle index 58ba652a..1b8b6531 100644 --- a/src/de/filmpalast/build.gradle +++ b/src/de/filmpalast/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'FilmPalast' extClass = '.FilmPalast' - extVersionCode = 17 + extVersionCode = 18 } apply from: "$rootDir/common.gradle" diff --git a/src/de/kinoking/build.gradle b/src/de/kinoking/build.gradle index 12567fbb..be32a930 100644 --- a/src/de/kinoking/build.gradle +++ b/src/de/kinoking/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Kinoking' themePkg = 'dooplay' baseUrl = 'https://kinoking.cc' - overrideVersionCode = 21 + overrideVersionCode = 22 } apply from: "$rootDir/common.gradle" diff --git a/src/de/kool/build.gradle b/src/de/kool/build.gradle index 2fd2a972..c8735707 100644 --- a/src/de/kool/build.gradle +++ b/src/de/kool/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Kool' extClass = '.Kool' - extVersionCode = 11 + extVersionCode = 12 } apply from: "$rootDir/common.gradle" diff --git a/src/de/moflixstream/build.gradle b/src/de/moflixstream/build.gradle index 50b1262d..4d8ddf91 100644 --- a/src/de/moflixstream/build.gradle +++ b/src/de/moflixstream/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Moflix-Stream' extClass = '.MoflixStream' - extVersionCode = 8 + extVersionCode = 9 } apply from: "$rootDir/common.gradle" diff --git a/src/de/movie4k/build.gradle b/src/de/movie4k/build.gradle index 46b5a639..f77bcc76 100644 --- a/src/de/movie4k/build.gradle +++ b/src/de/movie4k/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Movie4k' extClass = '.Movie4k' - extVersionCode = 10 + extVersionCode = 11 } apply from: "$rootDir/common.gradle" diff --git a/src/de/serienstream/build.gradle b/src/de/serienstream/build.gradle index 2cdfacc9..dc4557e5 100644 --- a/src/de/serienstream/build.gradle +++ b/src/de/serienstream/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Serienstream' extClass = '.Serienstream' - extVersionCode = 18 + extVersionCode = 19 } apply from: "$rootDir/common.gradle" diff --git a/src/en/allanimechi/build.gradle b/src/en/allanimechi/build.gradle index de36a8a8..9880bacb 100644 --- a/src/en/allanimechi/build.gradle +++ b/src/en/allanimechi/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AllAnimeChi' extClass = '.AllAnimeChi' - extVersionCode = 7 + extVersionCode = 8 } apply from: "$rootDir/common.gradle" diff --git a/src/en/animegg/build.gradle b/src/en/animegg/build.gradle new file mode 100644 index 00000000..e86f9ede --- /dev/null +++ b/src/en/animegg/build.gradle @@ -0,0 +1,7 @@ +ext { + extName = 'AnimeGG' + extClass = '.AnimeGG' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/animegg/res/mipmap-hdpi/ic_launcher.png b/src/en/animegg/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c11322d30785103a8310819258bc8b72507d0729 GIT binary patch literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2V0Q6zaSW-5dpqN__MSkQ_P@Fs zUZ>hxizHJV6BErgZI&rB6S{dKRWUVFQ=5C|o17EJ4k>U?FVfy_|M<m<`zD`jW>~(z zvOcZmeDHavd*^S@T<)`e`!Y45P8X$#_J^N8PrtS4jbcqrjm7Cr?FSl7Z#q9XFzbzC zL4xl$0gDZ4)f_SrlWke})|`}MV!xKc-^iRzj<N|ycJH<}x3hb<Yu7FzOMCnHg8ARS zmv7&*=S@{r)stIE-@bm`xqZ92Ww;Q~euXQ`m#dqbn?KLW&K911GKK5i*4?{b&ze2^ z>8>C%6O)j<1+A^E@0mYcP<+OI>;C=nw{PDT`F8a7_D+>N@!xaHmMte5ozL={*xKsu z=ij=B`RC!k))}#}bERcuc*+V34a?V`JbAK-|L(<$ir4=?J8{CJl;u->*7N7j-#vPy zbmI2y+jsU#WF#j$uls-Y^l5L)=pc}jj?8D;yKmpAQbnT+*RD;A`D~xc-`FgWyg;ap z<<ouMf0gM82@k@7Zf<6hm617NcE7We^JdE_V3;Wa71;l7eqLX(Ys(f9k&No<=xslL zvHRpX!Av;jpvuGfWPfv7dU|Yqef_y>*RE}10{Thxj`~!u(0YaUU%zg(wzfWPX>1%E zwxGSez3I1%oZP=&hmzFPrE46n*sC0Ka9y*@;a~m6ix&f@`z`N&_5Zw<=!)&z!^=uC zGFI$jn)=$m@zlmgOqGALyNd3!SMJ`u8|eFqw{PAo%+1aH^gCeotXX$ny;?O#KLi-* z9A96(It2{Pla0=6*029xx9#KoXnlSCyxQ8>b)2PHS+9Oy)juz;1xy(#AD=xt#>>yY z``o#634e{x+`2XE&S`t5AK%aH**D`~?T^o&H{a3j1SX~lS8~i=_x1NT+uGWe_V@P} z&Hw$oy1b}J>ALu3`}B`?p1`mmFJTc%rpn-S{^}`r^OYMau{@nMz--0f>FVdQ&MBb@ E0Pvi%LI3~& literal 0 HcmV?d00001 diff --git a/src/en/animegg/res/mipmap-mdpi/ic_launcher.png b/src/en/animegg/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..973ed6b926ee64fadac40c397020a64bf94d0b6c GIT binary patch literal 586 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FbR6PIEGZjy`5&b`eUNRvGeH@ zgQhqo8k|sB?a0-flpr`chi$UaPlHVn9&Fq}lUi$fpZ6A(o-4KQ|NM>bT<xC!tLsiz z)|JMG&;9(qrl#WKqo=h+d*jaLH&iR@WVMn-?6Q#SPcxfso4Wn>LHoIWkLKRY+y1DJ z`(5vbjK?*0vz-<u)Y#n*c3XV$?*16PWkD-D%F_%aI->P<m>*iyo3~xN?{)>xi|@Z5 zojrD%?Mczj-;Vq5=O22wVe-d{n(v=~{)zv2_+h}EqJw({#d2-fQZ`3^OnYpoFxRhp zdp*d#w<>Nko=v-a<nc%SEw^)@H~1}A{^Pb-@!ib__c*%EVwg`o-Sp$|nyXpo7{6A< z{#Y91d1o`&s6B5RjwU6lO+Gm{K;z5XhNnfG_ENq7{xqDwW7mD3_lJ+t#EQQS9x6#u zYo|?hP*7mI<F@g;f&|aLJco@DBKvpi<;Bm++NxFe?vZNz!mm}iNgHQaoJ%p1EVht2 zleXFLWJ=H;<CP(&-h8hvJkR#sEuzG5uAlGv>(!^Swl>xO&YygL=Fb|vcRN6ijCx2e f5x3{h`Jc?~i}svT=3<)<Od|}Qu6{1-oD!M<O(h$& literal 0 HcmV?d00001 diff --git a/src/en/animegg/res/mipmap-xhdpi/ic_launcher.png b/src/en/animegg/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a04ead970f5e1f8b0c1b7b2405b452175820934b GIT binary patch literal 1057 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V1D80;uum9_jZ=GerljZ+h4Ki z91~XruJ+(q8(kta-DPD0SF4|TiPgeO9d6!>f-?jPZT}scr=zZBe15zCzMHRacb=U2 z-E&^v-05HUo#?E!vT6}<;!p$<f22*MdgV9S-CTeA_;Gi|*OUM5GH^JSvR{v9g5k~e z+{`IH-(DYLkfghCgH=ssrRKZ$@15;zY-ZfikB^T(`%`9Sbo-m@t&D;5=gsTt?Ce~$ ze7X9Q6DK-O`t94hS9J5{&ChB=+1c2-zJD*DEI$?K6NRM37d56$o7Q#i+_??T&dzG~ zJ2!4jJooIz{rmUpnBTm4Go$-il-YrU2OTe7y_yOXFJqRGmlwZ#_wKVrJBu1VfBw8^ z`}XT|PH%n777-tBKE3Az<F@VF&(7?SIuOVlvL&bC=+UE(K7BGe{rdH5`%kCYX3U#s zw*GhY`gQBh$iA8Ya=`UXjMuJRJF_$9G@D1hd*!>`slcE;5z1_WLT`P=ATBO`^x3m# z@iYIWh07}Z?M?U7zWn{r_2;MRVkIVIUuFFE{rlOUVREvvp>hwNJUKEa|LMJZ^D1lC zfx=^FR>Ly9beQaeFJHFIm_OhA+t;r%=geWeWG$Vh&d$#6d#>KnLA$-Z-Pi9N!&;!< z%`K%Kn43B*lUktpyEM^ZT`KdMHEU|@9M&gIWlT#;JM-H1__1R?ez*B1$jN_7+@Wqf zX)W7{lls+5Zf;|~lDeAl)h1mwkLeGNzB1UW>-)dQTY1XgFK)j3MPF7Lzn`oPHu9yi z=IPU?pEU^vKLlF5f1lg0^Qz}vfMIT0-gyG(TY-;1f9{+yXO7AAGo{(tulxUe;VI9{ zJ2&TaX=&-#&+P5rJHV>Ge*5<Ab8zmSoKSHwF)#U9%lmcu`ub*l4xKw|)~`Pts-G8c ziWg_Q^6>0g-@>vou}>dAUVKtF)9u;MRrl`Roq5M<;L|uFTS4+7hvL4@`Sx$F-fcNh R4k`c`JYD@<);T3K0RZ%>4Q~Jd literal 0 HcmV?d00001 diff --git a/src/en/animegg/res/mipmap-xxhdpi/ic_launcher.png b/src/en/animegg/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..68181b55da80077c01a0a5c40311001ff4b62bd7 GIT binary patch literal 1550 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farf%U4Vi(^Pd+}k;)SNqn=wExx3 zd%5Gfr{a`G#xAE*KAuKNE+<d)H1aIr@p%$<>VbiBt5LDG>dtAW=Wo1Mx4Ufpy!UDA zzZYM7|NKjxy}zw;b?r5)*EXeP-%>9sCHEK}lRzc@u-5(gaq(u&CT2;#+cLwM-2UbC zbp5**7rXDCYh4~zo|mULXMWx9Z)>efUxip~YrDQKmiu|WruBq}1={=T|KFQyQMf32 zPeq|{{=Get>l)|T*W1a2pXL_VYx%r=itLGk9aF{i<K9fui4@Aq(Ou43^7`7^yqlX+ zAMS{<T2NW>{oUQXpP!ySTz2h?Kcj8kpB>SAt4b}FE#vd}^78WXySKJxALd>A_B~V8 z=V!j#D?dN`@Z*-1!oltN_sgQU=kc0vZk^2Z>&wgF?dj*|eYhb8lv*9WzD@e(DNjb* ziVq4l>!$K~6f9&d`Ty_lhaF*73Xbew)&oVN9N78g-kh6f8+{b0vGw&#u?y>BcON<z zFwK7co_W(iv3tEF%3->GJm2vvKt}qxIh@D;#HX+u$*fz+9AyDkaD`D<=4K;Ld-kga zvA#DBZHG-u9k|`g6b?U}#U~n2srvtLJO3tm`#PDoJdy!7pH%+qewzL$%@?f2D#YRG z*VUn`!%B^fjVEp1ym|3=C0@}B*Vo7I=9M;U`TS+;A07SpeLTBOQ$cpV3}D<__qQr8 zpH*}JhK0;go6~$P_N{-KUitBn>y5SGxbT&|kRlu4PYl`4_2TpM^LKlt&Huev<~#e) zzZ(mgwd6ha6hHUd(H4JqZ*}<%`PU6qKsVOj*_iBpL*BZ?q1LA6M*&#)Rl_68F1{7Z z`84J&e$h~c#<kL2@F}ykonM~s(YD;%K%@6D%37D{yjk_`_ICX@{iP1JbHxI*f3scj zV!sm1ZW0M2FMo<jINBxpkZoJp`+IvA|F_l4SB~AD7yIM;HBf5#vM=M_`dQ#$|8{Ds z_U9_u?0tE6b`*Yzy7i;#-QC^S|D0Y|x3y;D)yeAqhiX^pf>LMh>E-->^X+8wQn<s{ z#oV;5`l1nYd8zmGe_mIfYJbhUzfX4E@>Wp1>FTVHlea3-xN~8aUhJ+dyMZCSV_H(@ zuO}xbKb&!En*P@(TenOCr(~ehUT@34FPE34dw#C9__~MTrzgMq`}=$Q<E+X*KR#ak zY!K(J4T|9CUw?jn&ini8>tcI(Q`@2^9_!<;{m}kV@#n&{^;fmy*B^)GjjikB_Db1y zuF0(YFL3_1wYQ5+UB><W_44O#M*$O3;%w*PNPY&UK4!D|Zw{apu@cEX{{I-Syv|aI U(U<xGEaw?KUHx3vIVCg!0OI)2IsgCw literal 0 HcmV?d00001 diff --git a/src/en/animegg/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/animegg/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9ac33bdbe8ed60217591fc19751dbcd16f5f8b GIT binary patch literal 2119 zcmeH}Sx{3~7{_mhmf(_TsiKk)V89g=Efv|qR*=PYf=GZ87CQt&0Am6~AR$^QB|s@S zBby~GDy>AsAwUsH7&M?&4ABA#2}>d|2w^d-2}|#doj&xz>Gau$d+wb1&hnf8cmCfw zS*K5WBi0+Q2LJ%!>*I+7|83A`pbxe<2^kIm21s8|_cL^YN-D~Jt~KqLQ8$HKZ}c)g zcXLbe=|7I{wJ^fr{DO{Kc-z_GHHY-mFOfSev%lPMe9wkMhLJhxaw?y*cWAP9!JgCH zESVZl<%?=CEyY^RpNv)onyM&rT{XM1*~7s6Bh7o8E}2ZmaoZ=Y!4B~mv8*%q15<gM zeJWEMyf<93{M7kB8u&9-mz$euV>s&S^3uE7(3Z2#VTD4WFp5OFO}}G&fbigzwYBvY zQIXFADbHvZsngcM;Wan7VP89+p=A>%zQSUq8xe@DcLN^YI#GI!U#_&>^`f=EDkCdi z^1GNDRDX+Z5j(a3L=lOlBO@cSMA8V5QkfAG6%|#IINrN8A@alux=sC7R4NvWWrs;J zDC(<FC`$74^JNHb+)eoOq_ic9Oy({w_uI3|q9fQ#OG{CGwV}e&!tkB&>CvZ!ipTjD z!neDIp}Fh&j}X(+9?<1Dnu(h>bH1J^GU60o)>CE~_4fWmjEt<Lzbt@4s^>Rcc~;2s z-NE>QtGiD{@<SIb)@T67g+a25m*CS*8h(gXdFPe%)C6uz2rfu>WaXK<b};(<C;(R6 z4&n^u=@#yQEi=(>r+9UZOl0`O9}vgZ_}FOpCX98NwuOl-U$JMX++Q`uq2SY4a5ukA z<ts&C^y@GI^Nt4x8Z!K@r$#uAWV<9or#l!Q;tHRh9(gEJ$Bw@Rn2Kt@wIL-z1#Jn; z>f~*p0Lq)t!H<;#-N&HZ^mf3?3nzOp`?<M#ZZ^7AP;eFjvPE5^JG$)`r{of=z*@Yt zH8pvx0ZsuHCZ$%I^d8kfQ+C;B{|p1g&hFC&bmp0crKrGZPp<CH?$ZP~B~MzX82-(` zibt~!1>;fh?p(ctM<Im!6rdwIA`b0#1lhJ7B2ad~wpV3<lu~=(9Iws}S&o8-=RlA& zIgq2%?q7?b9>FGt1cD#|bA`>FO`xORz^=P6?$e)}2DK!`iCfS}vqxsg;T7$|v2?21 zkC*;AJIRLlGrT)VNnL&Xn}0QXaP&N2u1^70qSs<7q)&Iefz8UF72A4EU9e|uMzglT zyT5?Yre%O*C4@#myLm%sZP|LtA0ae41u)TRY=bPf_>ic?k@gHl@0}1q&%A0NdvJ95 z8H~5)6{wXU(e|fj4`k{Yh($2VrD8pwcG#6+;N39baUMtnIqX@E;I4PW1o4gJ*SH7n zPx`-aO<Q{ZLfs@VXHE^a3OjE&QDmMo1j}y7F6%%;tXA{c7^fs|5FWocr54a<DtDNe z>~}fPQ-)2w#`HKll&MS8LE+qZU*K~6;^BrcRUt|QDx$NN{3S25AH#J?Uk@d}D3U_C zS6o!IXRyvPq$xg*z)uTu)+YP=`-{CL80EwSc}C((yE`8pQ7|8P5#vbvl`c2rtu+N` zL-x%TgD1<`!67Iu{&Gb{g+kF)DzvQ@L!2>#e8#}Ut9w;+y;!gqV6maj;}`lZFs7z9 zgsNNfn^dZZM)++}=}}#|NYTv3)L&F9WVzf?Ni&s^OJp*cV*@!F#|E@Z8hxxKKyy7y z2XTA8(1SO$gCx-O(q@%nj<E<duC4~m>Bo`D<T10kCEOTff$ykPYL~n-uSPRH^3BY* zR&$_rWOMqeuF@ky>du!Cq?;k6fPtls_*3UU3Zmu|2%tOl<F_yvUAwl7KswP9oKhA# Q!3P51>vhtz)+7A#Us-?x&j0`b literal 0 HcmV?d00001 diff --git a/src/en/animegg/src/eu/kanade/tachiyomi/animeextension/en/animegg/AnimeGG.kt b/src/en/animegg/src/eu/kanade/tachiyomi/animeextension/en/animegg/AnimeGG.kt new file mode 100644 index 00000000..463c226c --- /dev/null +++ b/src/en/animegg/src/eu/kanade/tachiyomi/animeextension/en/animegg/AnimeGG.kt @@ -0,0 +1,279 @@ +package eu.kanade.tachiyomi.animeextension.en.animegg + +import android.annotation.SuppressLint +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilter +import eu.kanade.tachiyomi.animesource.model.AnimeFilterList +import eu.kanade.tachiyomi.animesource.model.AnimesPage +import eu.kanade.tachiyomi.animesource.model.SAnime +import eu.kanade.tachiyomi.animesource.model.SEpisode +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Element +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import uy.kohesive.injekt.injectLazy +import java.util.Locale + +class AnimeGG : ConfigurableAnimeSource, AnimeHttpSource() { + + override val name = "AnimeGG" + + override val baseUrl = "https://www.animegg.org" + + override val lang = "en" + + override val supportsLatest = true + + private val json: Json by injectLazy() + + private val preferences: SharedPreferences by lazy { + Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) + } + + companion object { + private const val PREF_LANGUAGE_KEY = "preferred_language" + private const val PREF_LANGUAGE_DEFAULT = "[SUBBED]" + private val LANGUAGE_LIST = arrayOf("[SUBBED]", "[DUBBED]", "[RAW]") + + private const val PREF_QUALITY_KEY = "preferred_quality" + private const val PREF_QUALITY_DEFAULT = "1080" + private val QUALITY_LIST = arrayOf("1080", "720", "480", "360") + + private const val PREF_SERVER_KEY = "preferred_server" + private const val PREF_SERVER_DEFAULT = "AnimeGG" + private val SERVER_LIST = arrayOf("AnimeGG") + } + + override fun animeDetailsParse(response: Response): SAnime { + val document = response.asJsoup() + val animeDetails = SAnime.create().apply { + title = document.selectFirst(".media-body h1")?.text()?.trim() ?: "" + status = if (document.location().contains("/series/")) SAnime.UNKNOWN else SAnime.COMPLETED + description = document.selectFirst(".ptext")?.text() + genre = document.select(".tagscat a").joinToString { it.text() } + thumbnail_url = document.selectFirst(".media .media-object")?.attr("abs:src") + document.select(".infoami span").map { it.text() }.map { textContent -> + when { + "Status" in textContent -> status = parseStatus(textContent) + } + } + } + return animeDetails + } + + private fun parseStatus(span: String): Int { + val status = span.substringAfter("Status:").trim() + return when { + "Completed" in status -> SAnime.COMPLETED + "Ongoing" in status -> SAnime.ONGOING + else -> SAnime.UNKNOWN + } + } + + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/popular-series?sortBy=hits&sortDirection=DESC&ongoing&limit=50&start=0", headers) + + override fun popularAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val elements = document.select(".fea") + val animeList = elements.map { element -> + SAnime.create().apply { + title = element.selectFirst(".rightpop a")?.text()?.trim() ?: "" + thumbnail_url = element.selectFirst("img")?.attr("abs:src") + setUrlWithoutDomain(element.select(".rightpop a").attr("abs:href")) + } + } + return AnimesPage(animeList, false) + } + + override fun latestUpdatesParse(response: Response) = popularAnimeParse(response) + + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/popular-series?sortBy=createdAt&sortDirection=DESC&ongoing&limit=50&start=0", headers) + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val filterList = if (filters.isEmpty()) getFilterList() else filters + val genreFilter = filterList.find { it is GenreFilter } as GenreFilter + + return when { + query.isNotBlank() -> GET("$baseUrl/search/?q=$query", headers) + genreFilter.state != 0 -> GET("$baseUrl/${genreFilter.toUriPart()}/page/$page", headers) + else -> popularAnimeRequest(page) + } + } + + override fun searchAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val elements = document.select(".mse") + val animeList = elements.map { element -> + SAnime.create().apply { + title = element.selectFirst(".first h2")?.text()?.trim() ?: "" + thumbnail_url = element.selectFirst("img")?.attr("abs:src") + setUrlWithoutDomain(element.attr("abs:href")) + } + } + return AnimesPage(animeList, false) + } + + override fun episodeListParse(response: Response): List<SEpisode> { + val document = response.asJsoup() + return document.select(".newmanga li div").mapIndexed { idx, episode -> + val episodeNumber = episode.selectFirst(".anm_det_pop strong")?.getEpNumber() ?: (idx + 1F) + val title = episode.select(".anititle").text() + SEpisode.create().apply { + episode_number = episodeNumber + name = when { + episodeNumber.formatEp() in title -> episode.select(".anititle").text() + else -> "Episode ${episodeNumber.formatEp()} - ${episode.select(".anititle").text()}" + } + scanlator = episode.select(".btn-xs").joinToString { it.text() } + setUrlWithoutDomain(episode.select(".anm_det_pop").attr("abs:href")) + } + } + } + + override fun videoListParse(response: Response): List<Video> { + val document = response.asJsoup() + return document.select("iframe").parallelCatchingFlatMapBlocking { + val mode = when (it.closest(".tab-pane")?.attr("id")) { + "subbed-Animegg" -> "[SUBBED]" + "dubbed-Animegg" -> "[DUBBED]" + "raw-Animegg" -> "[RAW]" + else -> "" + } + + val link = it.attr("abs:src") + val embedPlayer = client.newCall(GET(link)).execute().asJsoup() + val scriptData = embedPlayer.selectFirst("script:containsData(var videoSources =)")?.data() ?: return@parallelCatchingFlatMapBlocking emptyList() + val host = link.toHttpUrl().host + val videoHeaders = headers.newBuilder().add("referer", "https://$host").build() + val jsonString = fixJsonString(scriptData.substringAfter("var videoSources = ").substringBefore(";")) + json.decodeFromString<Array<GgVideo>>(jsonString).map { video -> + val videoUrl = "https://$host${video.file}" + Video(videoUrl, "$mode AnimeGG:${video.label}", videoUrl, headers = videoHeaders) + } + } + } + + private fun fixJsonString(jsonString: String): String { + return jsonString.replace(Regex("""(\w+):"""), """"$1":""") + .replace(Regex("""(:\s)([^{\[}\]":\s,]+)"""), """$1"$2"""") + .replace(Regex("""(:\s)("[^"]*")"""), """$1$2""") + } + + override fun List<Video>.sort(): List<Video> { + val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!! + val server = preferences.getString(PREF_SERVER_KEY, PREF_SERVER_DEFAULT)!! + val lang = preferences.getString(PREF_LANGUAGE_KEY, PREF_LANGUAGE_DEFAULT)!! + return this.sortedWith( + compareBy( + { it.quality.contains(lang) }, + { it.quality.contains(server, true) }, + { it.quality.contains(quality) }, + { Regex("""(\d+)p""").find(it.quality)?.groupValues?.get(1)?.toIntOrNull() ?: 0 }, + ), + ).reversed() + } + + override fun getFilterList(): AnimeFilterList = AnimeFilterList( + AnimeFilter.Header("La busqueda por texto ignora el filtro"), + GenreFilter(), + ) + + private class GenreFilter : UriPartFilter( + "Genre", + arrayOf( + Pair("<Seleccionar>", ""), + Pair("Películas", "peliculas"), + Pair("Series", "series"), + ), + ) + + private fun Element?.getEpNumber(): Float? { + val input = this?.text() ?: return null + val regex = Regex("""(\d+(\.\d+)?)(?:-\d+(\.\d+)?)?$""") + val matchResult = regex.find(input) + return matchResult?.groupValues?.get(1)?.toFloatOrNull() + } + + @SuppressLint("DefaultLocale") + private fun Float.formatEp(): String { + return if (this % 1 == 0.0f) { + String.format(Locale.US, "%.0f", this) + } else { + String.format(Locale.US, "%.1f", this) + } + } + + private open class UriPartFilter(displayName: String, val vals: Array<Pair<String, String>>) : + AnimeFilter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].second + } + + @Serializable + data class GgVideo( + val file: String, + val label: String, + ) + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + ListPreference(screen.context).apply { + key = PREF_LANGUAGE_KEY + title = "Preferred language" + entries = LANGUAGE_LIST + entryValues = LANGUAGE_LIST + setDefaultValue(PREF_LANGUAGE_DEFAULT) + summary = "%s" + + setOnPreferenceChangeListener { _, newValue -> + val selected = newValue as String + val index = findIndexOfValue(selected) + val entry = entryValues[index] as String + preferences.edit().putString(key, entry).commit() + } + }.also(screen::addPreference) + + ListPreference(screen.context).apply { + key = PREF_SERVER_KEY + title = "Preferred server" + entries = SERVER_LIST + entryValues = SERVER_LIST + setDefaultValue(PREF_SERVER_DEFAULT) + summary = "%s" + + setOnPreferenceChangeListener { _, newValue -> + val selected = newValue as String + val index = findIndexOfValue(selected) + val entry = entryValues[index] as String + preferences.edit().putString(key, entry).commit() + } + }.also(screen::addPreference) + + ListPreference(screen.context).apply { + key = PREF_QUALITY_KEY + title = "Preferred quality" + entries = QUALITY_LIST + entryValues = QUALITY_LIST + setDefaultValue(PREF_QUALITY_DEFAULT) + summary = "%s" + + setOnPreferenceChangeListener { _, newValue -> + val selected = newValue as String + val index = findIndexOfValue(selected) + val entry = entryValues[index] as String + preferences.edit().putString(key, entry).commit() + } + }.also(screen::addPreference) + } +} diff --git a/src/en/animekhor/build.gradle b/src/en/animekhor/build.gradle index 31b4dfcb..3759e657 100644 --- a/src/en/animekhor/build.gradle +++ b/src/en/animekhor/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.AnimeKhor' themePkg = 'animestream' baseUrl = 'https://animekhor.xyz' - overrideVersionCode = 3 + overrideVersionCode = 4 } apply from: "$rootDir/common.gradle" diff --git a/src/en/animenosub/build.gradle b/src/en/animenosub/build.gradle index c09f7a29..1056e91e 100644 --- a/src/en/animenosub/build.gradle +++ b/src/en/animenosub/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Animenosub' themePkg = 'animestream' baseUrl = 'https://animenosub.com' - overrideVersionCode = 5 + overrideVersionCode = 6 isNsfw = true } diff --git a/src/en/asiaflix/build.gradle b/src/en/asiaflix/build.gradle index 15941dbc..1df9ee31 100644 --- a/src/en/asiaflix/build.gradle +++ b/src/en/asiaflix/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AsiaFlix' extClass = '.AsiaFlix' - extVersionCode = 10 + extVersionCode = 11 } apply from: "$rootDir/common.gradle" diff --git a/src/en/asianload/build.gradle b/src/en/asianload/build.gradle index 54e5a1b9..22be6c78 100644 --- a/src/en/asianload/build.gradle +++ b/src/en/asianload/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AsianLoad' extClass = '.AsianLoad' - extVersionCode = 39 + extVersionCode = 40 } apply from: "$rootDir/common.gradle" diff --git a/src/en/dramacool/build.gradle b/src/en/dramacool/build.gradle index 71537624..9d3ebd67 100644 --- a/src/en/dramacool/build.gradle +++ b/src/en/dramacool/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'DramaCool' extClass = '.DramaCool' - extVersionCode = 48 + extVersionCode = 49 } apply from: "$rootDir/common.gradle" diff --git a/src/en/gogoanime/build.gradle b/src/en/gogoanime/build.gradle index cd11ff2b..6cc58233 100644 --- a/src/en/gogoanime/build.gradle +++ b/src/en/gogoanime/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Gogoanime' extClass = '.GogoAnime' - extVersionCode = 83 + extVersionCode = 84 } apply from: "$rootDir/common.gradle" diff --git a/src/en/multimovies/build.gradle b/src/en/multimovies/build.gradle index a749b24d..37ac7992 100644 --- a/src/en/multimovies/build.gradle +++ b/src/en/multimovies/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Multimovies' themePkg = 'dooplay' baseUrl = 'https://multimovies.art' - overrideVersionCode = 17 + overrideVersionCode = 18 } apply from: "$rootDir/common.gradle" diff --git a/src/es/animefenix/build.gradle b/src/es/animefenix/build.gradle index 280dec2c..4d35f0be 100644 --- a/src/es/animefenix/build.gradle +++ b/src/es/animefenix/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Animefenix' extClass = '.Animefenix' - extVersionCode = 38 + extVersionCode = 39 } apply from: "$rootDir/common.gradle" diff --git a/src/es/animeflv/build.gradle b/src/es/animeflv/build.gradle index d6927a13..dc05b096 100644 --- a/src/es/animeflv/build.gradle +++ b/src/es/animeflv/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AnimeFLV' extClass = '.AnimeFlv' - extVersionCode = 55 + extVersionCode = 56 } apply from: "$rootDir/common.gradle" diff --git a/src/es/animeid/build.gradle b/src/es/animeid/build.gradle index 3a4db1bc..fef93f6f 100644 --- a/src/es/animeid/build.gradle +++ b/src/es/animeid/build.gradle @@ -8,4 +8,5 @@ apply from: "$rootDir/common.gradle" dependencies { implementation(project(':lib:streamtape-extractor')) + implementation(project(':lib:streamwish-extractor')) } diff --git a/src/es/animeid/src/eu/kanade/tachiyomi/animeextension/es/animeid/AnimeID.kt b/src/es/animeid/src/eu/kanade/tachiyomi/animeextension/es/animeid/AnimeID.kt index e585ee2f..13be7d73 100644 --- a/src/es/animeid/src/eu/kanade/tachiyomi/animeextension/es/animeid/AnimeID.kt +++ b/src/es/animeid/src/eu/kanade/tachiyomi/animeextension/es/animeid/AnimeID.kt @@ -12,9 +12,9 @@ import eu.kanade.tachiyomi.animesource.model.SEpisode import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor +import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup -import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.jsonArray @@ -117,15 +117,22 @@ class AnimeID : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun episodeFromElement(element: Element) = throw UnsupportedOperationException() + // ============================ Video Links ============================= + private val streamwishExtractor by lazy { StreamWishExtractor(client, headers) } + private val streamtapeExtractor by lazy { StreamTapeExtractor(client) } + override fun videoListParse(response: Response): List<Video> { val document = response.asJsoup() val videoList = mutableListOf<Video>() document.select("#partes div.container li.subtab div.parte").forEach { script -> val jsonString = script.attr("data") val jsonUnescape = unescapeJava(jsonString)!!.replace("\\", "") - val url = jsonUnescape.substringAfter("src=\"").substringBefore("\"").replace("\\\\", "\\") - if (url.contains("streamtape")) { - StreamTapeExtractor(client).videoFromUrl(url)?.let { videoList.add(it) } + val url = fetchUrls(jsonUnescape).firstOrNull()?.replace("\\\\", "\\") ?: "" + if (url.contains("streamtape") || url.contains("tape") || url.contains("stp")) { + streamtapeExtractor.videosFromUrl(url).also(videoList::addAll) + } + if (url.contains("wish") || url.contains("fviplions") || url.contains("obeywish")) { + streamwishExtractor.videosFromUrl(url, videoNameGen = { "StreamWish:$it" }).also(videoList::addAll) } } return videoList @@ -147,6 +154,12 @@ class AnimeID : ConfigurableAnimeSource, ParsedAnimeHttpSource() { return processed } + private fun fetchUrls(text: String?): List<String> { + if (text.isNullOrEmpty()) return listOf() + val linkRegex = "(http|ftp|https):\\/\\/([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])".toRegex() + return linkRegex.findAll(text).map { it.value.trim().removeSurrounding("\"") }.toList() + } + override fun animeDetailsParse(document: Document): SAnime { val anime = SAnime.create() anime.thumbnail_url = document.selectFirst("#anime figure img.cover")!!.attr("abs:src") diff --git a/src/es/animelatinohd/build.gradle b/src/es/animelatinohd/build.gradle index 5a1778aa..cd362f66 100644 --- a/src/es/animelatinohd/build.gradle +++ b/src/es/animelatinohd/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AnimeLatinoHD' extClass = '.AnimeLatinoHD' - extVersionCode = 32 + extVersionCode = 33 } apply from: "$rootDir/common.gradle" diff --git a/src/es/animemovil/build.gradle b/src/es/animemovil/build.gradle index ac1700aa..e8956deb 100644 --- a/src/es/animemovil/build.gradle +++ b/src/es/animemovil/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AnimeMovil' extClass = '.AnimeMovil' - extVersionCode = 14 + extVersionCode = 15 } apply from: "$rootDir/common.gradle" diff --git a/src/es/asialiveaction/build.gradle b/src/es/asialiveaction/build.gradle index 62f60eda..7d5593f1 100644 --- a/src/es/asialiveaction/build.gradle +++ b/src/es/asialiveaction/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AsiaLiveAction' extClass = '.AsiaLiveAction' - extVersionCode = 30 + extVersionCode = 31 } apply from: "$rootDir/common.gradle" diff --git a/src/es/cine24h/build.gradle b/src/es/cine24h/build.gradle new file mode 100644 index 00000000..6d442570 --- /dev/null +++ b/src/es/cine24h/build.gradle @@ -0,0 +1,14 @@ +ext { + extName = 'Cine24h' + extClass = '.Cine24h' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(':lib:fastream-extractor')) + implementation(project(':lib:dood-extractor')) + implementation(project(':lib:filemoon-extractor')) + implementation(project(':lib:voe-extractor')) +} \ No newline at end of file diff --git a/src/es/cine24h/res/mipmap-hdpi/ic_launcher.png b/src/es/cine24h/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c009cb2022c53d10d874c2cb8239cc2d7b6d6378 GIT binary patch literal 5366 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 UY;kbo-2eap07*qoM6N<$f+`Gl0RR91 literal 0 HcmV?d00001 diff --git a/src/es/cine24h/res/mipmap-mdpi/ic_launcher.png b/src/es/cine24h/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7030cd84b89d873a31f2104e72b9436fc3ed73 GIT binary patch literal 2510 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 Y8%ZFO$9eUPKmY&$07*qoM6N<$g41O0`~Uy| literal 0 HcmV?d00001 diff --git a/src/es/cine24h/res/mipmap-xhdpi/ic_launcher.png b/src/es/cine24h/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9264e754f0725dc52852785ed895fcdfa53ba1 GIT binary patch literal 7849 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 literal 0 HcmV?d00001 diff --git a/src/es/cine24h/res/mipmap-xxhdpi/ic_launcher.png b/src/es/cine24h/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5c469b6a9bb12e894b080ec60b5f94bc97f8a9 GIT binary patch literal 15918 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 literal 0 HcmV?d00001 diff --git a/src/es/cine24h/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/cine24h/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f78035a726f0284554ae1eb00ba0a08f76585c26 GIT binary patch literal 26476 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 literal 0 HcmV?d00001 diff --git a/src/es/cine24h/src/eu/kanade/tachiyomi/animeextension/es/cine24h/Cine24h.kt b/src/es/cine24h/src/eu/kanade/tachiyomi/animeextension/es/cine24h/Cine24h.kt new file mode 100644 index 00000000..9530e3de --- /dev/null +++ b/src/es/cine24h/src/eu/kanade/tachiyomi/animeextension/es/cine24h/Cine24h.kt @@ -0,0 +1,272 @@ +package eu.kanade.tachiyomi.animeextension.es.cine24h + +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilter +import eu.kanade.tachiyomi.animesource.model.AnimeFilterList +import eu.kanade.tachiyomi.animesource.model.AnimesPage +import eu.kanade.tachiyomi.animesource.model.SAnime +import eu.kanade.tachiyomi.animesource.model.SEpisode +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource +import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor +import eu.kanade.tachiyomi.lib.fastreamextractor.FastreamExtractor +import eu.kanade.tachiyomi.lib.filemoonextractor.FilemoonExtractor +import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.util.asJsoup +import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking +import okhttp3.Request +import okhttp3.Response +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import java.util.Calendar + +open class Cine24h : ConfigurableAnimeSource, AnimeHttpSource() { + + override val name = "Cine24h" + + override val baseUrl = "https://cine24h.online" + + override val lang = "es" + + override val supportsLatest = true + + private val preferences: SharedPreferences by lazy { + Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) + } + + companion object { + private const val PREF_QUALITY_KEY = "preferred_quality" + private const val PREF_QUALITY_DEFAULT = "1080" + private val QUALITY_LIST = arrayOf("1080", "720", "480", "360") + + private const val PREF_SERVER_KEY = "preferred_server" + private const val PREF_SERVER_DEFAULT = "Voe" + private val SERVER_LIST = arrayOf("Voe", "Fastream", "Filemoon", "Doodstream") + } + + override fun animeDetailsParse(response: Response): SAnime { + val document = response.asJsoup() + val animeDetails = SAnime.create().apply { + description = document.selectFirst(".Single .Description")?.text() + genre = document.select(".Single .InfoList a").joinToString { it.text() } + thumbnail_url = document.selectFirst(".Single .Image img")?.getImageUrl()?.replace("/w185/", "/w500/") + if (document.location().contains("/movie/")) { + status = SAnime.COMPLETED + } else { + val statusText = document.select(".InfoList .AAIco-adjust").map { it.text() } + .find { "En Producción:" in it }?.substringAfter("En Producción:")?.trim() + status = when (statusText) { "Sí" -> SAnime.ONGOING else -> SAnime.COMPLETED } + } + } + return animeDetails + } + + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/peliculas-mas-vistas/page/$page", headers) + + override fun popularAnimeParse(response: Response): AnimesPage { + val document = response.asJsoup() + val elements = document.select(".TPost a:not([target])") + val nextPage = document.select(".wp-pagenavi .next").any() + val animeList = elements.map { element -> + val lang = element.select(".Langu .sprite").attr("class").lowercase() + val titleItem = element.selectFirst(".Title")?.text()?.trim() ?: "" + val link = element.attr("abs:href") + + val prefix = when { + lang.contains("sub") || titleItem.lowercase().contains("(sub)") || link.contains("-sub") -> "\uD83C\uDDFA\uD83C\uDDF8 " + lang.contains("lat") || titleItem.lowercase().contains("(lat)") || link.contains("-lat") -> "\uD83C\uDDF2\uD83C\uDDFD " + lang.contains("esp") || titleItem.lowercase().contains("(es)") || link.contains("-es") -> "\uD83C\uDDEA\uD83C\uDDF8 " + else -> "" + } + SAnime.create().apply { + title = prefix + titleItem + thumbnail_url = element.selectFirst(".Image img")?.getImageUrl()?.replace("/w185/", "/w300/") + setUrlWithoutDomain(link) + } + } + return AnimesPage(animeList, nextPage) + } + + override fun latestUpdatesParse(response: Response) = popularAnimeParse(response) + + override fun latestUpdatesRequest(page: Int): Request { + val currentYear = Calendar.getInstance().get(Calendar.YEAR) + return GET("$baseUrl/page/$page/?s=trfilter&trfilter=1&years%5B0%5D=$currentYear#038;trfilter=1&years%5B0%5D=$currentYear", headers) + } + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val filterList = if (filters.isEmpty()) getFilterList() else filters + val genreFilter = filterList.find { it is GenreFilter } as GenreFilter + + return when { + query.isNotBlank() -> GET("$baseUrl/page/$page/?s=$query", headers) + genreFilter.state != 0 -> GET("$baseUrl/${genreFilter.toUriPart()}/page/$page", headers) + else -> popularAnimeRequest(page) + } + } + + override fun searchAnimeParse(response: Response) = popularAnimeParse(response) + + override fun episodeListParse(response: Response): List<SEpisode> { + val document = response.asJsoup() + return if (document.location().contains("/movie/")) { + listOf( + SEpisode.create().apply { + episode_number = 1f + name = "PELÍCULA" + scanlator = document.select(".AAIco-date_range").text().trim() + setUrlWithoutDomain(document.location()) + }, + ) + } else { + var episodeCounter = 1F + document.select(".AABox").flatMap { season -> + val noSeason = season.select(".Title").text().substringAfter("Temporada").trim() + season.select(".AABox .TPTblCn tr").map { ep -> + SEpisode.create().apply { + episode_number = episodeCounter++ + name = "T$noSeason - E${ep.select(".Num").text().trim()} - ${ep.select(".MvTbTtl a").text().trim()}" + scanlator = ep.select(".MvTbTtl span").text() + setUrlWithoutDomain(ep.select(".MvTbTtl a").attr("abs:href")) + } + } + }.reversed() + } + } + + override fun videoListParse(response: Response): List<Video> { + val document = response.asJsoup() + + return document.select(".TPlayerTb").map { org.jsoup.nodes.Entities.unescape(it.html()) }.parallelCatchingFlatMapBlocking { + val urlEmbed = it.substringAfter("src=\"").substringBefore("\"").replace("&", "&") + val link = client.newCall(GET(urlEmbed)).execute().asJsoup().selectFirst("iframe")?.attr("src") ?: "" + serverVideoResolver(link) + } + } + + /*--------------------------------Video extractors------------------------------------*/ + private val filemoonExtractor by lazy { FilemoonExtractor(client) } + private val doodExtractor by lazy { DoodExtractor(client) } + private val voeExtractor by lazy { VoeExtractor(client) } + + private fun serverVideoResolver(url: String): List<Video> { + val embedUrl = url.lowercase() + return when { + embedUrl.contains("fastream") -> { + val link = if (url.contains("emb.html")) "https://fastream.to/embed-${url.split("/").last()}.html" else url + FastreamExtractor(client, headers).videosFromUrl(link) + } + embedUrl.contains("filemoon") || embedUrl.contains("moonplayer") -> filemoonExtractor.videosFromUrl(url, prefix = "Filemoon:") + embedUrl.contains("voe") -> voeExtractor.videosFromUrl(url) + embedUrl.contains("dood") -> doodExtractor.videosFromUrl(url) + else -> emptyList() + } + } + + override fun List<Video>.sort(): List<Video> { + val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!! + val server = preferences.getString(PREF_SERVER_KEY, PREF_SERVER_DEFAULT)!! + return this.sortedWith( + compareBy( + { it.quality.contains(server, true) }, + { it.quality.contains(quality) }, + { Regex("""(\d+)p""").find(it.quality)?.groupValues?.get(1)?.toIntOrNull() ?: 0 }, + ), + ).reversed() + } + + override fun getFilterList(): AnimeFilterList = AnimeFilterList( + AnimeFilter.Header("La busqueda por texto ignora el filtro"), + GenreFilter(), + ) + + private class GenreFilter : UriPartFilter( + "Género", + arrayOf( + Pair("<Seleccionar>", ""), + Pair("Películas", "peliculas"), + Pair("Series", "series"), + Pair("Acción", "category/accion"), + Pair("Animación", "category/animacion"), + Pair("Anime", "category/anime"), + Pair("Aventura", "category/aventura"), + Pair("Bélica", "category/belica"), + Pair("Ciencia ficción", "category/ciencia-ficcion"), + Pair("Comedia", "category/comedia"), + Pair("Crimen", "category/crimen"), + Pair("Documental", "category/documental"), + Pair("Drama", "category/drama"), + Pair("Familia", "category/familia"), + Pair("Fantasía", "category/fantasia"), + Pair("Gerra", "category/gerra"), + Pair("Historia", "category/historia"), + Pair("Misterio", "category/misterio"), + Pair("Música", "category/musica"), + Pair("Navidad", "category/navidad"), + Pair("Película de TV", "category/pelicula-de-tv"), + Pair("Romance", "category/romance"), + Pair("Suspenso", "category/suspense"), + Pair("Terror", "category/terror"), + Pair("Western", "category/western"), + ), + ) + + private open class UriPartFilter(displayName: String, val vals: Array<Pair<String, String>>) : + AnimeFilter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].second + } + + protected open fun org.jsoup.nodes.Element.getImageUrl(): String? { + return when { + isValidUrl("data-src") -> attr("abs:data-src") + isValidUrl("data-lazy-src") -> attr("abs:data-lazy-src") + isValidUrl("srcset") -> attr("abs:srcset").substringBefore(" ") + isValidUrl("src") -> attr("abs:src") + else -> "" + } + } + + protected open fun org.jsoup.nodes.Element.isValidUrl(attrName: String): Boolean { + if (!hasAttr(attrName)) return false + return !attr(attrName).contains("data:image/") + } + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + ListPreference(screen.context).apply { + key = PREF_SERVER_KEY + title = "Preferred server" + entries = SERVER_LIST + entryValues = SERVER_LIST + setDefaultValue(PREF_SERVER_DEFAULT) + summary = "%s" + + setOnPreferenceChangeListener { _, newValue -> + val selected = newValue as String + val index = findIndexOfValue(selected) + val entry = entryValues[index] as String + preferences.edit().putString(key, entry).commit() + } + }.also(screen::addPreference) + + ListPreference(screen.context).apply { + key = PREF_QUALITY_KEY + title = "Preferred quality" + entries = QUALITY_LIST + entryValues = QUALITY_LIST + setDefaultValue(PREF_QUALITY_DEFAULT) + summary = "%s" + + setOnPreferenceChangeListener { _, newValue -> + val selected = newValue as String + val index = findIndexOfValue(selected) + val entry = entryValues[index] as String + preferences.edit().putString(key, entry).commit() + } + }.also(screen::addPreference) + } +} diff --git a/src/es/cinecalidad/build.gradle b/src/es/cinecalidad/build.gradle index 23479b30..611c2857 100644 --- a/src/es/cinecalidad/build.gradle +++ b/src/es/cinecalidad/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'CineCalidad' extClass = '.CineCalidad' - extVersionCode = 1 + extVersionCode = 2 } apply from: "$rootDir/common.gradle" diff --git a/src/es/cineplus123/build.gradle b/src/es/cineplus123/build.gradle index 04c4e41c..3e1ad7d8 100644 --- a/src/es/cineplus123/build.gradle +++ b/src/es/cineplus123/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Cineplus123' themePkg = 'dooplay' baseUrl = 'https://cineplus123.org' - overrideVersionCode = 0 + overrideVersionCode = 1 } apply from: "$rootDir/common.gradle" diff --git a/src/es/cuevana/build.gradle b/src/es/cuevana/build.gradle index caa81a5b..c4836d6a 100644 --- a/src/es/cuevana/build.gradle +++ b/src/es/cuevana/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Cuevana' extClass = '.CuevanaFactory' - extVersionCode = 32 + extVersionCode = 33 } apply from: "$rootDir/common.gradle" diff --git a/src/es/doramasflix/build.gradle b/src/es/doramasflix/build.gradle index f8388d50..4da08891 100644 --- a/src/es/doramasflix/build.gradle +++ b/src/es/doramasflix/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Doramasflix' extClass = '.Doramasflix' - extVersionCode = 21 + extVersionCode = 22 } apply from: "$rootDir/common.gradle" diff --git a/src/es/ennovelas/build.gradle b/src/es/ennovelas/build.gradle index 04b1de25..f8f3e452 100644 --- a/src/es/ennovelas/build.gradle +++ b/src/es/ennovelas/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'EnNovelas' extClass = '.EnNovelas' - extVersionCode = 11 + extVersionCode = 12 } apply from: "$rootDir/common.gradle" diff --git a/src/es/gnula/build.gradle b/src/es/gnula/build.gradle index 18ae68fc..82f566f1 100644 --- a/src/es/gnula/build.gradle +++ b/src/es/gnula/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Gnula' extClass = '.Gnula' - extVersionCode = 18 + extVersionCode = 19 } apply from: "$rootDir/common.gradle" diff --git a/src/es/hackstore/build.gradle b/src/es/hackstore/build.gradle index 21ac06f9..281d95a1 100644 --- a/src/es/hackstore/build.gradle +++ b/src/es/hackstore/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Hackstore' extClass = '.Hackstore' - extVersionCode = 11 + extVersionCode = 12 } apply from: "$rootDir/common.gradle" diff --git a/src/es/hentaila/build.gradle b/src/es/hentaila/build.gradle index c7b1da7d..b9de6ec6 100644 --- a/src/es/hentaila/build.gradle +++ b/src/es/hentaila/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'HentaiLA' extClass = '.Hentaila' - extVersionCode = 24 + extVersionCode = 25 isNsfw = true } diff --git a/src/es/hentaitk/build.gradle b/src/es/hentaitk/build.gradle index c3e8c590..871a064a 100644 --- a/src/es/hentaitk/build.gradle +++ b/src/es/hentaitk/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'HentaiTk' extClass = '.Hentaitk' - extVersionCode = 1 + extVersionCode = 2 isNsfw = true } diff --git a/src/es/jkanime/build.gradle b/src/es/jkanime/build.gradle index 44d2f950..bd2f3829 100644 --- a/src/es/jkanime/build.gradle +++ b/src/es/jkanime/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Jkanime' extClass = '.Jkanime' - extVersionCode = 23 + extVersionCode = 24 } apply from: "$rootDir/common.gradle" diff --git a/src/es/lacartoons/build.gradle b/src/es/lacartoons/build.gradle index 1cf6e6b4..e1272ba5 100644 --- a/src/es/lacartoons/build.gradle +++ b/src/es/lacartoons/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'LACartoons' extClass = '.Lacartoons' - extVersionCode = 3 + extVersionCode = 4 } apply from: "$rootDir/common.gradle" diff --git a/src/es/legionanime/build.gradle b/src/es/legionanime/build.gradle index 9394c2e4..2e9a6175 100644 --- a/src/es/legionanime/build.gradle +++ b/src/es/legionanime/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'LegionAnime' extClass = '.LegionAnime' - extVersionCode = 31 + extVersionCode = 32 } apply from: "$rootDir/common.gradle" diff --git a/src/es/metroseries/build.gradle b/src/es/metroseries/build.gradle index affe0d95..663d2c8f 100644 --- a/src/es/metroseries/build.gradle +++ b/src/es/metroseries/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'MetroSeries' extClass = '.MetroSeries' - extVersionCode = 10 + extVersionCode = 11 } apply from: "$rootDir/common.gradle" diff --git a/src/es/mundodonghua/build.gradle b/src/es/mundodonghua/build.gradle index 856c58d3..209f76a0 100644 --- a/src/es/mundodonghua/build.gradle +++ b/src/es/mundodonghua/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'MundoDonghua' extClass = '.MundoDonghua' - extVersionCode = 22 + extVersionCode = 23 } apply from: "$rootDir/common.gradle" diff --git a/src/es/pelisforte/build.gradle b/src/es/pelisforte/build.gradle index b1af23e6..9d3c8e42 100644 --- a/src/es/pelisforte/build.gradle +++ b/src/es/pelisforte/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'PelisForte' extClass = '.PelisForte' - extVersionCode = 15 + extVersionCode = 16 } apply from: "$rootDir/common.gradle" diff --git a/src/es/pelisplushd/build.gradle b/src/es/pelisplushd/build.gradle index 04f52e34..afad4904 100644 --- a/src/es/pelisplushd/build.gradle +++ b/src/es/pelisplushd/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Pelisplushd' extClass = '.PelisplushdFactory' - extVersionCode = 56 + extVersionCode = 57 } apply from: "$rootDir/common.gradle" diff --git a/src/es/tioanimeh/build.gradle b/src/es/tioanimeh/build.gradle index 247e7cde..2fb10532 100644 --- a/src/es/tioanimeh/build.gradle +++ b/src/es/tioanimeh/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'TioanimeH' extClass = '.TioanimeHFactory' - extVersionCode = 17 + extVersionCode = 18 } apply from: "$rootDir/common.gradle" diff --git a/src/es/tiodonghua/build.gradle b/src/es/tiodonghua/build.gradle index 8e5fcbc3..4a464672 100644 --- a/src/es/tiodonghua/build.gradle +++ b/src/es/tiodonghua/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Tiodonghua' themePkg = 'animestream' baseUrl = 'https://anime.tiodonghua.com' - overrideVersionCode = 3 + overrideVersionCode = 4 } apply from: "$rootDir/common.gradle" diff --git a/src/es/veranimes/build.gradle b/src/es/veranimes/build.gradle index ffbb4521..1b55eb6a 100644 --- a/src/es/veranimes/build.gradle +++ b/src/es/veranimes/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'VerAnimes' extClass = '.VerAnimes' - extVersionCode = 1 + extVersionCode = 2 } apply from: "$rootDir/common.gradle" diff --git a/src/fr/anisama/build.gradle b/src/fr/anisama/build.gradle index 0e045010..d77d3791 100644 --- a/src/fr/anisama/build.gradle +++ b/src/fr/anisama/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AniSama' extClass = '.AniSama' - extVersionCode = 6 + extVersionCode = 7 } apply from: "$rootDir/common.gradle" diff --git a/src/fr/empirestreaming/build.gradle b/src/fr/empirestreaming/build.gradle index 36b79859..24b11fed 100644 --- a/src/fr/empirestreaming/build.gradle +++ b/src/fr/empirestreaming/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'EmpireStreaming' extClass = '.EmpireStreaming' - extVersionCode = 16 + extVersionCode = 17 } apply from: "$rootDir/common.gradle" diff --git a/src/fr/otakufr/build.gradle b/src/fr/otakufr/build.gradle index 44f88615..2bff1976 100644 --- a/src/fr/otakufr/build.gradle +++ b/src/fr/otakufr/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'OtakuFR' extClass = '.OtakuFR' - extVersionCode = 12 + extVersionCode = 13 } apply from: "$rootDir/common.gradle" diff --git a/src/fr/wiflix/build.gradle b/src/fr/wiflix/build.gradle index 50e7415a..9eb30942 100644 --- a/src/fr/wiflix/build.gradle +++ b/src/fr/wiflix/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Wiflix' themePkg = 'datalifeengine' baseUrl = 'https://wiflix.voto' - overrideVersionCode = 6 + overrideVersionCode = 7 } apply from: "$rootDir/common.gradle" diff --git a/src/id/otakudesu/build.gradle b/src/id/otakudesu/build.gradle index 5c6cd269..c7aca988 100644 --- a/src/id/otakudesu/build.gradle +++ b/src/id/otakudesu/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'OtakuDesu' extClass = '.OtakuDesu' - extVersionCode = 25 + extVersionCode = 26 } apply from: "$rootDir/common.gradle" diff --git a/src/it/toonitalia/build.gradle b/src/it/toonitalia/build.gradle index fbe0abc6..b4c6f1dd 100644 --- a/src/it/toonitalia/build.gradle +++ b/src/it/toonitalia/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Toonitalia' extClass = '.Toonitalia' - extVersionCode = 21 + extVersionCode = 22 } apply from: "$rootDir/common.gradle" diff --git a/src/pt/animesgratis/build.gradle b/src/pt/animesgratis/build.gradle index d5890543..4c0078ae 100644 --- a/src/pt/animesgratis/build.gradle +++ b/src/pt/animesgratis/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Bakashi' themePkg = 'dooplay' baseUrl = 'https://bakashi.tv' - overrideVersionCode = 11 + overrideVersionCode = 12 } apply from: "$rootDir/common.gradle" diff --git a/src/pt/pobreflix/build.gradle b/src/pt/pobreflix/build.gradle index 0c50ce99..ec1d8eb7 100644 --- a/src/pt/pobreflix/build.gradle +++ b/src/pt/pobreflix/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Pobreflix' themePkg = 'dooplay' baseUrl = 'https://pobreflix1.art' - overrideVersionCode = 9 + overrideVersionCode = 10 isNsfw = true } diff --git a/src/tr/animeler/build.gradle b/src/tr/animeler/build.gradle index 911d456e..3db2d12c 100644 --- a/src/tr/animeler/build.gradle +++ b/src/tr/animeler/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Animeler' extClass = '.Animeler' - extVersionCode = 13 + extVersionCode = 14 } apply from: "$rootDir/common.gradle" diff --git a/src/tr/anizm/build.gradle b/src/tr/anizm/build.gradle index 093580e0..38de0fdb 100644 --- a/src/tr/anizm/build.gradle +++ b/src/tr/anizm/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Anizm' extClass = '.Anizm' - extVersionCode = 21 + extVersionCode = 22 } apply from: "$rootDir/common.gradle" diff --git a/src/tr/tranimeizle/build.gradle b/src/tr/tranimeizle/build.gradle index 0aba48a2..22ab0c85 100644 --- a/src/tr/tranimeizle/build.gradle +++ b/src/tr/tranimeizle/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'TR Anime Izle' extClass = '.TRAnimeIzle' - extVersionCode = 17 + extVersionCode = 18 } apply from: "$rootDir/common.gradle" diff --git a/src/tr/turkanime/build.gradle b/src/tr/turkanime/build.gradle index bcb59b93..fc2c18d4 100644 --- a/src/tr/turkanime/build.gradle +++ b/src/tr/turkanime/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Türk Anime TV' extClass = '.TurkAnime' - extVersionCode = 24 + extVersionCode = 25 } apply from: "$rootDir/common.gradle"