extension(soaper): Added streams

This commit is contained in:
Swakshan
2025-03-18 19:01:56 +05:30
parent 742b4f0e40
commit 5df0fe7983

View File

@@ -6,7 +6,7 @@ const mangayomiSources = [{
"iconUrl": "https://www.google.com/s2/favicons?sz=128&domain=https://soaper.cc/", "iconUrl": "https://www.google.com/s2/favicons?sz=128&domain=https://soaper.cc/",
"typeSource": "multi", "typeSource": "multi",
"isManga": false, "isManga": false,
"version": "0.0.3", "version": "1.0.0",
"dateFormat": "", "dateFormat": "",
"dateFormatLocale": "", "dateFormatLocale": "",
"pkgPath": "anime/src/all/soaper.js" "pkgPath": "anime/src/all/soaper.js"
@@ -15,26 +15,36 @@ const mangayomiSources = [{
class DefaultExtension extends MProvider { class DefaultExtension extends MProvider {
getHeaders(url) { getHeaders(url) {
return { return {
"Referer": this.source.baseUrl, "Referer": url,
"Origin": this.source.baseUrl "Origin": url
} }
} }
async getPreference(key) { getPreference(key) {
const preferences = new SharedPreferences(); return new SharedPreferences().get(key);
return preferences.get(key); }
getBasueUrl(){
return this.getPreference("pref_override_base_url")
} }
async request(slug) { async request(slug) {
const baseUrl = await this.getPreference("pref_override_base_url") const baseUrl = this.getBasueUrl()
var url = `${baseUrl}/${slug}` var url = `${baseUrl}/${slug}`
var res = await new Client().get(url, this.getHeaders()); var res = await new Client().get(url, this.getHeaders(baseUrl));
var doc = new Document(res.body); var doc = new Document(res.body);
return doc return doc
} }
async requestJSON(slug,data) {
const baseUrl = this.getBasueUrl()
var url = `${baseUrl}/${slug}`
var res = await new Client().post(url, this.getHeaders(baseUrl),data);
return JSON.parse(res.body);
}
async formatList(slug, page) { async formatList(slug, page) {
const baseUrl = await this.getPreference("pref_override_base_url") const baseUrl = this.getPreference("pref_override_base_url")
slug = parseInt(page) > 1 ? `${slug}?page=${page}` : slug slug = parseInt(page) > 1 ? `${slug}?page=${page}` : slug
var doc = await this.request(slug); var doc = await this.request(slug);
var list = []; var list = [];
@@ -45,7 +55,7 @@ class DefaultExtension extends MProvider {
var link = linkSection.getHref.substring(1,); var link = linkSection.getHref.substring(1,);
var poster = linkSection.selectFirst("img").getSrc var poster = linkSection.selectFirst("img").getSrc
var imageUrl = `${baseUrl}${poster}` var imageUrl = `${baseUrl}${poster}`
var name = movie.selectFirst("h5").text; var name = movie.selectFirst("h5").selectFirst("a").text;
list.push({ name, imageUrl, link }); list.push({ name, imageUrl, link });
} }
@@ -69,7 +79,7 @@ class DefaultExtension extends MProvider {
var seriesList = await this.formatList(`tvlist${slug}`, page); var seriesList = await this.formatList(`tvlist${slug}`, page);
var list = []; var list = [];
var priority = await this.getPreference("pref_content_priority"); var priority = this.getPreference("pref_content_priority");
if (priority === "series") { if (priority === "series") {
list = [...seriesList.list, ...movieList.list]; list = [...seriesList.list, ...movieList.list];
} else { } else {
@@ -108,7 +118,7 @@ class DefaultExtension extends MProvider {
} }
} }
var priority = await this.getPreference("pref_content_priority"); var priority = this.getPreference("pref_content_priority");
if (priority === "series") { if (priority === "series") {
list = [...seriesList, ...movieList]; list = [...seriesList, ...movieList];
} else { } else {
@@ -121,7 +131,7 @@ class DefaultExtension extends MProvider {
async getDetail(url) { async getDetail(url) {
var doc = await this.request(url); var doc = await this.request(url);
const baseUrl = await this.getPreference("pref_override_base_url") const baseUrl = this.getPreference("pref_override_base_url")
var name = doc.selectFirst(".col-sm-12.col-lg-12.text-center").selectFirst("h4").text.trim() var name = doc.selectFirst(".col-sm-12.col-lg-12.text-center").selectFirst("h4").text.trim()
var poster = doc.selectFirst(".thumbnail.text-center").selectFirst("img").getSrc var poster = doc.selectFirst(".thumbnail.text-center").selectFirst("img").getSrc
var imageUrl = `${baseUrl}${poster}` var imageUrl = `${baseUrl}${poster}`
@@ -137,7 +147,7 @@ class DefaultExtension extends MProvider {
var eps = season.select(".col-sm-12.col-md-6.col-lg-4.myp1") var eps = season.select(".col-sm-12.col-md-6.col-lg-4.myp1")
for (var ep of eps) { for (var ep of eps) {
var epLinkSection = ep.selectFirst("a") var epLinkSection = ep.selectFirst("a")
var epLink = epLinkSection.getHref var epLink = epLinkSection.getHref.substring(1)
var epName = epLinkSection.text var epName = epLinkSection.text
chapters.push({ chapters.push({
@@ -159,7 +169,46 @@ class DefaultExtension extends MProvider {
} }
// 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 baseUrl = this.getBasueUrl()
var eId = body.selectFirst("#hId").attr('value')
var hIsW = body.selectFirst("#hIsW").attr('value')
var apiType = url[0].toUpperCase()
var streams = []
var servers = [0,1]
for(var serverNum of servers){
var serverName = body.selectFirst(`#server_button_${serverNum}`).text
if(serverName.length < 1) continue;
var data ={
pass:eId,
param:"",
extra:"1",
e2:hIsW,
server: ""+serverNum,
}
var res = await this.requestJSON(`home/index/Get${apiType}InfoAjax`,data)
var streamUrl = baseUrl+res.val
var subs = []
for (var sub of res.subs) {
subs.push({
file: baseUrl+sub.path,
label: sub.name
})
}
streams.push({
url: streamUrl,
originalUrl: streamUrl,
quality: serverName,
subtitles:subs
});
}
return streams
} }
// For manga chapter pages // For manga chapter pages
async getPageList() { async getPageList() {