Implement "Wie Manga!" (#379)
* Implement Wie Manga! * Unnecessary import
This commit is contained in:
parent
e198f7e671
commit
466515c801
3 changed files with 103 additions and 2 deletions
|
@ -2,7 +2,8 @@ package eu.kanade.tachiyomi.data.source
|
||||||
|
|
||||||
class Language(val code: String, val lang: String)
|
class Language(val code: String, val lang: String)
|
||||||
|
|
||||||
|
val DE = Language("DE", "German")
|
||||||
val EN = Language("EN", "English")
|
val EN = Language("EN", "English")
|
||||||
val RU = Language("RU", "Russian")
|
val RU = Language("RU", "Russian")
|
||||||
|
|
||||||
fun getLanguages() = listOf(EN, RU)
|
fun getLanguages() = listOf(DE, EN, RU)
|
|
@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.source.online.OnlineSource
|
import eu.kanade.tachiyomi.data.source.online.OnlineSource
|
||||||
import eu.kanade.tachiyomi.data.source.online.YamlOnlineSource
|
import eu.kanade.tachiyomi.data.source.online.YamlOnlineSource
|
||||||
import eu.kanade.tachiyomi.data.source.online.english.*
|
import eu.kanade.tachiyomi.data.source.online.english.*
|
||||||
|
import eu.kanade.tachiyomi.data.source.online.german.WieManga
|
||||||
import eu.kanade.tachiyomi.data.source.online.russian.Mangachan
|
import eu.kanade.tachiyomi.data.source.online.russian.Mangachan
|
||||||
import eu.kanade.tachiyomi.data.source.online.russian.Mintmanga
|
import eu.kanade.tachiyomi.data.source.online.russian.Mintmanga
|
||||||
import eu.kanade.tachiyomi.data.source.online.russian.Readmanga
|
import eu.kanade.tachiyomi.data.source.online.russian.Readmanga
|
||||||
|
@ -26,8 +27,9 @@ open class SourceManager(private val context: Context) {
|
||||||
val MANGACHAN = 7
|
val MANGACHAN = 7
|
||||||
val READMANGATODAY = 8
|
val READMANGATODAY = 8
|
||||||
val MANGASEE = 9
|
val MANGASEE = 9
|
||||||
|
val WIEMANGA = 10
|
||||||
|
|
||||||
val LAST_SOURCE = 9
|
val LAST_SOURCE = 10
|
||||||
|
|
||||||
val sourcesMap = createSources()
|
val sourcesMap = createSources()
|
||||||
|
|
||||||
|
@ -47,6 +49,7 @@ open class SourceManager(private val context: Context) {
|
||||||
MANGACHAN -> Mangachan(context, id)
|
MANGACHAN -> Mangachan(context, id)
|
||||||
READMANGATODAY -> Readmangatoday(context, id)
|
READMANGATODAY -> Readmangatoday(context, id)
|
||||||
MANGASEE -> Mangasee(context, id)
|
MANGASEE -> Mangasee(context, id)
|
||||||
|
WIEMANGA -> WieManga(context, id)
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
package eu.kanade.tachiyomi.data.source.online.german
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
import eu.kanade.tachiyomi.data.source.DE
|
||||||
|
import eu.kanade.tachiyomi.data.source.Language
|
||||||
|
import eu.kanade.tachiyomi.data.source.model.Page
|
||||||
|
import eu.kanade.tachiyomi.data.source.online.ParsedOnlineSource
|
||||||
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
|
import okhttp3.Response
|
||||||
|
import org.jsoup.nodes.Document
|
||||||
|
import org.jsoup.nodes.Element
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
|
||||||
|
class WieManga(context: Context, override val id: Int) : ParsedOnlineSource(context) {
|
||||||
|
|
||||||
|
override val name = "Wie Manga!"
|
||||||
|
|
||||||
|
override val baseUrl = "http://www.wiemanga.com"
|
||||||
|
|
||||||
|
override val lang: Language get() = DE
|
||||||
|
|
||||||
|
override fun popularMangaInitialUrl() = "$baseUrl/list/Hot-Book/"
|
||||||
|
|
||||||
|
override fun popularMangaSelector() = ".booklist td > div"
|
||||||
|
|
||||||
|
override fun popularMangaFromElement(element: Element, manga: Manga) {
|
||||||
|
val image = element.select("dt img")
|
||||||
|
val title = element.select("dd a:first-child")
|
||||||
|
|
||||||
|
manga.setUrlWithoutDomain(title.attr("href"))
|
||||||
|
manga.title = title.text()
|
||||||
|
manga.thumbnail_url = image.attr("src")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun popularMangaNextPageSelector() = null
|
||||||
|
|
||||||
|
override fun searchMangaInitialUrl(query: String) = "$baseUrl/search/?wd=$query"
|
||||||
|
|
||||||
|
override fun searchMangaSelector() = ".searchresult td > div"
|
||||||
|
|
||||||
|
override fun searchMangaFromElement(element: Element, manga: Manga) {
|
||||||
|
val image = element.select(".resultimg img")
|
||||||
|
val title = element.select(".resultbookname")
|
||||||
|
|
||||||
|
manga.setUrlWithoutDomain(title.attr("href"))
|
||||||
|
manga.title = title.text()
|
||||||
|
manga.thumbnail_url = image.attr("src")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun searchMangaNextPageSelector() = ".pagetor a.l"
|
||||||
|
|
||||||
|
override fun mangaDetailsParse(document: Document, manga: Manga) {
|
||||||
|
val imageElement = document.select(".bookmessgae tr > td:nth-child(1)").first()
|
||||||
|
val infoElement = document.select(".bookmessgae tr > td:nth-child(2)").first()
|
||||||
|
|
||||||
|
manga.author = infoElement.select("dd:nth-of-type(2) a").first()?.text()
|
||||||
|
manga.artist = infoElement.select("dd:nth-of-type(3) a").first()?.text()
|
||||||
|
manga.description = infoElement.select("dl > dt:last-child").first()?.text()?.replaceFirst("Beschreibung", "")
|
||||||
|
manga.thumbnail_url = imageElement.select("img").first()?.attr("src")
|
||||||
|
|
||||||
|
if (manga.author == "RSS")
|
||||||
|
manga.author = null
|
||||||
|
|
||||||
|
if (manga.artist == "RSS")
|
||||||
|
manga.artist = null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun chapterListSelector() = ".chapterlist tr:not(:first-child)"
|
||||||
|
|
||||||
|
override fun chapterFromElement(element: Element, chapter: Chapter) {
|
||||||
|
val urlElement = element.select(".col1 a").first()
|
||||||
|
val dateElement = element.select(".col3 a").first()
|
||||||
|
|
||||||
|
chapter.setUrlWithoutDomain(urlElement.attr("href"))
|
||||||
|
chapter.name = urlElement.text()
|
||||||
|
chapter.date_upload = dateElement?.text()?.let { parseChapterDate(it) } ?: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun parseChapterDate(date: String): Long {
|
||||||
|
return SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(date).time
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun pageListParse(response: Response, pages: MutableList<Page>) {
|
||||||
|
val document = response.asJsoup()
|
||||||
|
|
||||||
|
document.select("select#page").first().select("option").forEach {
|
||||||
|
pages.add(Page(pages.size, it.attr("value")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun pageListParse(document: Document, pages: MutableList<Page>) {}
|
||||||
|
|
||||||
|
override fun imageUrlParse(document: Document) = document.select("img#comicpic").first().attr("src")
|
||||||
|
|
||||||
|
}
|
Reference in a new issue