diff --git a/multisrc/overrides/a3manga/default/AndroidManifest.xml b/multisrc/overrides/a3manga/default/AndroidManifest.xml index 0489d5a18..196677396 100644 --- a/multisrc/overrides/a3manga/default/AndroidManifest.xml +++ b/multisrc/overrides/a3manga/default/AndroidManifest.xml @@ -1,22 +1,22 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/multisrc/overrides/a3manga/ngonphong/src/NgonPhong.kt b/multisrc/overrides/a3manga/ngonphong/src/NgonPhong.kt index 95f2cfc0a..6c9afbd0d 100644 --- a/multisrc/overrides/a3manga/ngonphong/src/NgonPhong.kt +++ b/multisrc/overrides/a3manga/ngonphong/src/NgonPhong.kt @@ -1,7 +1,7 @@ -package eu.kanade.tachiyomi.extension.vi.ngonphong - -import eu.kanade.tachiyomi.multisrc.a3manga.A3Manga - -class NgonPhong : A3Manga("Ngôn Phong", "https://www.ngonphong.com", "vi") { - override val id: Long = 7268977637085631557 -} +package eu.kanade.tachiyomi.extension.vi.ngonphong + +import eu.kanade.tachiyomi.multisrc.a3manga.A3Manga + +class NgonPhong : A3Manga("Ngôn Phong", "https://www.ngonphong.com", "vi") { + override val id: Long = 7268977637085631557 +} diff --git a/multisrc/overrides/guya/magicaltranslators/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/guya/magicaltranslators/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/multisrc/overrides/guya/magicaltranslators/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/guya/magicaltranslators/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/multisrc/overrides/guya/magicaltranslators/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/guya/magicaltranslators/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/multisrc/overrides/guya/magicaltranslators/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/guya/magicaltranslators/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/multisrc/overrides/guya/magicaltranslators/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/guya/magicaltranslators/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/multisrc/overrides/madara/rightdarkscan/src/RightdarkScan.kt b/multisrc/overrides/madara/rightdarkscan/src/RightdarkScan.kt index 903755080..6a328f797 100644 --- a/multisrc/overrides/madara/rightdarkscan/src/RightdarkScan.kt +++ b/multisrc/overrides/madara/rightdarkscan/src/RightdarkScan.kt @@ -1,19 +1,19 @@ -package eu.kanade.tachiyomi.extension.es.rightdarkscan - -import eu.kanade.tachiyomi.multisrc.madara.Madara -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import java.text.SimpleDateFormat -import java.util.Locale - -class RightdarkScan : Madara( - "Rightdark Scan", - "https://rightdark-scan.com", - "es", - SimpleDateFormat("MMMM dd, yyyy", Locale("es")), -) { - override val client = super.client.newBuilder() - .rateLimit(2, 1) - .build() - - override val useNewChapterEndpoint = true -} +package eu.kanade.tachiyomi.extension.es.rightdarkscan + +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import java.text.SimpleDateFormat +import java.util.Locale + +class RightdarkScan : Madara( + "Rightdark Scan", + "https://rightdark-scan.com", + "es", + SimpleDateFormat("MMMM dd, yyyy", Locale("es")), +) { + override val client = super.client.newBuilder() + .rateLimit(2, 1) + .build() + + override val useNewChapterEndpoint = true +} diff --git a/multisrc/overrides/madara/shinigami/additional.gradle b/multisrc/overrides/madara/shinigami/additional.gradle new file mode 100644 index 000000000..56e3d5c86 --- /dev/null +++ b/multisrc/overrides/madara/shinigami/additional.gradle @@ -0,0 +1,3 @@ +dependencies { + implementation(project(":lib-synchrony")) +} diff --git a/multisrc/overrides/madara/shinigami/src/Shinigami.kt b/multisrc/overrides/madara/shinigami/src/Shinigami.kt index b3274345a..18ead1739 100644 --- a/multisrc/overrides/madara/shinigami/src/Shinigami.kt +++ b/multisrc/overrides/madara/shinigami/src/Shinigami.kt @@ -1,11 +1,28 @@ package eu.kanade.tachiyomi.extension.id.shinigami +import android.app.Application +import android.content.SharedPreferences +import android.util.Base64 +import android.widget.Toast +import androidx.preference.EditTextPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.lib.cryptoaes.CryptoAES +import eu.kanade.tachiyomi.lib.synchrony.Deobfuscator import eu.kanade.tachiyomi.multisrc.madara.Madara -import eu.kanade.tachiyomi.network.interceptor.rateLimit +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter +import kotlinx.serialization.Serializable +import kotlinx.serialization.decodeFromString import okhttp3.Headers +import okhttp3.Interceptor import okhttp3.OkHttpClient +import okhttp3.Response +import org.jsoup.nodes.Document import org.jsoup.nodes.Element +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import java.io.IOException import java.util.concurrent.TimeUnit class Shinigami : Madara("Shinigami", "https://shinigamitoon.com", "id") { @@ -16,15 +33,91 @@ class Shinigami : Madara("Shinigami", "https://shinigamitoon.com", "id") { override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/" - override val client: OkHttpClient = super.client.newBuilder() - .rateLimit(4, 1, TimeUnit.SECONDS) + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + private val encodedString = "AAA AaAAAAH QAAAB0 AAAAcA AAAHMAA AA6AAA ALwAAAC8AA " + "AB0AAAAYQA AAGM AAADoAAAAaQAAAH kAAABvAA AAbQAAA GkAAABvAAAA cgAAAGcAAAAuAAA AZwAAAGk " + "AAAB0AAAA aAAAAHUAA ABiAAAALgAAAGkAA ABvAAAAL wAAAHUAAABzA AAAZQAAAHIAAAAtA AAAYQAAAGcA " + "AABlyAtAAAbgA AAHQAAAB6AAAA LwAAAHUAAA BcAAAAZQ AAAHIAAAAtAAA AYQAAAGcAAABl AAAAbgAA AHQAAAB6AAAALgAAAG" + " oAhAntUAABzAA AAbwAAAG4=" + + private val tachiUaUrl = Base64.decode(encodedString.replace("\\s".toRegex(), "").replace("DoA", "BoA").replace("GoAhAntU", "GoA").replace("BlyAt", "BlA").replace("BcA", "BzA"), Base64.DEFAULT).toString(Charsets.UTF_32).replace("z", "s") + + private var secChUaMP: List? = null + private var userAgent: String? = null + private var checkedUa = false + + private val uaIntercept = object : Interceptor { + override fun intercept(chain: Interceptor.Chain): Response { + val customUa = preferences.getString(PREF_KEY_CUSTOM_UA, "") + try { + if (customUa!!.isNotBlank()) userAgent = customUa + + if (userAgent.isNullOrBlank() && checkedUa.not()) { + val uaResponse = chain.proceed(GET(tachiUaUrl)) + if (uaResponse.isSuccessful) { + val parseTachiUa = uaResponse.use { json.decodeFromString(it.body.string()) } + + var listUserAgentString = parseTachiUa.desktop + parseTachiUa.mobile + + listUserAgentString = listUserAgentString!!.filter { + listOf("windows", "android").any { filter -> + it.contains(filter, ignoreCase = true) + } + } + userAgent = listUserAgentString!!.random() + checkedUa = true + } + uaResponse.close() + } + + if (userAgent.isNullOrBlank().not()) { + secChUaMP = if (userAgent!!.contains("Windows")) { + listOf("?0", "Windows") + } else { + listOf("?1", "Android") + } + + val newRequest = chain.request().newBuilder() + .header("User-Agent", userAgent!!.trim()) + .header("Sec-CH-UA-Mobile", secChUaMP!![0]) + .header("Sec-CH-UA-Platform", secChUaMP!![1]) + .removeHeader("X-Requested-With") + .build() + + return chain.proceed(newRequest) + } + return chain.proceed(chain.request()) + } catch (e: Exception) { + throw IOException(e.message) + } + } + } + + @Serializable + data class TachiUaResponse( + val desktop: List = emptyList(), + val mobile: List = emptyList(), + ) + + // disable random ua in ext setting from multisrc (.setRandomUserAgent) + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .addInterceptor(uaIntercept) + .connectTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) .build() - override fun headersBuilder(): Headers.Builder = super.headersBuilder() - .add("Sec-Fetch-Dest", "document") - .add("Sec-Fetch-Mode", "navigate") - .add("Sec-Fetch-Site", "same-origin") - .add("Upgrade-Insecure-Requests", "1") + override fun headersBuilder(): Headers.Builder { + val builder = super.headersBuilder() + .add("Sec-Fetch-Dest", "document") + .add("Sec-Fetch-Mode", "navigate") + .add("Sec-Fetch-Site", "same-origin") + .add("Upgrade-Insecure-Requests", "1") + .add("X-Requested-With", "") // added for webview, and removed in interceptor for normal use + + // used to flush tachi custom ua in webview and use system ua instead + if (userAgent.isNullOrBlank()) builder.removeAll("User-Agent") + + return builder + } override val mangaSubString = "semua-series" @@ -43,4 +136,76 @@ class Shinigami : Madara("Shinigami", "https://shinigamitoon.com", "id") { setUrlWithoutDomain(fixedUrl) } + + // Page list + @Serializable + data class CDT(val ct: String, val s: String) + + override fun pageListParse(document: Document): List { + val script = document.selectFirst("script:containsData(chapter_data)")?.data() + ?: throw Exception("chapter_data script not found") + + val deobfuscated = Deobfuscator.deobfuscateScript(script) + ?: throw Exception("Unable to deobfuscate chapter_data script") + + val postId = script.substringAfter("var post_id = '").substringBefore("'") + val chapterData = json.decodeFromString( + script.substringAfter("var chapter_data = '").substringBefore("'"), + ) + + val keyMatch = KEY_REGEX.find(deobfuscated)!!.groupValues + val key = postId + keyMatch[1] + postId + keyMatch[2] + postId + val salt = chapterData.s.decodeHex() + + val unsaltedCiphertext = Base64.decode(chapterData.ct, Base64.DEFAULT) + val ciphertext = SALTED + salt + unsaltedCiphertext + + val decrypted = CryptoAES.decrypt(Base64.encodeToString(ciphertext, Base64.DEFAULT), key) + val data = json.decodeFromString>(decrypted) + return data.mapIndexed { idx, it -> + Page(idx, document.location(), it) + } + } + + // https://stackoverflow.com/a/66614516 + private fun String.decodeHex(): ByteArray { + check(length % 2 == 0) { "Must have an even length" } + + return chunked(2) + .map { it.toInt(16).toByte() } + .toByteArray() + } + + // remove random ua in setting ext from multisrc and use custom one + override fun setupPreferenceScreen(screen: PreferenceScreen) { + val prefCustomUserAgent = EditTextPreference(screen.context).apply { + key = PREF_KEY_CUSTOM_UA + title = TITLE_CUSTOM_UA + summary = (preferences.getString(PREF_KEY_CUSTOM_UA, "")!!.trim() + SUMMARY_STRING_CUSTOM_UA).trim() + setOnPreferenceChangeListener { _, newValue -> + val customUa = newValue as String + preferences.edit().putString(PREF_KEY_CUSTOM_UA, customUa).apply() + if (customUa.isNullOrBlank()) { + Toast.makeText(screen.context, RESTART_APP_STRING, Toast.LENGTH_LONG).show() + } else { + userAgent = null + } + summary = (customUa.trim() + SUMMARY_STRING2_CUSTOM_UA).trim() + + true + } + } + screen.addPreference(prefCustomUserAgent) + } + + companion object { + const val TITLE_CUSTOM_UA = "Custom User-Agent" + const val PREF_KEY_CUSTOM_UA = "pref_key_custom_ua" + const val SUMMARY_STRING_CUSTOM_UA = "\n\nBiarkan kosong untuk menggunakan User-Agent secara random" + const val SUMMARY_STRING2_CUSTOM_UA = "\n\nKosongkan untuk menggunakan User-Agent secara random" + + const val RESTART_APP_STRING = "Restart Tachiyomi untuk menggunakan pengaturan baru." + + private val KEY_REGEX by lazy { Regex("""post_id\s+\+\s+'(.*?)'\s+\+\s+post_id\s+\+\s+'(.*?)'\s+\+\s+post_id""") } + } } diff --git a/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..adaf9aa7d Binary files /dev/null and b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..3e353e2cc Binary files /dev/null and b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..ee6b16c88 Binary files /dev/null and b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..2c08ebfe7 Binary files /dev/null and b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..786fc6349 Binary files /dev/null and b/multisrc/overrides/mangathemesia/luminousscans/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/mymangacms/default/AndroidManifest.xml b/multisrc/overrides/mymangacms/default/AndroidManifest.xml index 29f5f8a85..558148ad5 100644 --- a/multisrc/overrides/mymangacms/default/AndroidManifest.xml +++ b/multisrc/overrides/mymangacms/default/AndroidManifest.xml @@ -1,22 +1,22 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + diff --git a/multisrc/overrides/zmanga/komikindoinfo/src/KomikIndoInfo.kt b/multisrc/overrides/zmanga/komikindoinfo/src/KomikIndoInfo.kt index b8eb17c7d..65c03e7bd 100644 --- a/multisrc/overrides/zmanga/komikindoinfo/src/KomikIndoInfo.kt +++ b/multisrc/overrides/zmanga/komikindoinfo/src/KomikIndoInfo.kt @@ -1,10 +1,10 @@ -package eu.kanade.tachiyomi.extension.id.komikindoinfo - -import eu.kanade.tachiyomi.multisrc.zmanga.ZManga -import java.text.SimpleDateFormat -import java.util.Locale - -class KomikIndoInfo : ZManga("KomikIndo.info", "http://komikindo.info", "id", dateFormat = SimpleDateFormat("MMM d, yyyy", Locale("id"))) { - - override val hasProjectPage = true -} +package eu.kanade.tachiyomi.extension.id.komikindoinfo + +import eu.kanade.tachiyomi.multisrc.zmanga.ZManga +import java.text.SimpleDateFormat +import java.util.Locale + +class KomikIndoInfo : ZManga("KomikIndo.info", "http://komikindo.info", "id", dateFormat = SimpleDateFormat("MMM d, yyyy", Locale("id"))) { + + override val hasProjectPage = true +} diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt index a3d9079b0..ba8694f47 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/MadaraGenerator.kt @@ -65,7 +65,6 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("Cat300", "https://cat300.com", "th", isNsfw = true, className = "Cat300", overrideVersionCode = 1), SingleLang("CatOnHeadTranslations", "https://catonhead.com", "en", overrideVersionCode = 2), SingleLang("Cerise Scan", "https://cerisescan.com", "pt-BR", pkgName = "cerisescans", isNsfw = true, overrideVersionCode = 7), - SingleLang("Çizgi Roman Arşivi", "https://cizgiromanarsivi.com", "tr", className = "CizgiRomanArsivi"), SingleLang("Clover Manga", "https://clover-manga.com", "tr", overrideVersionCode = 2), SingleLang("Coco Rip", "https://cocorip.net", "es"), SingleLang("Coffee Manga", "https://coffeemanga.io", "en", isNsfw = false, overrideVersionCode = 2), @@ -214,23 +213,22 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("Manga Lord", "https://mangalord.com", "en", overrideVersionCode = 1), SingleLang("Manga Mammy", "https://mangamammy.ru", "ru", isNsfw = true), SingleLang("Manga Mitsu", "https://mangamitsu.com", "en", isNsfw = true, overrideVersionCode = 2), - SingleLang("Mangá Nanquim", "https://mangananquim.com", "pt-BR", className = "MangaNanquim"), SingleLang("Manga Nerds", "https://manganerds.com", "en", isNsfw = false), SingleLang("Manga One Love", "https://mangaonelove.site/", "ru", isNsfw = true), SingleLang("Manga Online Team", "https://mangaonlineteam.com", "en"), + SingleLang("Manga Queen", "https://mangaqueen.net", "en"), SingleLang("Manga Queen.com", "https://mangaqueen.com", "en", isNsfw = true, className = "MangaQueenCom"), SingleLang("Manga Queen.online (unoriginal)", "https://mangaqueen.online", "en", isNsfw = true, className = "MangaQueenOnline"), - SingleLang("Manga Queen", "https://mangaqueen.net", "en"), SingleLang("Manga Read", "https://mangaread.co", "en", overrideVersionCode = 1), SingleLang("Manga Rock Team", "https://mangarockteam.com", "en", overrideVersionCode = 1), SingleLang("Manga Rock.team (unoriginal)", "https://mangarock.team", "en", isNsfw = false, className = "MangaRockTeamUnoriginal"), SingleLang("Manga Rocky", "https://mangarocky.com", "en", overrideVersionCode = 1), SingleLang("Manga Rose", "https://mangarose.net", "ar"), - SingleLang("Manga Şehri", "https://manga-sehri.com", "tr", className = "MangaSehri", isNsfw = true, overrideVersionCode = 1), SingleLang("Manga Starz", "https://mangastarz.org", "ar", overrideVersionCode = 5), SingleLang("Manga Too", "https://mangatoo.com", "en", overrideVersionCode = 1), SingleLang("Manga Tx.gg (unoriginal)", "https://mangatx.gg", "en", isNsfw = false, className = "MangaTxGg"), SingleLang("Manga Weebs", "https://mangaweebs.in", "en", overrideVersionCode = 8), + SingleLang("Manga Şehri", "https://manga-sehri.com", "tr", className = "MangaSehri", isNsfw = true, overrideVersionCode = 1), SingleLang("Manga-1001.com", "https://manga-1001.com", "en", isNsfw = false, className = "MangaDash1001Com"), SingleLang("Manga-fast.com", "https://manga-fast.com", "en", className = "Mangafastcom", overrideVersionCode = 3), SingleLang("Manga-Raw.info (unoriginal)", "https://manga-raw.info", "en", isNsfw = true, className = "MangaRawInfo"), @@ -244,8 +242,8 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("MangaBaz", "https://mangabaz.net", "en"), SingleLang("MangaBob", "https://mangabob.com", "en", overrideVersionCode = 1), SingleLang("MangaCC", "https://mangacc.com", "en"), - SingleLang("MangaClash.tv (unoriginal)", "https://mangaclash.tv", "en", isNsfw = true, className = "MangaClashTv"), SingleLang("MangaClash", "https://mangaclash.com", "en", overrideVersionCode = 3), + SingleLang("MangaClash.tv (unoriginal)", "https://mangaclash.tv", "en", isNsfw = true, className = "MangaClashTv"), SingleLang("MangaCrazy", "https://mangacrazy.net", "all", isNsfw = true), SingleLang("MangaCultivator", "https://mangacultivator.com", "en", overrideVersionCode = 2), SingleLang("MangaCV", "https://mangacv.com", "en", isNsfw = true), @@ -307,6 +305,7 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("Mangaxico", "https://mangaxico.com", "es", isNsfw = true), SingleLang("MangaXP", "https://mangaxp.com", "en", overrideVersionCode = 1), SingleLang("MangaYami", "https://www.mangayami.club", "en", overrideVersionCode = 2), + SingleLang("Mangá Nanquim", "https://mangananquim.com", "pt-BR", className = "MangaNanquim"), SingleLang("Manhastro", "https://manhastro.com", "pt-BR"), SingleLang("Manhatic", "https://manhatic.com", "ar", isNsfw = true), SingleLang("Manhua ES", "https://manhuaes.com", "en", overrideVersionCode = 6), @@ -319,12 +318,12 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("ManhuaBox", "https://manhuabox.net", "en", overrideVersionCode = 2), SingleLang("ManhuaChill", "https://manhuachill.com", "en"), SingleLang("ManhuaDex", "https://manhuadex.com", "en", isNsfw = false), - SingleLang("ManhuaFast.net (unoriginal)", "https://manhuafast.net", "en", isNsfw = false, className = "ManhuaFastNet"), SingleLang("ManhuaFast", "https://manhuafast.com", "en", overrideVersionCode = 3), + SingleLang("ManhuaFast.net (unoriginal)", "https://manhuafast.net", "en", isNsfw = false, className = "ManhuaFastNet"), SingleLang("Manhuaga", "https://manhuaga.com", "en", overrideVersionCode = 2), SingleLang("ManhuaHot", "https://manhuahot.com", "en"), - SingleLang("ManhuaManhwa.online", "https://manhuamanhwa.online", "en", isNsfw = false, className = "ManhuaManhwaOnline"), SingleLang("ManhuaManhwa", "https://manhuamanhwa.com", "en", isNsfw = true), + SingleLang("ManhuaManhwa.online", "https://manhuamanhwa.online", "en", isNsfw = false, className = "ManhuaManhwaOnline"), SingleLang("ManhuaScan.info (unoriginal)", "https://manhuascan.info", "en", isNsfw = true, className = "ManhuaScanInfo"), SingleLang("ManhuaUS", "https://manhuaus.com", "en", overrideVersionCode = 5), SingleLang("ManhuaZone", "https://manhuazone.org", "en", overrideVersionCode = 1), @@ -349,8 +348,8 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("Mantraz Scan", "https://mantrazscan.com", "es"), SingleLang("ManWe", "https://manwe.pro", "tr", className = "EvaScans", overrideVersionCode = 1), SingleLang("ManyComic", "https://manycomic.com", "en", isNsfw = true, overrideVersionCode = 1), - SingleLang("ManyToon.me", "https://manytoon.me", "en", isNsfw = true, className = "ManyToonMe", overrideVersionCode = 5), SingleLang("ManyToon", "https://manytoon.com", "en", isNsfw = true, overrideVersionCode = 5), + SingleLang("ManyToon.me", "https://manytoon.me", "en", isNsfw = true, className = "ManyToonMe", overrideVersionCode = 5), SingleLang("ManyToonClub", "https://manytoon.club", "ko", isNsfw = true, overrideVersionCode = 2), SingleLang("MG Komik", "https://mgkomik.id", "id", overrideVersionCode = 11), SingleLang("Midnight Mess Scans", "https://midnightmess.org", "en", isNsfw = true, overrideVersionCode = 6), @@ -505,18 +504,19 @@ class MadaraGenerator : ThemeSourceGenerator { SingleLang("Yuri Verso", "https://yuri.live", "pt-BR", overrideVersionCode = 3), SingleLang("Zandy no Fansub", "https://zandynofansub.aishiteru.org", "en"), SingleLang("ZinChanManga", "https://zinchanmanga.com", "en", isNsfw = true), - SingleLang("ZinManga.top (unoriginal)", "https://zinmanga.top", "en", isNsfw = false, className = "ZinMangaTop"), SingleLang("Zinmanga", "https://zinmanga.com", "en", overrideVersionCode = 1), + SingleLang("ZinManga.top (unoriginal)", "https://zinmanga.top", "en", isNsfw = false, className = "ZinMangaTop"), SingleLang("Zinmanhwa", "https://zinmanhwa.com", "en"), SingleLang("ZuttoManga", "https://zuttomanga.com", "en", overrideVersionCode = 1), + SingleLang("Çizgi Roman Arşivi", "https://cizgiromanarsivi.com", "tr", className = "CizgiRomanArsivi"), SingleLang("شبكة كونان العربية", "https://manga.detectiveconanar.com", "ar", className = "DetectiveConanAr", overrideVersionCode = 2), SingleLang("عرب تونز", "https://arabtoons.net", "ar", isNsfw = true, className = "ArabToons"), + SingleLang("فالكون مانجا", "https://falconmanga.com", "ar", className = "FalconManga"), + SingleLang("كوميك العرب", "https://comicarab.com", "ar", isNsfw = true, className = "ComicArab"), SingleLang("مانجا العاشق", "https://3asq.org", "ar", className = "Manga3asq", overrideVersionCode = 2), SingleLang("مانجا ليك", "https://manga-lek.net", "ar", className = "Mangalek", overrideVersionCode = 4), SingleLang("مانجا ليكس", "https://mangaleks.com", "ar", className = "MangaLeks"), SingleLang("مانجا لينك", "https://mangalink.io", "ar", className = "MangaLinkio", overrideVersionCode = 3), - SingleLang("كوميك العرب", "https://comicarab.com", "ar", isNsfw = true, className = "ComicArab"), - SingleLang("فالكون مانجا", "https://falconmanga.com", "ar", className = "FalconManga"), SingleLang("巴卡漫画", "https://bakamh.com", "zh", isNsfw = true, className = "Bakamh"), ) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt index 6fa285173..66410e56c 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt @@ -68,8 +68,8 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("KomikIndo.co", "https://komikindo.co", "id", className = "KomikindoCo", overrideVersionCode = 3), SingleLang("KomikMama", "https://komikmama.co", "id", overrideVersionCode = 1), SingleLang("KomikManhwa", "https://komikmanhwa.me", "id", isNsfw = true), - SingleLang("Komiktap", "https://komiktap.me", "id", isNsfw = true), SingleLang("Komiksan", "https://komiksan.link", "id", overrideVersionCode = 2), + SingleLang("Komiktap", "https://komiktap.me", "id", isNsfw = true), SingleLang("Komiku.com", "https://komiku.com", "id", className = "KomikuCom"), SingleLang("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en", className = "KumaScans", overrideVersionCode = 1), SingleLang("KumaPoi", "https://kumapoi.info", "id", isNsfw = true, overrideVersionCode = 3), @@ -86,7 +86,6 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("Mangacim", "https://www.mangacim.com", "tr", overrideVersionCode = 1), SingleLang("MangaKita", "https://mangakita.id", "id", overrideVersionCode = 2), SingleLang("Mangakyo", "https://mangakyo.org", "id", overrideVersionCode = 3), - SingleLang("Mangás Chan", "https://mangaschan.net", "pt-BR", className = "MangasChan", overrideVersionCode = 1), SingleLang("MangaShiina", "https://mangashiina.com", "es"), SingleLang("MangaShiro", "https://mangashiro.me", "id"), SingleLang("Mangasusu", "https://mangasusuku.xyz", "id", isNsfw = true, overrideVersionCode = 3), @@ -94,6 +93,7 @@ class MangaThemesiaGenerator : ThemeSourceGenerator { SingleLang("MangaTale", "https://mangatale.co", "id", overrideVersionCode = 1), SingleLang("MangaWT", "https://mangawt.com", "tr", overrideVersionCode = 5), SingleLang("Mangayaro", "https://www.mangayaro.id", "id", overrideVersionCode = 1), + SingleLang("Mangás Chan", "https://mangaschan.net", "pt-BR", className = "MangasChan", overrideVersionCode = 1), SingleLang("Mangás Online", "https://mangasonline.cc", "pt-BR", className = "MangasOnline"), SingleLang("Manhwa Freak", "https://manhwa-freak.com", "en", overrideVersionCode = 3), SingleLang("Manhwa Lover", "https://manhwalover.com", "en", isNsfw = true, overrideVersionCode = 1), diff --git a/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt b/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt index db3f05876..40a55756c 100644 --- a/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt +++ b/src/all/batoto/src/eu/kanade/tachiyomi/extension/all/batoto/BatoTo.kt @@ -456,7 +456,7 @@ open class BatoTo( } override fun pageListParse(document: Document): List { - val script = document.selectFirst("script:containsData(imgHttpLis):containsData(batoWord):containsData(batoPass)")?.html() + val script = document.selectFirst("script:containsData(imgHttps):containsData(batoWord):containsData(batoPass)")?.html() ?: throw RuntimeException("Couldn't find script with image data.") val imgHttpsString = script.substringAfter("const imgHttps =").substringBefore(";").trim() diff --git a/src/all/vinnieVeritas/build.gradle b/src/all/vinnieVeritas/build.gradle old mode 100755 new mode 100644 diff --git a/src/all/vinnieVeritas/res/mipmap-hdpi/ic_launcher.png b/src/all/vinnieVeritas/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/all/vinnieVeritas/res/mipmap-mdpi/ic_launcher.png b/src/all/vinnieVeritas/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/all/vinnieVeritas/res/mipmap-xhdpi/ic_launcher.png b/src/all/vinnieVeritas/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/all/vinnieVeritas/res/mipmap-xxhdpi/ic_launcher.png b/src/all/vinnieVeritas/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/all/vinnieVeritas/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/vinnieVeritas/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/all/vinnieVeritas/src/eu/kanade/tachiyomi/extension/all/vinnieVeritas/vinnieVeritas.kt b/src/all/vinnieVeritas/src/eu/kanade/tachiyomi/extension/all/vinnieVeritas/vinnieVeritas.kt old mode 100755 new mode 100644 diff --git a/src/all/vinnieVeritas/src/eu/kanade/tachiyomi/extension/all/vinnieVeritas/vinnieVeritasFactory.kt b/src/all/vinnieVeritas/src/eu/kanade/tachiyomi/extension/all/vinnieVeritas/vinnieVeritasFactory.kt old mode 100755 new mode 100644 index eec5e5d0d..90ebe8a14 --- a/src/all/vinnieVeritas/src/eu/kanade/tachiyomi/extension/all/vinnieVeritas/vinnieVeritasFactory.kt +++ b/src/all/vinnieVeritas/src/eu/kanade/tachiyomi/extension/all/vinnieVeritas/vinnieVeritasFactory.kt @@ -1,13 +1,13 @@ -package eu.kanade.tachiyomi.extension.all.vinnieVeritas - -import eu.kanade.tachiyomi.source.Source -import eu.kanade.tachiyomi.source.SourceFactory - -class vinnieVeritasFactory : SourceFactory { - - override fun createSources(): List = - listOf( - vinnieVeritas("en"), - vinnieVeritas("es"), - ) -} +package eu.kanade.tachiyomi.extension.all.vinnieVeritas + +import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.source.SourceFactory + +class vinnieVeritasFactory : SourceFactory { + + override fun createSources(): List = + listOf( + vinnieVeritas("en"), + vinnieVeritas("es"), + ) +} diff --git a/src/ar/teamx/build.gradle b/src/ar/teamx/build.gradle index b7209f1f3..53ae0bdb6 100644 --- a/src/ar/teamx/build.gradle +++ b/src/ar/teamx/build.gradle @@ -2,7 +2,7 @@ ext { extName = 'Team X' pkgNameSuffix = 'ar.teamx' extClass = '.TeamX' - extVersionCode = 15 + extVersionCode = 16 isNsfw = false } diff --git a/src/ar/teamx/src/eu/kanade/tachiyomi/extension/ar/teamx/TeamX.kt b/src/ar/teamx/src/eu/kanade/tachiyomi/extension/ar/teamx/TeamX.kt index eb1620fbe..47f8d86a0 100644 --- a/src/ar/teamx/src/eu/kanade/tachiyomi/extension/ar/teamx/TeamX.kt +++ b/src/ar/teamx/src/eu/kanade/tachiyomi/extension/ar/teamx/TeamX.kt @@ -22,7 +22,7 @@ class TeamX : ParsedHttpSource() { override val name = "Team X" - override val baseUrl = "https://team11x11.com" + override val baseUrl = "https://team1x12.com" override val lang = "ar" diff --git a/src/en/elanschool/res/mipmap-hdpi/ic_launcher.png b/src/en/elanschool/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/elanschool/res/mipmap-mdpi/ic_launcher.png b/src/en/elanschool/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/elanschool/res/mipmap-xhdpi/ic_launcher.png b/src/en/elanschool/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/elanschool/res/mipmap-xxhdpi/ic_launcher.png b/src/en/elanschool/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/elanschool/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/elanschool/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/mangapill/res/mipmap-hdpi/ic_launcher.png b/src/en/mangapill/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/mangapill/res/mipmap-mdpi/ic_launcher.png b/src/en/mangapill/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/mangapill/res/mipmap-xhdpi/ic_launcher.png b/src/en/mangapill/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/mangapill/res/mipmap-xxhdpi/ic_launcher.png b/src/en/mangapill/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/mangapill/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/mangapill/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/en/oots/AndroidManifest.xml b/src/en/oots/AndroidManifest.xml index cd55ad917..8072ee00d 100644 --- a/src/en/oots/AndroidManifest.xml +++ b/src/en/oots/AndroidManifest.xml @@ -1,2 +1,2 @@ - - + + diff --git a/src/en/reaperscans/AndroidManifest.xml b/src/en/reaperscans/AndroidManifest.xml new file mode 100644 index 000000000..3905aa593 --- /dev/null +++ b/src/en/reaperscans/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/src/en/reaperscans/build.gradle b/src/en/reaperscans/build.gradle new file mode 100644 index 000000000..6e5f9d1f8 --- /dev/null +++ b/src/en/reaperscans/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'Reaper Scans' + pkgNameSuffix = 'en.reaperscans' + extClass = '.ReaperScans' + extVersionCode = 47 +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/reaperscans/res/mipmap-hdpi/ic_launcher.png b/src/en/reaperscans/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..f6c5fc5a7 Binary files /dev/null and b/src/en/reaperscans/res/mipmap-hdpi/ic_launcher.png differ diff --git a/src/en/reaperscans/res/mipmap-mdpi/ic_launcher.png b/src/en/reaperscans/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..e7ffd65f3 Binary files /dev/null and b/src/en/reaperscans/res/mipmap-mdpi/ic_launcher.png differ diff --git a/src/en/reaperscans/res/mipmap-xhdpi/ic_launcher.png b/src/en/reaperscans/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..d79fd54e9 Binary files /dev/null and b/src/en/reaperscans/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/src/en/reaperscans/res/mipmap-xxhdpi/ic_launcher.png b/src/en/reaperscans/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..779d9aea3 Binary files /dev/null and b/src/en/reaperscans/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/src/en/reaperscans/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/reaperscans/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..08a0864d9 Binary files /dev/null and b/src/en/reaperscans/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScansDto.kt b/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScansDto.kt new file mode 100644 index 000000000..62246fb66 --- /dev/null +++ b/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScansDto.kt @@ -0,0 +1,21 @@ +package eu.kanade.tachiyomi.extension.en.reaperscans + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonObject + +@Serializable +data class LiveWireResponseDto( + val effects: LiveWireEffectsDto, + val serverMemo: JsonObject, +) + +@Serializable +data class LiveWireEffectsDto( + val html: String, +) + +@Serializable +data class LiveWireDataDto( + val fingerprint: JsonObject, + val serverMemo: JsonObject, +) diff --git a/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScansUrlActivity.kt b/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScansUrlActivity.kt new file mode 100644 index 000000000..6442e6411 --- /dev/null +++ b/src/en/reaperscans/src/eu/kanade/tachiyomi/extension/en/reaperscans/ReaperScansUrlActivity.kt @@ -0,0 +1,34 @@ +package eu.kanade.tachiyomi.extension.en.reaperscans + +import android.app.Activity +import android.content.ActivityNotFoundException +import android.content.Intent +import android.os.Bundle +import android.util.Log +import kotlin.system.exitProcess + +class ReaperScansUrlActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val pathSegments = intent?.data?.pathSegments + if (pathSegments != null && pathSegments.size >= 2) { + val id = pathSegments[1] + val mainIntent = Intent().apply { + action = "eu.kanade.tachiyomi.SEARCH" + putExtra("query", ReaperScans.PREFIX_ID_SEARCH + id) + putExtra("filter", packageName) + } + + try { + startActivity(mainIntent) + } catch (e: ActivityNotFoundException) { + Log.e("ReaperScansUrlActivity", e.toString()) + } + } else { + Log.e("ReaperScansUrlActivity", "could not parse uri from intent $intent") + } + + finish() + exitProcess(0) + } +} diff --git a/src/en/zeroscans/build.gradle b/src/en/zeroscans/build.gradle index 13ece64d7..c460ab144 100644 --- a/src/en/zeroscans/build.gradle +++ b/src/en/zeroscans/build.gradle @@ -2,7 +2,7 @@ ext { extName = 'Zero Scans' pkgNameSuffix = 'en.zeroscans' extClass = '.ZeroScans' - extVersionCode = 6 + extVersionCode = 7 } apply from: "$rootDir/common.gradle" diff --git a/src/en/zeroscans/src/eu/kanade/tachiyomi/extension/en/zeroscans/ZeroScans.kt b/src/en/zeroscans/src/eu/kanade/tachiyomi/extension/en/zeroscans/ZeroScans.kt index f4d1b984a..cb13ad4fa 100644 --- a/src/en/zeroscans/src/eu/kanade/tachiyomi/extension/en/zeroscans/ZeroScans.kt +++ b/src/en/zeroscans/src/eu/kanade/tachiyomi/extension/en/zeroscans/ZeroScans.kt @@ -26,7 +26,7 @@ class ZeroScans : HttpSource() { override val lang: String = "en" - override val baseUrl: String = "https://zeroscans.com" + override val baseUrl: String = "https://zscans.com" override val supportsLatest: Boolean = true diff --git a/src/es/ikuhentai/build.gradle b/src/es/ikuhentai/build.gradle old mode 100755 new mode 100644 diff --git a/src/es/ikuhentai/src/eu/kanade/tachiyomi/extension/es/ikuhentai/Ikuhentai.kt b/src/es/ikuhentai/src/eu/kanade/tachiyomi/extension/es/ikuhentai/Ikuhentai.kt old mode 100755 new mode 100644 diff --git a/src/es/kumanga/build.gradle b/src/es/kumanga/build.gradle old mode 100755 new mode 100644 diff --git a/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt b/src/es/kumanga/src/eu/kanade/tachiyomi/extension/es/kumanga/Kumanga.kt old mode 100755 new mode 100644 diff --git a/src/es/lectormanga/build.gradle b/src/es/lectormanga/build.gradle old mode 100755 new mode 100644 diff --git a/src/es/lectormanga/res/mipmap-hdpi/ic_launcher.png b/src/es/lectormanga/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/es/lectormanga/res/mipmap-mdpi/ic_launcher.png b/src/es/lectormanga/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/es/lectormanga/res/mipmap-xhdpi/ic_launcher.png b/src/es/lectormanga/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/es/lectormanga/res/mipmap-xxhdpi/ic_launcher.png b/src/es/lectormanga/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/es/lectormanga/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/lectormanga/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt b/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt old mode 100755 new mode 100644 diff --git a/src/es/tmohentai/build.gradle b/src/es/tmohentai/build.gradle old mode 100755 new mode 100644 diff --git a/src/es/tmohentai/src/eu/kanade/tachiyomi/extension/es/tmohentai/TMOHentai.kt b/src/es/tmohentai/src/eu/kanade/tachiyomi/extension/es/tmohentai/TMOHentai.kt old mode 100755 new mode 100644 diff --git a/src/id/komikindoid/AndroidManifest.xml b/src/id/komikindoid/AndroidManifest.xml index cd55ad917..8072ee00d 100644 --- a/src/id/komikindoid/AndroidManifest.xml +++ b/src/id/komikindoid/AndroidManifest.xml @@ -1,2 +1,2 @@ - - + + diff --git a/src/id/mangaku/res/mipmap-hdpi/ic_launcher.png b/src/id/mangaku/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/id/mangaku/res/mipmap-mdpi/ic_launcher.png b/src/id/mangaku/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/id/mangaku/res/mipmap-xhdpi/ic_launcher.png b/src/id/mangaku/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/id/mangaku/res/mipmap-xxhdpi/ic_launcher.png b/src/id/mangaku/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/id/mangaku/res/mipmap-xxxhdpi/ic_launcher.png b/src/id/mangaku/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/ru/acomics/res/mipmap-hdpi/ic_launcher.png b/src/ru/acomics/res/mipmap-hdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/ru/acomics/res/mipmap-mdpi/ic_launcher.png b/src/ru/acomics/res/mipmap-mdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/ru/acomics/res/mipmap-xhdpi/ic_launcher.png b/src/ru/acomics/res/mipmap-xhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/ru/acomics/res/mipmap-xxhdpi/ic_launcher.png b/src/ru/acomics/res/mipmap-xxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/ru/acomics/res/mipmap-xxxhdpi/ic_launcher.png b/src/ru/acomics/res/mipmap-xxxhdpi/ic_launcher.png old mode 100755 new mode 100644 diff --git a/src/vi/lxhentai/AndroidManifest.xml b/src/vi/lxhentai/AndroidManifest.xml index c64269cfc..1318108fa 100644 --- a/src/vi/lxhentai/AndroidManifest.xml +++ b/src/vi/lxhentai/AndroidManifest.xml @@ -1,23 +1,23 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/src/vi/truyengihot/AndroidManifest.xml b/src/vi/truyengihot/AndroidManifest.xml index 5d1d4d1c9..58d189dcf 100644 --- a/src/vi/truyengihot/AndroidManifest.xml +++ b/src/vi/truyengihot/AndroidManifest.xml @@ -1,20 +1,20 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +