diff --git a/src/de/animetoast/build.gradle b/src/de/animetoast/build.gradle
index 7d485fdc4..9d81633b7 100644
--- a/src/de/animetoast/build.gradle
+++ b/src/de/animetoast/build.gradle
@@ -6,13 +6,15 @@ ext {
extName = 'AnimeToast'
pkgNameSuffix = 'de.animetoast'
extClass = '.AnimeToast'
- extVersionCode = 8
+ extVersionCode = 9
libVersion = '13'
}
dependencies {
implementation(project(':lib-voe-extractor'))
implementation(project(':lib-dood-extractor'))
+ implementation(project(':lib-filemoon-extractor'))
+ implementation(project(':lib-mp4upload-extractor'))
}
apply from: "$rootDir/common.gradle"
diff --git a/src/de/animetoast/res/mipmap-hdpi/ic_launcher_adaptive_back.png b/src/de/animetoast/res/mipmap-hdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index 8dc560dd4..000000000
Binary files a/src/de/animetoast/res/mipmap-hdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-hdpi/ic_launcher_adaptive_fore.png b/src/de/animetoast/res/mipmap-hdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index ee83e8b80..000000000
Binary files a/src/de/animetoast/res/mipmap-hdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-mdpi/ic_launcher_adaptive_back.png b/src/de/animetoast/res/mipmap-mdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index f8feb6e59..000000000
Binary files a/src/de/animetoast/res/mipmap-mdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-mdpi/ic_launcher_adaptive_fore.png b/src/de/animetoast/res/mipmap-mdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index 13d578b06..000000000
Binary files a/src/de/animetoast/res/mipmap-mdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-xhdpi/ic_launcher_adaptive_back.png b/src/de/animetoast/res/mipmap-xhdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index 1b560124d..000000000
Binary files a/src/de/animetoast/res/mipmap-xhdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png b/src/de/animetoast/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index 6d854db3f..000000000
Binary files a/src/de/animetoast/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png b/src/de/animetoast/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index 369383ac8..000000000
Binary files a/src/de/animetoast/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png b/src/de/animetoast/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index 32c497a93..000000000
Binary files a/src/de/animetoast/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png b/src/de/animetoast/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png
deleted file mode 100644
index de26e98f5..000000000
Binary files a/src/de/animetoast/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png and /dev/null differ
diff --git a/src/de/animetoast/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png b/src/de/animetoast/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png
deleted file mode 100644
index 5d33ff6ee..000000000
Binary files a/src/de/animetoast/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png and /dev/null differ
diff --git a/src/de/animetoast/src/eu/kanade/tachiyomi/animeextension/de/animetoast/AnimeToast.kt b/src/de/animetoast/src/eu/kanade/tachiyomi/animeextension/de/animetoast/AnimeToast.kt
index b05215072..f17127dca 100644
--- a/src/de/animetoast/src/eu/kanade/tachiyomi/animeextension/de/animetoast/AnimeToast.kt
+++ b/src/de/animetoast/src/eu/kanade/tachiyomi/animeextension/de/animetoast/AnimeToast.kt
@@ -12,6 +12,8 @@ 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.doodextractor.DoodExtractor
+import eu.kanade.tachiyomi.lib.filemoonextractor.FilemoonExtractor
+import eu.kanade.tachiyomi.lib.mp4uploadextractor.Mp4uploadExtractor
import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
@@ -47,8 +49,7 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun popularAnimeFromElement(element: Element): SAnime {
val anime = SAnime.create()
anime.setUrlWithoutDomain(element.select("div.item-thumbnail a").attr("href"))
- val document = client.newCall(GET(baseUrl + anime.url)).execute().asJsoup()
- anime.thumbnail_url = document.select(".item-content p img").attr("src")
+ anime.thumbnail_url = element.select("div.item-thumbnail a img").attr("src")
anime.title = element.select("div.item-thumbnail a").attr("title")
return anime
}
@@ -64,10 +65,18 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val episodeList = mutableListOf()
val file = document.select("a[rel=\"category tag\"]").text()
if (file.contains("Serie")) {
- val elements = document.select("#multi_link_tab0")
- elements.forEach {
- val episode = parseEpisodesFromSeries(it)
- episodeList.addAll(episode)
+ if (document.select("#multi_link_tab0").attr("id").isNotEmpty()) {
+ val elements = document.select("#multi_link_tab0")
+ elements.forEach {
+ val episode = parseEpisodesFromSeries(it)
+ episodeList.addAll(episode)
+ }
+ } else {
+ val elements = document.select("#multi_link_tab1")
+ elements.forEach {
+ val episode = parseEpisodesFromSeries(it)
+ episodeList.addAll(episode)
+ }
}
} else {
val episode = SEpisode.create()
@@ -81,12 +90,26 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
private fun parseEpisodesFromSeries(element: Element): List {
val episodeElements = element.select("div.tab-pane a")
- return episodeElements.map { episodeFromElement(it) }
+ val epT = episodeElements.text()
+ if (epT.contains(":") || epT.contains("-")) {
+ val url = episodeElements.attr("href")
+ val document = client.newCall(GET(url)).execute().asJsoup()
+ val nUrl = document.select("#player-embed a").attr("href")
+ val nDoc = client.newCall(GET(nUrl)).execute().asJsoup()
+ val nEpEl = nDoc.select("div.tab-pane a")
+ return nEpEl.map { episodeFromElement(it) }
+ } else {
+ return episodeElements.map { episodeFromElement(it) }
+ }
}
override fun episodeFromElement(element: Element): SEpisode {
val episode = SEpisode.create()
- episode.episode_number = element.text().replace("Ep. ", "").toFloat()
+ episode.episode_number = try {
+ element.text().replace("Ep. ", "").toFloat()
+ } catch (e: Exception) {
+ 100.0f
+ }
episode.name = element.text()
episode.setUrlWithoutDomain(element.attr("href"))
return episode
@@ -101,34 +124,133 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
private fun videosFromElement(document: Document): List
", "").substringBefore("Genre:").replace("", "")
+ val height = document.select("div.item-content p img").attr("height")
+ anime.description = document.select("div.item-content div + p").text()
anime.status = parseStatus(document.select("a[rel=\"category tag\"]").text())
return anime
}
@@ -218,8 +338,8 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val hosterPref = ListPreference(screen.context).apply {
key = "preferred_hoster"
title = "Standard-Hoster"
- entries = arrayOf("Voe", "DoodStream")
- entryValues = arrayOf("https://voe.sx", "https://dood")
+ entries = arrayOf("Voe", "DoodStream", "Filemoon", "Mp4upload")
+ entryValues = arrayOf("https://voe.sx", "https://dood", "https://filemoon", "https://www.mp4upload")
setDefaultValue("https://voe.sx")
summary = "%s"
@@ -233,9 +353,9 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val subSelection = MultiSelectListPreference(screen.context).apply {
key = "hoster_selection"
title = "Hoster auswählen"
- entries = arrayOf("Voe", "DoodStream")
- entryValues = arrayOf("voe", "dood")
- setDefaultValue(setOf("voe", "dood"))
+ entries = arrayOf("Voe", "DoodStream", "Filemoon", "Mp4upload")
+ entryValues = arrayOf("voe", "dood", "fmoon", "mp4u")
+ setDefaultValue(setOf("voe", "dood", "fmoon", "mp4u"))
setOnPreferenceChangeListener { _, newValue ->
preferences.edit().putStringSet(key, newValue as Set).commit()