vault backup: 2024-10-23 00:53:31
This commit is contained in:
@@ -1,131 +1,131 @@
|
||||
//2022-02-15 by Cuman
|
||||
//脚本可以从获取网址信息,访问豆瓣电影网站抓取电影基本信息字段。
|
||||
|
||||
const notice = (msg) => new Notice(msg, 5000);
|
||||
const log = (msg) => console.log(msg);
|
||||
|
||||
module.exports = moviefromdouban
|
||||
|
||||
let QuickAdd;
|
||||
|
||||
async function moviefromdouban(params) {
|
||||
QuickAdd = params;
|
||||
const http_reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
|
||||
const http_reg_movie = /(http:\/\/movie|https:\/\/movie)((\w|=|\?|\.|\/|&|-)+)/g;
|
||||
const query = await QuickAdd.quickAddApi.inputPrompt(
|
||||
"请输入豆瓣电影网址:"
|
||||
);
|
||||
if (!query) {
|
||||
notice("No url entered.");
|
||||
throw new Error("No url entered.");
|
||||
}
|
||||
if (!http_reg.exec(query)) {
|
||||
new Notice('复制的内容需要包含网址', 3000);
|
||||
throw new Error("No results found.");
|
||||
}
|
||||
|
||||
const url = query.match(http_reg)[0];
|
||||
console.log(url);
|
||||
if (http_reg_movie.exec(url)) {
|
||||
let moviedata = await getmovieByurl(url);
|
||||
if(moviedata)
|
||||
new Notice('电影数据获取成功!', 3000);
|
||||
QuickAdd.variables = {
|
||||
...moviedata
|
||||
};
|
||||
}else
|
||||
{
|
||||
new Notice('只能解析movie.douban.com相关网址', 3000);
|
||||
throw new Error("No results found.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async function getmovieByurl(url) {
|
||||
|
||||
let page = await urlGet(url);
|
||||
|
||||
if (!page) {
|
||||
notice("No results found.");
|
||||
throw new Error("No results found.");
|
||||
}
|
||||
let p = new DOMParser();
|
||||
let doc = p.parseFromString(page, "text/html");
|
||||
let $ = s => doc.querySelector(s);
|
||||
let director = '';
|
||||
let moviename = '';
|
||||
moviename = $("meta[property='og:title']")?.content
|
||||
director = $("meta[property='video:director']")?.content
|
||||
summary = $("span[property='v:summary']")?.textContent??'-';
|
||||
genre = $("span[property='v:genre']")?.textContent??'-';
|
||||
console.log(genre)
|
||||
let regx = /<[^>]*>|<\/[^>]*>/gm;
|
||||
if (summary) {
|
||||
summary = summary.replace('(展开全部)', "");
|
||||
summary = summary.replace(regx, "").trim();
|
||||
summary = summary.replace(/\s\s\s\s/gm, "\n");
|
||||
|
||||
}
|
||||
let movieinfo = {};
|
||||
let reglead= /主演:([\s\S]*)(?=类型:)/g;
|
||||
let regfilmlength = /片长:.(\d*)/g;
|
||||
let regIMDb = /IMDb:.\w(.*)/g;
|
||||
let regalias = /又名:([\s\S]*)(?=IMDb:)/g;
|
||||
let reglanguage =/语言:([\s\S]*)(?=上映日期:)/g;
|
||||
let regcountry = /制片国家\/地区:([\s\S]*)(?=语言:)/g;
|
||||
let str =$("#info")?.innerText;
|
||||
let lead= reglead.exec(str)
|
||||
lead=(lead==null)?'未知':lead[1].trim().replace(/\n|\r/g,"").replace(/\ +/g,"");
|
||||
movieinfo.lead = "'"+ lead +"'";
|
||||
let filmlength=regfilmlength.exec(str);
|
||||
movieinfo.filmlength=(filmlength==null)?'0':filmlength[1].trim();
|
||||
let IMDb=regIMDb.exec(str);
|
||||
movieinfo.IMDb=(IMDb==null)?'未知':IMDb[1].trim();
|
||||
let alias=regalias.exec(str);
|
||||
movieinfo.alias=(alias==null)?'未知':alias[1].trim();
|
||||
movieinfo.alias = '"'+ movieinfo.alias +'"';
|
||||
let language=reglanguage.exec(str);
|
||||
movieinfo.language=(language==null)?'未知':language[1].trim();
|
||||
let country=regcountry.exec(str);
|
||||
movieinfo.country=(country==null)?'未知':country[1].trim();
|
||||
|
||||
movieinfo.fileName =moviename.replace(/[\/\\\:\*\?\"\<\>\|│]/gm, "_");
|
||||
movieinfo.Poster = $("meta[property='og:image']")?.content;
|
||||
movieinfo.type = 'movie';
|
||||
movieinfo.description = $("meta[property='og:description']")?.content;
|
||||
movieinfo.douban_url = $("meta[property='og:url']")?.content;
|
||||
movieinfo.director = "'"+ director +"'";
|
||||
movieinfo.genre = genre;
|
||||
movieinfo.rating = $("#interest_sectl > div > div.rating_self > strong")?.textContent??'-';
|
||||
movieinfo.plot = summary;
|
||||
movieinfo.runtime = $("span[property='v:runtime']")?.textContent??'-';
|
||||
movieinfo.year = $("span[property='v:initialReleaseDate']")?.textContent??'-';
|
||||
movieinfo.banner= movieinfo.Poster.replace('s_ratio_poster', "1");
|
||||
for(var i in movieinfo){
|
||||
if(movieinfo[i]=="" || movieinfo[i]== null){
|
||||
movieinfo[i]="未知";
|
||||
}
|
||||
}
|
||||
return movieinfo;
|
||||
}
|
||||
|
||||
async function urlGet(url) {
|
||||
let finalURL = new URL(url);
|
||||
let headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.100.4758.11 Safari/537.36'
|
||||
};
|
||||
const res = await request({
|
||||
url: finalURL.href,
|
||||
method: "GET",
|
||||
cache: "no-cache",
|
||||
headers: {
|
||||
"Content-Type": "text/html; charset=utf-8",
|
||||
},
|
||||
});
|
||||
|
||||
return res;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//2022-02-15 by Cuman
|
||||
//脚本可以从获取网址信息,访问豆瓣电影网站抓取电影基本信息字段。
|
||||
|
||||
const notice = (msg) => new Notice(msg, 5000);
|
||||
const log = (msg) => console.log(msg);
|
||||
|
||||
module.exports = moviefromdouban
|
||||
|
||||
let QuickAdd;
|
||||
|
||||
async function moviefromdouban(params) {
|
||||
QuickAdd = params;
|
||||
const http_reg = /(http:\/\/|https:\/\/)((\w|=|\?|\.|\/|&|-)+)/g;
|
||||
const http_reg_movie = /(http:\/\/movie|https:\/\/movie)((\w|=|\?|\.|\/|&|-)+)/g;
|
||||
const query = await QuickAdd.quickAddApi.inputPrompt(
|
||||
"请输入豆瓣电影网址:"
|
||||
);
|
||||
if (!query) {
|
||||
notice("No url entered.");
|
||||
throw new Error("No url entered.");
|
||||
}
|
||||
if (!http_reg.exec(query)) {
|
||||
new Notice('复制的内容需要包含网址', 3000);
|
||||
throw new Error("No results found.");
|
||||
}
|
||||
|
||||
const url = query.match(http_reg)[0];
|
||||
console.log(url);
|
||||
if (http_reg_movie.exec(url)) {
|
||||
let moviedata = await getmovieByurl(url);
|
||||
if(moviedata)
|
||||
new Notice('电影数据获取成功!', 3000);
|
||||
QuickAdd.variables = {
|
||||
...moviedata
|
||||
};
|
||||
}else
|
||||
{
|
||||
new Notice('只能解析movie.douban.com相关网址', 3000);
|
||||
throw new Error("No results found.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async function getmovieByurl(url) {
|
||||
|
||||
let page = await urlGet(url);
|
||||
|
||||
if (!page) {
|
||||
notice("No results found.");
|
||||
throw new Error("No results found.");
|
||||
}
|
||||
let p = new DOMParser();
|
||||
let doc = p.parseFromString(page, "text/html");
|
||||
let $ = s => doc.querySelector(s);
|
||||
let director = '';
|
||||
let moviename = '';
|
||||
moviename = $("meta[property='og:title']")?.content
|
||||
director = $("meta[property='video:director']")?.content
|
||||
summary = $("span[property='v:summary']")?.textContent??'-';
|
||||
genre = $("span[property='v:genre']")?.textContent??'-';
|
||||
console.log(genre)
|
||||
let regx = /<[^>]*>|<\/[^>]*>/gm;
|
||||
if (summary) {
|
||||
summary = summary.replace('(展开全部)', "");
|
||||
summary = summary.replace(regx, "").trim();
|
||||
summary = summary.replace(/\s\s\s\s/gm, "\n");
|
||||
|
||||
}
|
||||
let movieinfo = {};
|
||||
let reglead= /主演:([\s\S]*)(?=类型:)/g;
|
||||
let regfilmlength = /片长:.(\d*)/g;
|
||||
let regIMDb = /IMDb:.\w(.*)/g;
|
||||
let regalias = /又名:([\s\S]*)(?=IMDb:)/g;
|
||||
let reglanguage =/语言:([\s\S]*)(?=上映日期:)/g;
|
||||
let regcountry = /制片国家\/地区:([\s\S]*)(?=语言:)/g;
|
||||
let str =$("#info")?.innerText;
|
||||
let lead= reglead.exec(str)
|
||||
lead=(lead==null)?'未知':lead[1].trim().replace(/\n|\r/g,"").replace(/\ +/g,"");
|
||||
movieinfo.lead = "'"+ lead +"'";
|
||||
let filmlength=regfilmlength.exec(str);
|
||||
movieinfo.filmlength=(filmlength==null)?'0':filmlength[1].trim();
|
||||
let IMDb=regIMDb.exec(str);
|
||||
movieinfo.IMDb=(IMDb==null)?'未知':IMDb[1].trim();
|
||||
let alias=regalias.exec(str);
|
||||
movieinfo.alias=(alias==null)?'未知':alias[1].trim();
|
||||
movieinfo.alias = '"'+ movieinfo.alias +'"';
|
||||
let language=reglanguage.exec(str);
|
||||
movieinfo.language=(language==null)?'未知':language[1].trim();
|
||||
let country=regcountry.exec(str);
|
||||
movieinfo.country=(country==null)?'未知':country[1].trim();
|
||||
|
||||
movieinfo.fileName =moviename.replace(/[\/\\\:\*\?\"\<\>\|│]/gm, "_");
|
||||
movieinfo.Poster = $("meta[property='og:image']")?.content;
|
||||
movieinfo.type = 'movie';
|
||||
movieinfo.description = $("meta[property='og:description']")?.content;
|
||||
movieinfo.douban_url = $("meta[property='og:url']")?.content;
|
||||
movieinfo.director = "'"+ director +"'";
|
||||
movieinfo.genre = genre;
|
||||
movieinfo.rating = $("#interest_sectl > div > div.rating_self > strong")?.textContent??'-';
|
||||
movieinfo.plot = summary;
|
||||
movieinfo.runtime = $("span[property='v:runtime']")?.textContent??'-';
|
||||
movieinfo.year = $("span[property='v:initialReleaseDate']")?.textContent??'-';
|
||||
movieinfo.banner= movieinfo.Poster.replace('s_ratio_poster', "1");
|
||||
for(var i in movieinfo){
|
||||
if(movieinfo[i]=="" || movieinfo[i]== null){
|
||||
movieinfo[i]="未知";
|
||||
}
|
||||
}
|
||||
return movieinfo;
|
||||
}
|
||||
|
||||
async function urlGet(url) {
|
||||
let finalURL = new URL(url);
|
||||
let headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.100.4758.11 Safari/537.36'
|
||||
};
|
||||
const res = await request({
|
||||
url: finalURL.href,
|
||||
method: "GET",
|
||||
cache: "no-cache",
|
||||
headers: {
|
||||
"Content-Type": "text/html; charset=utf-8",
|
||||
},
|
||||
});
|
||||
|
||||
return res;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user