根据指定特征字符内容获取对应相关的豆瓣评分及评论人数,上映日期,源名等信息。(未使用豆瓣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 + '》 <'+sub_title+ '> 年份:'+year+ ' 评论数:'+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); } } }); } })();