extension(Autoembed): Added series support

This commit is contained in:
Swakshan
2024-12-20 17:22:18 +05:30
parent fa3efac2fd
commit d696b62b91

View File

@@ -6,7 +6,7 @@ const mangayomiSources = [{
"iconUrl": "https://www.google.com/s2/favicons?sz=64&domain=https://autoembed.cc/", "iconUrl": "https://www.google.com/s2/favicons?sz=64&domain=https://autoembed.cc/",
"typeSource": "multi", "typeSource": "multi",
"isManga": false, "isManga": false,
"version": "0.0.1", "version": "0.0.2",
"dateFormat": "", "dateFormat": "",
"dateFormatLocale": "", "dateFormatLocale": "",
"pkgPath": "" "pkgPath": ""
@@ -68,34 +68,64 @@ class DefaultExtension extends MProvider {
async getDetail(url) { async getDetail(url) {
var parts = url.split("/"); var parts = url.split("/");
var media_type = parts[0]; var media_type = parts[0];
var tmdbId = parts[1]; var id = parts[1];
var api = `${this.tmdb_api}/meta/${media_type}/${tmdbId}.json` var api = `${this.tmdb_api}/meta/${media_type}/${id}.json`
const response = await new Client().get(api); const response = await new Client().get(api);
const body = JSON.parse(response.body); const body = JSON.parse(response.body);
var result = body.meta; var result = body.meta;
var release = result.released ? new Date(result.released) : Date.now(); var tmdb_id = id.substring(5, )
var imdb_id = result.imdb_id
var dateNow = Date.now().valueOf();
var release = result.released ? new Date(result.released).valueOf() : dateNow
var chaps = [];
var item = { var item = {
name: result.name, name: result.name,
imageUrl: result.poster, imageUrl: result.poster,
link: `${media_type}/${tmdbId}`, link: `https://imdb.com/title/${imdb_id}`,
description: result.description, description: result.description,
genre: result.genre, genre: result.genre,
}; };
var chaps = [];
chaps.push({ if (media_type == "series") {
name: "Movie",
url: `${media_type}/${result.imdb_id}`, var videos = result.videos
dateUpload: release.valueOf().toString(), for (var i in videos) {
}) var video = videos[i];
var seasonNum = video.season;
if (!seasonNum) continue;
var episodeNum = video.episode
var eplink = `tv||${tmdb_id}/${seasonNum}/${episodeNum}`
release = video.released ? new Date(video.released).valueOf() : dateNow
if (release < dateNow) {
var name = video.name
chaps.push({
name: name,
url: eplink,
dateUpload: release.toString(),
})
}
}
} else {
if (release < dateNow) {
chaps.push({
name: "Movie",
url: `${media_type}||${tmdb_id}`,
dateUpload: release.toString(),
})
}
}
item.chapters = chaps; item.chapters = chaps;
return item; return item;
} }
async extractStreams(url) { async extractStreams(url) {
const response = await new Client().get(url); const response = await new Client().get(url);
const body = response.body; const body = response.body;
@@ -113,21 +143,27 @@ class DefaultExtension extends MProvider {
quality: resolution, quality: resolution,
}); });
} }
} }
return streams; return streams;
} }
// For anime episode video list // For anime episode video list
async getVideoList(url) { async getVideoList(url) {
var parts = url.split("/"); var parts = url.split("||");
var media_type = parts[0]; var media_type = parts[0];
var imdbId = parts[1]; var id = parts[1];
var api = `${this.source.apiUrl}/api/getVideoSource?type=${media_type}&id=${imdbId}` var api = `${this.source.apiUrl}/api/getVideoSource?type=${media_type}&id=${id}`
const response = await new Client().get(api, this.getHeaders()); const response = await new Client().get(api, this.getHeaders());
const body = JSON.parse(response.body); const body = JSON.parse(response.body);
if (response.statusCode == 404) {
throw new Error("Video unavailable");
}
var link = body.videoSource var link = body.videoSource
var subtitles = body.subtitles var subtitles = body.subtitles
var streams = await this.extractStreams(link); var streams = await this.extractStreams(link);
streams.push({ streams.push({
url: link, url: link,
originalUrl: link, originalUrl: link,
@@ -153,7 +189,7 @@ class DefaultExtension extends MProvider {
summary: '', summary: '',
valueIndex: 0, valueIndex: 0,
entries: ["Movies", "TV Shows"], entries: ["Movies", "TV Shows"],
entryValues: ["movie", "tv"] entryValues: ["movie", "series"]
} }
}, },