mirror of
https://github.com/kodjodevf/mangayomi-extensions.git
synced 2026-02-17 04:10:29 +00:00
extension(animegg): extract streams
This commit is contained in:
@@ -6,7 +6,7 @@ const mangayomiSources = [{
|
|||||||
"iconUrl": "https://www.google.com/s2/favicons?sz=256&domain=https://www.animegg.org/",
|
"iconUrl": "https://www.google.com/s2/favicons?sz=256&domain=https://www.animegg.org/",
|
||||||
"typeSource": "single",
|
"typeSource": "single",
|
||||||
"itemType": 1,
|
"itemType": 1,
|
||||||
"version": "0.0.3",
|
"version": "1.0.0",
|
||||||
"pkgPath": "anime/src/en/animegg.js"
|
"pkgPath": "anime/src/en/animegg.js"
|
||||||
}];
|
}];
|
||||||
|
|
||||||
@@ -19,8 +19,8 @@ class DefaultExtension extends MProvider {
|
|||||||
|
|
||||||
getHeaders(url) {
|
getHeaders(url) {
|
||||||
return {
|
return {
|
||||||
Referer: this.getSourcePreferences.baseUrl,
|
"Referer": this.source.baseUrl,
|
||||||
Origin: this.getSourcePreferences.baseUrl
|
"Origin": this.source.baseUrl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,10 +28,13 @@ class DefaultExtension extends MProvider {
|
|||||||
return new SharedPreferences().get(key);
|
return new SharedPreferences().get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
async request(slug) {
|
async requestText(slug) {
|
||||||
var url = `${this.source.baseUrl}${slug}`
|
var url = `${this.source.baseUrl}${slug}`
|
||||||
var res = await this.client.get(url, this.getHeaders());
|
var res = await this.client.get(url, this.getHeaders());
|
||||||
return new Document(res.body);
|
return res.body;
|
||||||
|
}
|
||||||
|
async request(slug) {
|
||||||
|
return new Document(await this.requestText(slug));
|
||||||
}
|
}
|
||||||
|
|
||||||
async fetchPopularnLatest(slug) {
|
async fetchPopularnLatest(slug) {
|
||||||
@@ -43,7 +46,7 @@ class DefaultExtension extends MProvider {
|
|||||||
for (var item of items) {
|
for (var item of items) {
|
||||||
var imageUrl = item.selectFirst('img').getSrc
|
var imageUrl = item.selectFirst('img').getSrc
|
||||||
var linkSection = item.selectFirst('.rightpop').selectFirst('a')
|
var linkSection = item.selectFirst('.rightpop').selectFirst('a')
|
||||||
var link =linkSection.getHref
|
var link = linkSection.getHref
|
||||||
var name = linkSection.text
|
var name = linkSection.text
|
||||||
list.push({
|
list.push({
|
||||||
name,
|
name,
|
||||||
@@ -105,19 +108,19 @@ class DefaultExtension extends MProvider {
|
|||||||
var body = await this.request(slug)
|
var body = await this.request(slug)
|
||||||
var items = body.select(".moose.page > a")
|
var items = body.select(".moose.page > a")
|
||||||
var list = []
|
var list = []
|
||||||
for (var item of items) {
|
for (var item of items) {
|
||||||
var imageUrl = item.selectFirst('img').getSrc
|
var imageUrl = item.selectFirst('img').getSrc
|
||||||
var link = item.getHref
|
var link = item.getHref
|
||||||
var name = item.selectFirst("h2").text
|
var name = item.selectFirst("h2").text
|
||||||
list.push({
|
list.push({
|
||||||
name,
|
name,
|
||||||
imageUrl,
|
imageUrl,
|
||||||
link
|
link
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return { list, hasNextPage:false }
|
return { list, hasNextPage: false }
|
||||||
}
|
}
|
||||||
|
|
||||||
statusCode(status) {
|
statusCode(status) {
|
||||||
@@ -135,7 +138,7 @@ class DefaultExtension extends MProvider {
|
|||||||
var media = body.selectFirst(".media")
|
var media = body.selectFirst(".media")
|
||||||
var title = media.selectFirst("h1").text
|
var title = media.selectFirst("h1").text
|
||||||
var spans = media.selectFirst("p.infoami").select("span")
|
var spans = media.selectFirst("p.infoami").select("span")
|
||||||
var statusText = spans[spans.length - 1].text.replace("Status: ",'')
|
var statusText = spans[spans.length - 1].text.replace("Status: ", '')
|
||||||
var status = this.statusCode(statusText)
|
var status = this.statusCode(statusText)
|
||||||
|
|
||||||
|
|
||||||
@@ -148,8 +151,8 @@ class DefaultExtension extends MProvider {
|
|||||||
var episodesList = body.select(".newmanga > li")
|
var episodesList = body.select(".newmanga > li")
|
||||||
episodesList.forEach(ep => {
|
episodesList.forEach(ep => {
|
||||||
var epTitle = ep.selectFirst('i.anititle').text
|
var epTitle = ep.selectFirst('i.anititle').text
|
||||||
var epNumber = ep.selectFirst('strong').text.replace(title,"Episode")
|
var epNumber = ep.selectFirst('strong').text.replace(title, "Episode")
|
||||||
var epName = epNumber == epTitle?epNumber:`${epNumber} - ${epTitle}`
|
var epName = epNumber == epTitle ? epNumber : `${epNumber} - ${epTitle}`
|
||||||
var epUrl = ep.selectFirst("a").getHref
|
var epUrl = ep.selectFirst("a").getHref
|
||||||
|
|
||||||
var scanlator = "";
|
var scanlator = "";
|
||||||
@@ -160,34 +163,46 @@ class DefaultExtension extends MProvider {
|
|||||||
})
|
})
|
||||||
scanlator = scanlator.slice(0, -2);
|
scanlator = scanlator.slice(0, -2);
|
||||||
|
|
||||||
chapters.push({ name: epName, url: epUrl,scanlator})
|
chapters.push({ name: epName, url: epUrl, scanlator })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
return { description, status, genre, chapters, link }
|
return { description, status, genre, chapters, link }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
// For novel html content
|
|
||||||
async getHtmlContent(url) {
|
|
||||||
throw new Error("getHtmlContent not implemented");
|
|
||||||
}
|
|
||||||
// Clean html up for reader
|
|
||||||
async cleanHtmlContent(html) {
|
|
||||||
throw new Error("cleanHtmlContent not implemented");
|
|
||||||
}
|
|
||||||
// For anime episode video list
|
// For anime episode video list
|
||||||
async getVideoList(url) {
|
async getVideoList(url) {
|
||||||
throw new Error("getVideoList not implemented");
|
var body = await this.request(url)
|
||||||
}
|
var iframe = body.selectFirst("iframe")
|
||||||
// For manga chapter pages
|
var src = iframe.attr('src')
|
||||||
async getPageList(url) {
|
|
||||||
throw new Error("getPageList not implemented");
|
body = await this.requestText(src)
|
||||||
}
|
var sKey = "var videoSources = "
|
||||||
getFilterList() {
|
var eKey = "var httpProtocol"
|
||||||
throw new Error("getFilterList not implemented");
|
var start = body.indexOf(sKey) + sKey.length
|
||||||
|
var end = body.indexOf(eKey) - 8
|
||||||
|
var videoSourcesStr = body.substring(start, end)
|
||||||
|
let videoSources = eval("(" + videoSourcesStr + ")");
|
||||||
|
var streams = []
|
||||||
|
var headers = this.getHeaders();
|
||||||
|
videoSources.forEach(videoSource => {
|
||||||
|
var url = this.source.baseUrl +videoSource.file
|
||||||
|
var quality = videoSource.label
|
||||||
|
|
||||||
|
streams.push({
|
||||||
|
url,
|
||||||
|
originalUrl: url,
|
||||||
|
quality,
|
||||||
|
headers
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return streams.reverse();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getSourcePreferences() {
|
getSourcePreferences() {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user