Remove Onlinecomics (has only news now) (#5757)
This commit is contained in:
		
							parent
							
								
									817a766ac1
								
							
						
					
					
						commit
						791087ab9f
					
				| @ -1,2 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="utf-8"?> |  | ||||||
| <manifest package="eu.kanade.tachiyomi.extension" /> |  | ||||||
| @ -1,12 +0,0 @@ | |||||||
| apply plugin: 'com.android.application' |  | ||||||
| apply plugin: 'kotlin-android' |  | ||||||
| 
 |  | ||||||
| ext { |  | ||||||
|     extName = 'Onlinecomics' |  | ||||||
|     pkgNameSuffix = 'ru.onlinecomics' |  | ||||||
|     extClass = '.Onlinecomics' |  | ||||||
|     extVersionCode = 1 |  | ||||||
|     libVersion = '1.2' |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| apply from: "$rootDir/common.gradle" |  | ||||||
| @ -1,227 +0,0 @@ | |||||||
| package eu.kanade.tachiyomi.extension.ru.onlinecomics |  | ||||||
| 
 |  | ||||||
| import eu.kanade.tachiyomi.network.GET |  | ||||||
| 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.ParsedHttpSource |  | ||||||
| import eu.kanade.tachiyomi.util.asJsoup |  | ||||||
| import okhttp3.Headers |  | ||||||
| import okhttp3.Request |  | ||||||
| import okhttp3.Response |  | ||||||
| import org.jsoup.Jsoup |  | ||||||
| import org.jsoup.nodes.Document |  | ||||||
| import org.jsoup.nodes.Element |  | ||||||
| import java.text.SimpleDateFormat |  | ||||||
| import java.util.Locale |  | ||||||
| 
 |  | ||||||
| class Onlinecomics : ParsedHttpSource() { |  | ||||||
|     override fun searchMangaFromElement(element: Element): SManga { |  | ||||||
|         throw Exception("Not used") |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun searchMangaNextPageSelector(): String? { |  | ||||||
|         throw Exception("Not used") |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun latestUpdatesSelector(): String { |  | ||||||
|         throw Exception("Not used") |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun latestUpdatesFromElement(element: Element): SManga { |  | ||||||
|         throw Exception("Not used") |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun latestUpdatesNextPageSelector(): String? { |  | ||||||
|         throw Exception("Not used") |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun latestUpdatesRequest(page: Int): Request { |  | ||||||
|         throw Exception("Not used") |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override val name = "Onlinecomics" |  | ||||||
| 
 |  | ||||||
|     override val baseUrl = "http://onlinecomics.su" |  | ||||||
| 
 |  | ||||||
|     override val lang = "ru" |  | ||||||
| 
 |  | ||||||
|     override val supportsLatest = false |  | ||||||
| 
 |  | ||||||
|     override fun popularMangaRequest(page: Int): Request = |  | ||||||
|         GET("$baseUrl/online-reading/comicsonline/$page") |  | ||||||
| 
 |  | ||||||
|     override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { |  | ||||||
|         val url = "https://yandex.ru/search/site/?html=1&topdoc=http://jurnalu.ru/?searchid=2158851&" + |  | ||||||
|             "text=$query&web=0&encoding=&tld=ru&htmlcss=1.x&updatehash=true&searchid=2158851&" + |  | ||||||
|             "clid=&text=batman&web=0&p=&surl=&constraintid=&date=&within=&from_day=&" + |  | ||||||
|             "from_month=&from_year=&to_day=&to_month=&to_year=&available=&priceLow=&priceHigh=&" + |  | ||||||
|             "categoryId=&l10n=ru&callback=jQuery" |  | ||||||
|         return GET(url, headers) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun popularMangaParse(response: Response): MangasPage { |  | ||||||
|         val document = response.asJsoup() |  | ||||||
| 
 |  | ||||||
|         val mangas = document.select(popularMangaSelector()).map { element -> |  | ||||||
|             popularMangaFromElement(element) |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         val hasNextPage = popularMangaNextPageSelector().let { selector -> |  | ||||||
|             document.select(selector).first() |  | ||||||
|         } != null |  | ||||||
| 
 |  | ||||||
|         return MangasPage(mangas.distinctBy { it.url }, hasNextPage) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun popularMangaSelector() = "div.PrewLine" |  | ||||||
| 
 |  | ||||||
|     override fun searchMangaSelector() = "" |  | ||||||
| 
 |  | ||||||
|     override fun popularMangaFromElement(element: Element): SManga { |  | ||||||
|         val manga = SManga.create() |  | ||||||
|         manga.thumbnail_url = baseUrl + element.select("a img").first()?.attr("src") |  | ||||||
|         element.select("div.Gname a").first().let { |  | ||||||
|             manga.setUrlWithoutDomain(it.attr("href")) |  | ||||||
|             manga.title = it.text() |  | ||||||
|         } |  | ||||||
|         return manga |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun popularMangaNextPageSelector() = "a.RRL" |  | ||||||
| 
 |  | ||||||
|     override fun searchMangaParse(response: Response): MangasPage { |  | ||||||
|         val body = response.body()!!.string() |  | ||||||
|             .replace("\\/", "/") |  | ||||||
|             .replace("\\-", "-") |  | ||||||
|             .removePrefix("jQuery(Ya.Site.Results.triggerResultsDelivered('") |  | ||||||
|             .removeSuffix("'))") |  | ||||||
|         val document = Jsoup.parse(body) |  | ||||||
| 
 |  | ||||||
|         val mangaList = mutableListOf<SManga>() |  | ||||||
|         document.select(".b-serp-item__title-link").forEach { element -> |  | ||||||
|             val manga = SManga.create() |  | ||||||
|             val url = element.select("a.b-serp-item__title-link").first() |  | ||||||
|                 .attr("href").removePrefix("http://www.jurnalu.ru") |  | ||||||
|             if (url.contains("/manga/")) return@forEach |  | ||||||
|             val splits = url.split('/') |  | ||||||
|             val newUrl = splits |  | ||||||
|                 .joinToString("/", limit = 4, truncated = "") |  | ||||||
|                 .removeSuffix("/") |  | ||||||
|             manga.setUrlWithoutDomain(newUrl) |  | ||||||
|             manga.title = element.select("yass-span").text().split('/')[0] |  | ||||||
|             mangaList.add(manga) |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         val result = mangaList.filter { it.url.isNotEmpty() }.distinctBy { it.url } |  | ||||||
|         return MangasPage(result, false) |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun mangaDetailsParse(document: Document): SManga { |  | ||||||
|         val infoElement = document.select("div.ops").first() |  | ||||||
| 
 |  | ||||||
|         val manga = SManga.create() |  | ||||||
|         if (infoElement.select("strong").size > 5) { |  | ||||||
|             manga.author = ( |  | ||||||
|                 infoElement.select("strong")[6].text() + |  | ||||||
|                     infoElement.select("strong")[7].text() |  | ||||||
|                 ) |  | ||||||
|                 .removePrefix("Издательство: ") |  | ||||||
|                 .split(" /")[0] |  | ||||||
| 
 |  | ||||||
|             val text = (document.select("p[align]")[0].parentNode() as Element).text() |  | ||||||
|             val begin = if (text.contains("Жанр:")) { |  | ||||||
|                 "Жанр:" |  | ||||||
|             } else { |  | ||||||
|                 "Жанры:" |  | ||||||
|             } |  | ||||||
|             val end = "Тип:" |  | ||||||
|             val tempString = text.removeRange(0, text.indexOf(begin) + begin.length) |  | ||||||
|             manga.genre = tempString.removeRange(tempString.indexOf(end), tempString.length).trim() |  | ||||||
| 
 |  | ||||||
|             manga.status = parseStatus(infoElement.text()) |  | ||||||
|             manga.description = infoElement.select("div").last().text() |  | ||||||
|                 .split("Только у нас на сайте вы можете ")[0] |  | ||||||
| 
 |  | ||||||
|             manga.thumbnail_url = baseUrl + infoElement.select("div img")[1].attr("src") |  | ||||||
|         } else { |  | ||||||
|             manga.description = document.select(".remark").text() |  | ||||||
|         } |  | ||||||
|         return manga |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private fun parseStatus(element: String): Int = when { |  | ||||||
|         element.contains("завершен") -> SManga.COMPLETED |  | ||||||
|         element.contains("продолжается") -> SManga.ONGOING |  | ||||||
|         else -> SManga.UNKNOWN |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun chapterListParse(response: Response): List<SChapter> { |  | ||||||
|         val document = response.asJsoup() |  | ||||||
|         val chapterList = mutableListOf<SChapter>() |  | ||||||
|         chapterList.addAll(document.select(chapterListSelector()).map { chapterFromElement(it) }) |  | ||||||
| 
 |  | ||||||
|         val lastPage: String? = document.select("div.navigationG .C").last()?.text() |  | ||||||
|         if (lastPage != null) { |  | ||||||
|             (2..lastPage.toInt()).forEach { i -> |  | ||||||
|                 val get = GET( |  | ||||||
|                     "${response.request().url()}/$i", |  | ||||||
|                     headers = headers |  | ||||||
|                 ) |  | ||||||
|                 chapterList.addAll( |  | ||||||
|                     client.newCall(get).execute().asJsoup().select(chapterListSelector()).map { |  | ||||||
|                         chapterFromElement(it) |  | ||||||
|                     } |  | ||||||
|                 ) |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return chapterList |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun chapterListSelector() = "div.MagListLine" |  | ||||||
| 
 |  | ||||||
|     override fun chapterFromElement(element: Element): SChapter { |  | ||||||
|         val urlElement = element.select("a").first() |  | ||||||
| 
 |  | ||||||
|         val chapter = SChapter.create() |  | ||||||
|         chapter.setUrlWithoutDomain(urlElement.attr("href")) |  | ||||||
|         chapter.name = urlElement.text() |  | ||||||
|         chapter.date_upload = element.select("div.date").first()?.text()?.let { |  | ||||||
|             SimpleDateFormat("dd.MM.yyyy", Locale.US).parse(it)?.time ?: 0L |  | ||||||
|         } ?: 0 |  | ||||||
|         return chapter |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun prepareNewChapter(chapter: SChapter, manga: SManga) { |  | ||||||
|         val basic = Regex("""#\s([0-9]+)""") |  | ||||||
|         when { |  | ||||||
|             basic.containsMatchIn(chapter.name) -> { |  | ||||||
|                 basic.find(chapter.name)?.let { |  | ||||||
|                     chapter.chapter_number = it.groups[1]?.value!!.toFloat() |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun pageListParse(document: Document): List<Page> { |  | ||||||
|         val navDocument = document.select(".navigation").first() |  | ||||||
|         val url = document.location() |  | ||||||
|         val pages = mutableListOf<Page>() |  | ||||||
|         navDocument.select("option").forEachIndexed { index, element -> |  | ||||||
|             pages.add(Page(index, "$url/${element.attr("value")}")) |  | ||||||
|         } |  | ||||||
|         return pages |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     override fun imageUrlParse(document: Document): String = document.select("img").first().attr("src") |  | ||||||
| 
 |  | ||||||
|     override fun imageRequest(page: Page): Request { |  | ||||||
|         val imgHeader = Headers.Builder().apply { |  | ||||||
|             add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64)") |  | ||||||
|             add("Referer", baseUrl) |  | ||||||
|         }.build() |  | ||||||
|         return GET(page.imageUrl!!, imgHeader) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 scb261
						scb261