mirror of
https://github.com/vega-org/vega-providers.git
synced 2026-04-17 23:51:44 +00:00
fix: encode file links in getEpisodes and getMeta for proper URL handling
This commit is contained in:
2
dist/a111477/episodes.js
vendored
2
dist/a111477/episodes.js
vendored
@@ -1 +1 @@
|
|||||||
"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){var value;result.done?resolve(result.value):(value=result.value,value instanceof P?value:new P(function(resolve){resolve(value)})).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(_a){return __awaiter(this,arguments,void 0,function*({url:url,providerContext:providerContext}){const{axios:axios,cheerio:cheerio}=providerContext;try{const html=(yield axios.get(url)).data,$=cheerio.load(html),episodeLinks=[];return $("table tbody tr").each((i,element)=>{const linkElement=$(element).find("td:first-child a"),fileName=linkElement.text().trim(),fileLink=linkElement.attr("href");if(fileName&&fileLink&&"../"!==fileName&&"Parent Directory"!==fileName&&(fileName.includes(".mp4")||fileName.includes(".mkv")||fileName.includes(".avi")||fileName.includes(".mov"))){const fullLink=url+fileLink;let episodeTitle=fileName;const episodeMatch=fileName.match(/[Ss](\d+)[Ee](\d+)/),simpleEpisodeMatch=fileName.match(/[Ee](\d+)/);if(episodeMatch)episodeTitle=`S${episodeMatch[1]}E${episodeMatch[2]} - ${fileName}`;else if(simpleEpisodeMatch)episodeTitle=`Episode ${simpleEpisodeMatch[1]} - ${fileName}`;else{const numberMatch=fileName.match(/(\d+)/);numberMatch&&(episodeTitle=`Episode ${numberMatch[1]} - ${fileName}`)}episodeLinks.push({title:episodeTitle,link:fullLink})}}),episodeLinks}catch(err){return[]}})};exports.getEpisodes=getEpisodes;
|
"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){var value;result.done?resolve(result.value):(value=result.value,value instanceof P?value:new P(function(resolve){resolve(value)})).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getEpisodes=void 0;const getEpisodes=function(_a){return __awaiter(this,arguments,void 0,function*({url:url,providerContext:providerContext}){const{axios:axios,cheerio:cheerio}=providerContext;try{const html=(yield axios.get(url)).data,$=cheerio.load(html),episodeLinks=[];return $("table tbody tr").each((i,element)=>{const linkElement=$(element).find("td:first-child a"),fileName=linkElement.text().trim(),fileLink=linkElement.attr("href");if(fileName&&fileLink&&"../"!==fileName&&"Parent Directory"!==fileName&&(fileName.includes(".mp4")||fileName.includes(".mkv")||fileName.includes(".avi")||fileName.includes(".mov"))){const fullLink=encodeURIComponent(fileLink);let episodeTitle=fileName;const episodeMatch=fileName.match(/[Ss](\d+)[Ee](\d+)/),simpleEpisodeMatch=fileName.match(/[Ee](\d+)/);if(episodeMatch)episodeTitle=`S${episodeMatch[1]}E${episodeMatch[2]} - ${fileName}`;else if(simpleEpisodeMatch)episodeTitle=`Episode ${simpleEpisodeMatch[1]} - ${fileName}`;else{const numberMatch=fileName.match(/(\d+)/);numberMatch&&(episodeTitle=`Episode ${numberMatch[1]} - ${fileName}`)}episodeLinks.push({title:episodeTitle,link:fullLink})}}),episodeLinks}catch(err){return[]}})};exports.getEpisodes=getEpisodes;
|
||||||
2
dist/a111477/meta.js
vendored
2
dist/a111477/meta.js
vendored
@@ -1 +1 @@
|
|||||||
"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){var value;result.done?resolve(result.value):(value=result.value,value instanceof P?value:new P(function(resolve){resolve(value)})).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(_a){return __awaiter(this,arguments,void 0,function*({link:link,providerContext:providerContext}){try{const{axios:axios,cheerio:cheerio}=providerContext,url=link,data=(yield axios.get(url)).data,$=cheerio.load(data),title=($("h1").text().trim()||url.split("/").filter(Boolean).pop()||"").replace("Index of /","").replace(/\/$/,""),links=[],directLinks=[];$("table tbody tr").each((i,element)=>{const linkElement=$(element).find("td:first-child a"),itemTitle=linkElement.text().trim(),itemLink=linkElement.attr("href");if(itemTitle&&itemLink&&"../"!==itemTitle&&"Parent Directory"!==itemTitle){const fullLink=link+itemLink;if(itemTitle.endsWith("/")){const cleanTitle=itemTitle.replace(/\/$/,"");links.push({episodesLink:fullLink,title:cleanTitle})}else(itemTitle.includes(".mp4")||itemTitle.includes(".mkv")||itemTitle.includes(".avi")||itemTitle.includes(".mov"))&&directLinks.push({title:itemTitle,link:fullLink})}}),directLinks.length>0&&links.push({title:title+" (Direct Files)",directLinks:directLinks});const type=links.some(link=>{var _a,_b;return(null===(_a=link.episodesLink)||void 0===_a?void 0:_a.includes("Season"))||(null===(_b=link.episodesLink)||void 0===_b?void 0:_b.includes("S0"))})||directLinks.length>1?"series":"movie";return{title:title,synopsis:"Content from 111477.xyz directory",image:`https://placehold.jp/23/000000/ffffff/300x450.png?text=${encodeURIComponent(title)}&css=%7B%22background%22%3A%22%20-webkit-gradient(linear%2C%20left%20bottom%2C%20left%20top%2C%20from(%233f3b3b)%2C%20to(%23000000))%22%2C%22text-transform%22%3A%22%20capitalize%22%7D`,imdbId:"",type:type,linkList:links}}catch(err){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta;
|
"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){var value;result.done?resolve(result.value):(value=result.value,value instanceof P?value:new P(function(resolve){resolve(value)})).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMeta=void 0;const getMeta=function(_a){return __awaiter(this,arguments,void 0,function*({link:link,providerContext:providerContext}){try{const{axios:axios,cheerio:cheerio}=providerContext,url=link,data=(yield axios.get(url)).data,$=cheerio.load(data),title=($("h1").text().trim()||url.split("/").filter(Boolean).pop()||"").replace("Index of /","").replace(/\/$/,""),links=[],directLinks=[];$("table tbody tr").each((i,element)=>{const linkElement=$(element).find("td:first-child a"),itemTitle=linkElement.text().trim(),itemLink=linkElement.attr("href");if(itemTitle&&itemLink&&"../"!==itemTitle&&"Parent Directory"!==itemTitle){const fullLink=encodeURIComponent(itemLink);if(itemTitle.endsWith("/")){const cleanTitle=itemTitle.replace(/\/$/,"");links.push({episodesLink:fullLink,title:cleanTitle})}else(itemTitle.includes(".mp4")||itemTitle.includes(".mkv")||itemTitle.includes(".avi")||itemTitle.includes(".mov"))&&directLinks.push({title:itemTitle,link:fullLink})}}),directLinks.length>0&&links.push({title:title+" (Direct Files)",directLinks:directLinks});const type=links.some(link=>{var _a,_b;return(null===(_a=link.episodesLink)||void 0===_a?void 0:_a.includes("Season"))||(null===(_b=link.episodesLink)||void 0===_b?void 0:_b.includes("S0"))})||directLinks.length>1?"series":"movie";return{title:title,synopsis:"Content from 111477.xyz directory",image:`https://placehold.jp/23/000000/ffffff/300x450.png?text=${encodeURIComponent(title)}&css=%7B%22background%22%3A%22%20-webkit-gradient(linear%2C%20left%20bottom%2C%20left%20top%2C%20from(%233f3b3b)%2C%20to(%23000000))%22%2C%22text-transform%22%3A%22%20capitalize%22%7D`,imdbId:"",type:type,linkList:links}}catch(err){return{title:"",synopsis:"",image:"",imdbId:"",type:"movie",linkList:[]}}})};exports.getMeta=getMeta;
|
||||||
@@ -34,7 +34,7 @@ export const getEpisodes = async function ({
|
|||||||
fileName.includes(".avi") ||
|
fileName.includes(".avi") ||
|
||||||
fileName.includes(".mov")
|
fileName.includes(".mov")
|
||||||
) {
|
) {
|
||||||
const fullLink = url + fileLink;
|
const fullLink = encodeURIComponent(fileLink);
|
||||||
|
|
||||||
// Try to extract episode information from filename
|
// Try to extract episode information from filename
|
||||||
let episodeTitle = fileName;
|
let episodeTitle = fileName;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ export const getMeta = async function ({
|
|||||||
itemTitle !== "../" &&
|
itemTitle !== "../" &&
|
||||||
itemTitle !== "Parent Directory"
|
itemTitle !== "Parent Directory"
|
||||||
) {
|
) {
|
||||||
const fullLink = link + itemLink;
|
const fullLink = encodeURIComponent(itemLink);
|
||||||
|
|
||||||
// If it's a directory (ends with /)
|
// If it's a directory (ends with /)
|
||||||
if (itemTitle.endsWith("/")) {
|
if (itemTitle.endsWith("/")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user