\u5BFC\u6F14: ${data.director}
\u7C7B\u578B: ${data.genre}
\u5236\u7247\u56FD\u5BB6/\u5730\u533A: ${data.region}
\u8BED\u8A00: ${data.language}
\u65F6\u957F: ${data.runtime}
\u53C8\u540D: ${data.aka}
`);
if (data.average) {
$("#movie-ratings-table tr").prepend(`
\u8C46
\u8C46\u74E3\u8BC4\u5206
|
${data.average}
/
10
(${data.votes} votes) | `);
}
};
var getImdbId = () => {
let imdbLink = "";
const imdbConfig = CURRENT_SITE_INFO.imdb;
if (typeof imdbConfig === "object") {
try {
Object.keys(imdbConfig).forEach((key) => {
if ($(`${imdbConfig[key]}`)[0]) {
imdbLink = $(imdbConfig[key]).attr("href");
throw new Error("end loop");
}
});
} catch (error) {
if (error.message !== "end loop") {
console.log(error);
}
}
} else {
imdbLink = $(imdbConfig).attr("href");
}
console.log(imdbLink);
return /tt\d+/.exec(imdbLink)[0];
};
var getDoubanId = (imdbId) => {
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: "GET",
url: `${DOUBAN_SEARCH_API}?q=${imdbId}`,
onload(res) {
try {
const data = JSON.parse(res.responseText);
if (data.length > 0) {
resolve(data[0]);
}
} catch (error) {
console.log(error);
}
}
});
});
};
var getTvSeasonData = (data) => {
const torrentTitle = getTorrentTitle();
return new Promise((resolve, reject) => {
var _a4, _b3;
const {episode = "", title} = data;
if (episode) {
const seasonNumber = (_b3 = (_a4 = torrentTitle.match(/S(?!eason)?0?(\d+)\.?(EP?\d+)?/i)) == null ? void 0 : _a4[1]) != null ? _b3 : 1;
if (parseInt(seasonNumber) === 1) {
resolve(data);
} else {
const query = title.replace(/第.+?季/, `\u7B2C${seasonNumber}\u5B63`);
getDoubanId(query).then((data2) => {
resolve(data2);
});
}
}
});
};
var getDoubanInfo = (doubanId) => {
return new Promise((resolve, reject) => {
try {
if (doubanId) {
GM_xmlhttpRequest({
method: "GET",
url: `${DOUBAN_API_URL}/${doubanId}`,
onload(res) {
var _a4;
const data = JSON.parse(res.responseText);
if (data && ((_a4 = data.data) == null ? void 0 : _a4.id)) {
resolve(formatDoubanInfo(data.data));
} else {
console.log("\u8C46\u74E3\u6570\u636E\u83B7\u53D6\u5931\u8D25");
}
}
});
} else {
reject(new Error("\u8C46\u74E3\u94FE\u63A5\u83B7\u53D6\u5931\u8D25"));
}
} catch (error) {
console.log(error);
reject(new Error(error.message));
}
});
};
var formatDoubanInfo = (data) => {
let {title, votes, average, originalTitle} = data;
if (originalTitle !== title) {
title = title.replace(originalTitle, "").trim();
}
votes = votes || "0";
average = average || "0.0";
return __assign(__assign({}, data), {
chineseTitle: title,
votes,
average
});
};
var getTorrentTitle = () => {
let {titleDom} = CURRENT_SITE_INFO;
if (!titleDom) {
if (CURRENT_SITE_NAME === "BHD") {
titleDom = $(".dotborder").find("td:contains(Name)").next("td");
} else if (CURRENT_SITE_NAME.match(/ACM|BLU/)) {
const keyMap = {
Name: "Name",
\u540D\u79F0: "Name",
\u540D\u7A31: "Name"
};
$("#vue+.panel table tr").each((index, element) => {
const key = $(element).find("td:first").text().replace(/\s|\n/g, "");
if (keyMap[key]) {
titleDom = $(element).find("td:last");
}
});
} else if (CURRENT_SITE_NAME === "UHD") {
const torrentId = getUrlParam("torrentid");
const torrentFilePathDom = $(`#files_${torrentId} .filelist_path`);
const torrentFileDom = $(`#files_${torrentId} .filelist_table>tbody>tr:nth-child(2) td`).eq(0);
titleDom = torrentFilePathDom || torrentFileDom;
} else if (CURRENT_SITE_NAME === "HDT") {
return document.title.replace(/HD-Torrents.org\s*-/ig, "").trim();
}
}
return $(titleDom).text();
};
var getUrlParam = (key) => {
const reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
const regArray = location.search.substr(1).match(reg);
if (regArray) {
return unescape(regArray[2]);
}
return "";
};
var createDoubanDom = (doubanId) => {
const div = document.createElement("div");
let {doubanContainerDom, insertDomSelector, siteName, poster} = CURRENT_SITE_INFO;
if (siteName.match(/(HDT|RARBG)$/)) {
insertDomSelector = $(insertDomSelector).parent();
}
$(insertDomSelector).before(doubanContainerDom);
const doubanLink = `https://movie.douban.com/subject/${doubanId}`;
GM_xmlhttpRequest({
url: `${doubanLink}/output_card`,
method: "GET",
onload(res) {
let htmlData = res.responseText.replace(/wrapper/g, "douban-wrapper").replace(/
/g, "");
htmlData = htmlData.replace(/(html,)body,/, "$1");
htmlData = htmlData.replace(/url\(.+?output_card\/border.png\)/g, `url(${PIC_URLS.border})`);
htmlData = htmlData.replace(/src=.+?output_card\/line\.png/g, `src="${PIC_URLS.line}`);
htmlData = htmlData.replace(/url\(.+?output_card\/ic_rating_m\.png\)/g, `url(${PIC_URLS.icon})`);
htmlData = htmlData.replace(/(1x,\s+)url\(.+?output_card\/ic_rating_m@2x\.png\)/g, `$1url(${PIC_URLS.icon2x})`);
let headDom = htmlData.match(/((.|\n)+)<\/head>/)[1];
headDom = headDom.replace(//g, "");
const bodyDom = htmlData.match(/((.|\n)+)<\/body>/)[1];
div.insertAdjacentHTML("beforeend", headDom);
div.insertAdjacentHTML("beforeend", bodyDom);
$(".douban-dom").append(div).attr("douban-link", doubanLink);
if ($(poster).attr("src")) {
let posterStyle = $(".picture-douban-wrapper").attr("style");
posterStyle = posterStyle.replace(/\(.+\)/, `(${$(poster).attr("src")})`);
$(".picture-douban-wrapper").attr("style", posterStyle);
}
$(".douban-dom").click(() => {
GM_openInTab(doubanLink);
});
}
});
};
// src/style.js
var style_default = GM_addStyle(`
.contentlayout.douban-info {
display: flex;
justify-content: space-around;
}
.contentlayout.douban-info .detail{
flex:1;
}
.detail .title{
font-size: 26px;
font-weight: 600;
margin-bottom: 20px;
}
.detail .title a{
text-decoration: none;
}
.movie-detail{
display: flex;
justify-content: space-between;
}
.movie-detail .synopsis {
width: 60%;
}
.movie-detail .movieinfo {
margin-right: 20px;
max-width: 30%;
}
.icon-pt1{
font-size: 14px;
display: inline-block;
text-align: center;
border: 1px solid #41be57;
background-color: #41be57;
color: white;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
width: 24px;
height: 24px;
line-height: 24px;
}
.icon-pt2{
display: inline-block;
text-align: center;
border: 1px solid #41be57;
color: #3ba94d;
background: #ffffff;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
width: 69px;
height: 24px;
line-height: 24px;
font-size: 14px;
}
.douban-dom {
display: flex;
cursor: pointer;
}
.douban-dom {
text-align: left;
}
#douban-wrapper *{
box-sizing: content-box;
}
#douban-wrapper .clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden
}
#douban-wrapper .clearfix {
zoom: 1;
display: inline-block;
_height: 1px;
}
#douban-wrapper .clearfix {
height: 1%
}
#douban-wrapper .clearfix {
display: block
}
#douban-wrapper .rating_per{
color: #111;
}
#douban-wrapper .grid{
overflow: initial;
}
.content-rounded #douban-wrapper div{
margin-left: 0;
}
#douban-wrapper #content .douban-icon .icon-pt1 {
background-image:none;
}
#douban-wrapper h2,#douban-wrapper h1{
border:none;
background-image: none;
background-color: transparent;
text-shadow: none;
}
`);
// src/index.js
(async () => {
if (CURRENT_SITE_INFO) {
const imdbId = getImdbId();
const movieData = await getDoubanId(imdbId);
let {id, episode = ""} = movieData;
if (episode) {
const tvData = await getTvSeasonData(movieData);
id = tvData.id;
}
if (CURRENT_SITE_NAME === "PTP") {
getDoubanInfo(id).then((doubanData) => {
addToPtpPage(doubanData);
});
} else {
createDoubanDom(id);
}
}
})();
})();