🏠 Home 

豆瓣评分获取器

根据指定特征字符内容获取对应相关的豆瓣评分及评论人数,上映日期,源名等信息。(未使用豆瓣API)

// ==UserScript==
// @name         豆瓣评分获取器
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  根据指定特征字符内容获取对应相关的豆瓣评分及评论人数,上映日期,源名等信息。(未使用豆瓣API)
// @author       zhuzhuyule
// @match        http://www.dygang.net/*
// @grant        GM_xmlhttpRequest
// @grant        GM_download
// ==/UserScript==
(function() {
'use strict';
document.querySelectorAll('.classlinkclass').forEach( item=>{
getMovie(item,item.innerText);
});
function getMovie(link,name) {
name = name.replace(/\[.*/,'');
GM_xmlhttpRequest({
method: "GET",
url: 'https://movie.douban.com/j/subject_suggest?q='+name,
onload: function(response) {
if (response.status == 200 ) {
let json = JSON.parse(response.responseText);
console.log(json);
json.forEach(function(item){
if (item.type == "movie")
getUrl(link,item.title,item.sub_title,item.year,item.url);
});
} else {
console.log(response.statusText);
}
}
});
}
function getUrl(link,title,sub_title,year,url){
var tdElement = link.parentElement;
GM_xmlhttpRequest({
method: "GET",
url: url,
onload: function(response) {
if (response.status == 200 ) {
var div = document.createElement('div');
var content = response.responseText.replace(/src="[^"]*/,'');
div.innerHTML = content.replace(/"https?:\/\/[^"]*"/g,'""');
var value = div.querySelector('strong.ll.rating_num').innerText;
var rate;
var count;
if (value){
rate = parseFloat(value);
count = div.querySelector('a.rating_people').innerText|| '0';
}else{
value = '暂无';
rate = 0;
count = "0";
}
var color = (rate> 8 ? "#f44336": (rate> 6 ? "#ffc107": "#8bc34a"));
var ratesElement = tdElement.querySelector("span");
if (!ratesElement){
ratesElement = document.createElement("span");
tdElement.appendChild(ratesElement);
}
ratesElement.innerHTML = ratesElement.innerHTML + `<a id="${parseInt(count)}" href="${url}"  style="background: ${color};font-size: 14px;border-radius: 4px;margin: 0 3px;padding: 1px 4px;color: white;" title="《${title + '》&#10;<'+sub_title+ '>&#10;年份:'+year+ '&#10;评论数:'+count}">${value}</a>`;
var rates = ratesElement.querySelectorAll('a');
if (rates.length > 1){
var r###lt = '';
var arr = [];
rates.forEach(item => {
arr.push(item);
});
arr = arr.sort((a,b)=>{ return parseInt(a.id) < (b.id); });
arr.forEach(item => {
r###lt = r###lt + item.outerHTML;
});
ratesElement.innerHTML  = r###lt;
}
} else {
// 失败,根据响应码判断失败原因:
console.log(response.statusText);
}
}
});
}
})();