Initial commit
22
multisrc/overrides/mymangacms/default/AndroidManifest.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<application>
|
||||
<activity
|
||||
android:name="eu.kanade.tachiyomi.multisrc.mymangacms.MyMangaCMSUrlActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="true"
|
||||
android:theme="@android:style/Theme.NoDisplay">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data
|
||||
android:host="${SOURCEHOST}"
|
||||
android:pathPattern="/..*"
|
||||
android:scheme="${SOURCESCHEME}" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 31 KiB |
BIN
multisrc/overrides/mymangacms/manhwa18/res/web_hi_res_512.png
Normal file
|
After Width: | Height: | Size: 212 KiB |
62
multisrc/overrides/mymangacms/manhwa18/src/Manhwa18.kt
Normal file
@@ -0,0 +1,62 @@
|
||||
package eu.kanade.tachiyomi.extension.en.manhwa18
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.mymangacms.MyMangaCMS
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
|
||||
class Manhwa18 : MyMangaCMS("Manhwa18", "https://manhwa18.com", "en") {
|
||||
|
||||
// Migrated from FMReader to MyMangaCMS.
|
||||
override val versionId = 2
|
||||
|
||||
override val parseAuthorString = "Author"
|
||||
override val parseAlternativeNameString = "Other name"
|
||||
override val parseAlternative2ndNameString = "Doujinshi"
|
||||
override val parseStatusString = "Status"
|
||||
override val parseStatusOngoingStringLowerCase = "on going"
|
||||
override val parseStatusOnHoldStringLowerCase = "on hold"
|
||||
override val parseStatusCompletedStringLowerCase = "completed"
|
||||
|
||||
override fun getFilterList(): FilterList = FilterList(
|
||||
Author("Author"),
|
||||
Status(
|
||||
"Status",
|
||||
"All",
|
||||
"Ongoing",
|
||||
"On hold",
|
||||
"Completed",
|
||||
),
|
||||
Sort(
|
||||
"Order",
|
||||
"A-Z",
|
||||
"Z-A",
|
||||
"Latest update",
|
||||
"New manhwa",
|
||||
"Most view",
|
||||
"Most like",
|
||||
),
|
||||
GenreList(getGenreList(), "Genre"),
|
||||
)
|
||||
|
||||
// To populate this list:
|
||||
// console.log([...document.querySelectorAll("div.search-gerne_item")].map(elem => `Genre("${elem.textContent.trim()}", ${elem.querySelector("label").getAttribute("data-genre-id")}),`).join("\n"))
|
||||
override fun getGenreList() = listOf(
|
||||
Genre("Adult", 4),
|
||||
Genre("Doujinshi", 9),
|
||||
Genre("Harem", 17),
|
||||
Genre("Manga", 24),
|
||||
Genre("Manhwa", 26),
|
||||
Genre("Mature", 28),
|
||||
Genre("NTR", 33),
|
||||
Genre("Romance", 36),
|
||||
Genre("Webtoon", 57),
|
||||
Genre("Action", 59),
|
||||
Genre("Comedy", 60),
|
||||
Genre("BL", 61),
|
||||
Genre("Horror", 62),
|
||||
Genre("Raw", 63),
|
||||
Genre("Uncensore", 64),
|
||||
)
|
||||
|
||||
override fun dateUpdatedParser(date: String): Long =
|
||||
runCatching { dateFormatter.parse(date.substringAfter(" - "))?.time }.getOrNull() ?: 0L
|
||||
}
|
||||
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 31 KiB |
BIN
multisrc/overrides/mymangacms/manhwa18net/res/web_hi_res_512.png
Normal file
|
After Width: | Height: | Size: 212 KiB |
62
multisrc/overrides/mymangacms/manhwa18net/src/Manhwa18Net.kt
Normal file
@@ -0,0 +1,62 @@
|
||||
package eu.kanade.tachiyomi.extension.all.manhwa18net
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.mymangacms.MyMangaCMS
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
|
||||
class Manhwa18Net : MyMangaCMS("Manhwa18.net", "https://manhwa18.net", "en") {
|
||||
|
||||
// Migrated from FMReader to MyMangaCms.
|
||||
override val versionId = 2
|
||||
|
||||
override val parseAuthorString = "Author"
|
||||
override val parseAlternativeNameString = "Other name"
|
||||
override val parseAlternative2ndNameString = "Doujinshi"
|
||||
override val parseStatusString = "Status"
|
||||
override val parseStatusOngoingStringLowerCase = "on going"
|
||||
override val parseStatusOnHoldStringLowerCase = "on hold"
|
||||
override val parseStatusCompletedStringLowerCase = "completed"
|
||||
|
||||
override fun getFilterList(): FilterList = FilterList(
|
||||
Author("Author"),
|
||||
Status(
|
||||
"Status",
|
||||
"All",
|
||||
"Ongoing",
|
||||
"On hold",
|
||||
"Completed",
|
||||
),
|
||||
Sort(
|
||||
"Order",
|
||||
"A-Z",
|
||||
"Z-A",
|
||||
"Latest update",
|
||||
"New manhwa",
|
||||
"Most view",
|
||||
"Most like",
|
||||
),
|
||||
GenreList(getGenreList(), "Genre"),
|
||||
)
|
||||
|
||||
// To populate this list:
|
||||
// console.log([...document.querySelectorAll("div.search-gerne_item")].map(elem => `Genre("${elem.textContent.trim()}", ${elem.querySelector("label").getAttribute("data-genre-id")}),`).join("\n"))
|
||||
override fun getGenreList() = listOf(
|
||||
Genre("Adult", 4),
|
||||
Genre("Doujinshi", 9),
|
||||
Genre("Harem", 17),
|
||||
Genre("Manga", 24),
|
||||
Genre("Manhwa", 26),
|
||||
Genre("Mature", 28),
|
||||
Genre("NTR", 33),
|
||||
Genre("Romance", 36),
|
||||
Genre("Webtoon", 57),
|
||||
Genre("Action", 59),
|
||||
Genre("Comedy", 60),
|
||||
Genre("BL", 61),
|
||||
Genre("Horror", 62),
|
||||
Genre("Raw", 63),
|
||||
Genre("Uncensore", 64),
|
||||
)
|
||||
|
||||
override fun dateUpdatedParser(date: String): Long =
|
||||
runCatching { dateFormatter.parse(date.substringAfter(" - "))?.time }.getOrNull() ?: 0L
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 30 KiB |
@@ -0,0 +1,67 @@
|
||||
package eu.kanade.tachiyomi.extension.vi.truyentranhlh
|
||||
|
||||
import eu.kanade.tachiyomi.multisrc.mymangacms.MyMangaCMS
|
||||
|
||||
class TruyenTranhLH : MyMangaCMS("TruyenTranhLH", "https://truyenlh.com", "vi") {
|
||||
override val id: Long = 7969606392351831672
|
||||
|
||||
override fun getGenreList() = listOf(
|
||||
Genre("Action", 1),
|
||||
Genre("Adult", 2),
|
||||
Genre("Adventure", 3),
|
||||
Genre("Anime", 4),
|
||||
Genre("Chuyển Sinh", 5),
|
||||
Genre("Cổ Đại", 6),
|
||||
Genre("Comedy", 7),
|
||||
Genre("Comic", 8),
|
||||
Genre("Demons", 9),
|
||||
Genre("Detective", 10),
|
||||
Genre("Doujinshi", 11),
|
||||
Genre("Drama", 12),
|
||||
Genre("Đam Mỹ", 13),
|
||||
Genre("Ecchi", 14),
|
||||
Genre("Fantasy", 15),
|
||||
Genre("Gender Bender", 16),
|
||||
Genre("Harem", 17),
|
||||
Genre("Historical", 18),
|
||||
Genre("Horror", 19),
|
||||
Genre("Huyền Huyễn", 20),
|
||||
Genre("Isekai", 21),
|
||||
Genre("Josei", 22),
|
||||
Genre("Mafia", 23),
|
||||
Genre("Magic", 24),
|
||||
Genre("Manhua", 25),
|
||||
Genre("Manhwa", 26),
|
||||
Genre("Martial Arts", 27),
|
||||
Genre("Mature", 28),
|
||||
Genre("Military", 29),
|
||||
Genre("Mystery", 30),
|
||||
Genre("Ngôn Tình", 31),
|
||||
Genre("One shot", 32),
|
||||
Genre("Psychological", 33),
|
||||
Genre("Romance", 34),
|
||||
Genre("School Life", 35),
|
||||
Genre("Sci-fi", 36),
|
||||
Genre("Seinen", 37),
|
||||
Genre("Shoujo", 38),
|
||||
Genre("Shoujo Ai", 39),
|
||||
Genre("Shounen", 40),
|
||||
Genre("Shounen Ai", 41),
|
||||
Genre("Slice of life", 42),
|
||||
Genre("Smut", 43),
|
||||
Genre("Sports", 44),
|
||||
Genre("Supernatural", 45),
|
||||
Genre("Tragedy", 46),
|
||||
Genre("Trọng Sinh", 47),
|
||||
Genre("Truyện Màu", 48),
|
||||
Genre("Webtoon", 49),
|
||||
Genre("Xuyên Không", 50),
|
||||
Genre("Yaoi", 51),
|
||||
Genre("Yuri", 52),
|
||||
Genre("Mecha", 53),
|
||||
Genre("Cooking", 54),
|
||||
Genre("Trùng Sinh", 55),
|
||||
Genre("Gourmet", 56),
|
||||
Genre("Dark Fantasy", 57),
|
||||
)
|
||||
}
|
||||