diff --git a/src/en/purplecress/AndroidManifest.xml b/src/en/purplecress/AndroidManifest.xml deleted file mode 100644 index 3fa2c02d5..000000000 --- a/src/en/purplecress/AndroidManifest.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/src/en/purplecress/build.gradle b/src/en/purplecress/build.gradle deleted file mode 100644 index 90b23e11c..000000000 --- a/src/en/purplecress/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -ext { - extName = 'Purple Cress' - extClass = '.PurpleCress' - extVersionCode = 3 -} - -apply from: "$rootDir/common.gradle" diff --git a/src/en/purplecress/res/mipmap-hdpi/ic_launcher.png b/src/en/purplecress/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 7f6f6eb1c..000000000 Binary files a/src/en/purplecress/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/purplecress/res/mipmap-mdpi/ic_launcher.png b/src/en/purplecress/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index d1edc90ab..000000000 Binary files a/src/en/purplecress/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/purplecress/res/mipmap-xhdpi/ic_launcher.png b/src/en/purplecress/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 9a3537aa0..000000000 Binary files a/src/en/purplecress/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/purplecress/res/mipmap-xxhdpi/ic_launcher.png b/src/en/purplecress/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 1eabaa49b..000000000 Binary files a/src/en/purplecress/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/purplecress/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/purplecress/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 8919f8318..000000000 Binary files a/src/en/purplecress/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/purplecress/src/eu/kanade/tachiyomi/extension/en/purplecress/PurpleCress.kt b/src/en/purplecress/src/eu/kanade/tachiyomi/extension/en/purplecress/PurpleCress.kt deleted file mode 100644 index d0c357e71..000000000 --- a/src/en/purplecress/src/eu/kanade/tachiyomi/extension/en/purplecress/PurpleCress.kt +++ /dev/null @@ -1,155 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.purplecress - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.asObservableSuccess -import eu.kanade.tachiyomi.source.model.FilterList -import eu.kanade.tachiyomi.source.model.MangasPage -import eu.kanade.tachiyomi.source.model.Page -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import eu.kanade.tachiyomi.source.online.HttpSource -import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import rx.Observable -import java.text.SimpleDateFormat -import java.util.Locale - -class PurpleCress : HttpSource() { - override val name = "Purple Cress" - - override val baseUrl = "https://purplecress.com" - - override val lang = "en" - - override val supportsLatest = true - - override val client: OkHttpClient = network.cloudflareClient - - override fun popularMangaRequest(page: Int) = GET(baseUrl) - - override fun popularMangaParse(response: Response): MangasPage { - val seriesContainer = response.asJsoup().selectFirst("div.container-grid--small")!! - val mangaList: List = seriesContainer.select("a").map { - SManga.create().apply { - title = it.selectFirst("div.card__info")!!.selectFirst("h3")!!.html() - url = it.attr("href") - author = it.selectFirst("p.card__author")!!.html().substringAfter("by ") - artist = author - description = it.attr("description") - thumbnail_url = it.selectFirst("img.image")!!.attr("src") - status = when (it.selectFirst("h3.card__status")!!.html()) { - "Ongoing" -> SManga.ONGOING - "Dropped" -> SManga.COMPLETED // Not sure what the best status is for "Dropped" - "Completed" -> SManga.COMPLETED // There aren't any completed series on the site, so I'm just guessing as to the string - else -> SManga.UNKNOWN - } - initialized = true // We have all the fields - } - } - return MangasPage(mangaList, false) - } - - override fun latestUpdatesRequest(page: Int): Request = GET(baseUrl) - - override fun latestUpdatesParse(response: Response): MangasPage { - val seriesContainer = response.asJsoup().selectFirst("div.container-grid--large")!! - val mangaList: List = seriesContainer.select("a").map { - SManga.create().apply { - title = it.selectFirst("h3.chapter__series-name")!!.html() - url = it.attr("href").replaceFirst("chapter", "series").substringBeforeLast("/") - thumbnail_url = it.selectFirst("img.image")!!.attr("src") - initialized = false - } - } - return MangasPage(mangaList, false) - } - - override fun fetchMangaDetails(manga: SManga): Observable { - val oldUrl = manga.url - return client.newCall(mangaDetailsRequest(manga)) - .asObservableSuccess() - .map { response -> - mangaDetailsParse(response).apply { - initialized = true - url = oldUrl // Sets URL in result to original URL - } - } - } - - override fun mangaDetailsRequest(manga: SManga): Request = chapterListRequest(manga) - - override fun mangaDetailsParse(response: Response): SManga { - val responseJ = response.asJsoup() - val infoBox = responseJ.selectFirst("div.series__info")!! - return SManga.create().apply { - title = infoBox.selectFirst("h1.series__name")!!.html() - // url is set by overridden fetchMangaDetails - author = infoBox.selectFirst("p.series__author")!!.html().substringAfter("by ") - artist = author - description = infoBox.selectFirst("p.description-pagagraph")!!.html() - thumbnail_url = responseJ.selectFirst("img.thumbnail")!!.attr("src") - status = when (infoBox.selectFirst("span.series__status")!!.html()) { - "Ongoing" -> SManga.ONGOING - "Dropped" -> SManga.COMPLETED // See comments in popularMangaParse - "Completed" -> SManga.COMPLETED - else -> SManga.UNKNOWN - } - } - } - - override fun chapterListParse(response: Response): List { - return response.asJsoup().select("a.chapter__card") - .map { - SChapter.create().apply { - url = it.attr("href") - name = it.selectFirst("span.chapter__name")!!.html() - date_upload = it.selectFirst("h5.chapter__date")!!.html() - .let { SimpleDateFormat("yyyy-MM-dd", Locale.US).parse(it)?.time ?: 0L } - } - } - } - - override fun pageListParse(response: Response): List { - return response.asJsoup().select("img.page__img").mapIndexed { index, element -> - Page(index, "", element.attr("src")) - } - } - - override fun fetchImageUrl(page: Page): Observable { - return Observable.just(page.imageUrl) - } - - companion object { - const val URL_SEARCH_PREFIX = "purplecress_url:" - } - - override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { - if (query.startsWith(URL_SEARCH_PREFIX)) { - val manga = SManga.create().apply { - url = query.removePrefix(URL_SEARCH_PREFIX) - } - return fetchMangaDetails(manga).map { - MangasPage(listOf(it), false) - } - } - return fetchPopularManga(page).map { - mangasPage -> - MangasPage( - mangasPage.mangas.filter { - it.title.contains(query, true) - }, - mangasPage.hasNextPage, - ) - } - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request = throw UnsupportedOperationException() - - override fun searchMangaParse(response: Response): MangasPage = throw UnsupportedOperationException() - - override fun imageUrlRequest(page: Page): Request = throw UnsupportedOperationException() - - override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException() -} diff --git a/src/en/purplecress/src/eu/kanade/tachiyomi/extension/en/purplecress/PurpleCressURLActivity.kt b/src/en/purplecress/src/eu/kanade/tachiyomi/extension/en/purplecress/PurpleCressURLActivity.kt deleted file mode 100644 index 438b7eb58..000000000 --- a/src/en/purplecress/src/eu/kanade/tachiyomi/extension/en/purplecress/PurpleCressURLActivity.kt +++ /dev/null @@ -1,35 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.purplecress - -import android.app.Activity -import android.content.ActivityNotFoundException -import android.content.Intent -import android.net.Uri -import android.os.Bundle -import android.util.Log -import kotlin.system.exitProcess - -class PurpleCressURLActivity : Activity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - val pathSegments = intent?.data?.pathSegments - if (pathSegments != null && pathSegments.size >= 2) { - val url = "/series/" + Uri.encode(pathSegments[1]) - val mainIntent = Intent().apply { - action = "eu.kanade.tachiyomi.SEARCH" - putExtra("query", PurpleCress.URL_SEARCH_PREFIX + url) - putExtra("filter", packageName) - } - - try { - startActivity(mainIntent) - } catch (e: ActivityNotFoundException) { - Log.e("PurpleCressUrlActivity", e.toString()) - } - } else { - Log.e("PurpleCressUrlActivity", "could not parse uri from intent $intent") - } - - finish() - exitProcess(0) - } -}