Greasy Fork is available in English.
在豆瓣列表页面快速标注已读收藏
// ==UserScript== // @name 豆瓣批量已读工具 // @namespace https://douban.com/ // @version 0.1 // @description 在豆瓣列表页面快速标注已读收藏 // @author 不能放过孩子 // @license MIT // @match *.douban.com/typerank* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // ==/UserScript== (function() { 'use strict'; var style = document.createElement("style"); style.type = "text/css"; style.appendChild(document.createTextNode(".collection_add{position: absolute;right: 0;bottom: 0;}")); style.appendChild(document.createTextNode(".collection_remove{position: absolute;right: 0;bottom: 0;}")); var head = document.getElementsByTagName("head")[0]; head.appendChild(style); function collection_add(_film_id){ return function(){ console.log("_film_id:"+_film_id); //delete(this.parentNode.parentNode.id); var action_url = 'https://movie.douban.com/j/subject/'+_film_id+'/interest'; var post_data = new FormData(); post_data.append('ck','BjvI'); post_data.append('interest','collect'); post_data.append('foldcollect','F') ; post_data.append('tags',''); post_data.append('comment',''); post_data.append('private',false) ; var XHR = new XMLHttpRequest(); var FD = new FormData(); // 把我们的数据添加到这个FormData对象中 //for(name in data) { // FD.append(name, data[name]); // } // 定义数据成功发送并返回后执行的操作 XHR.addEventListener('load', function(event) { console.log('Yeah! 已发送数据并加载响应。'); console.log(event); var btn_id = 'collection_'+_film_id; var btn = document.getElementById(btn_id); btn.innerHTML= "取消收藏:"+_film_id; btn.onclick =collection_remove (_film_id); }); // 定义发生错误时执行的操作 XHR.addEventListener('error', function(event) { alert('Oops! 出错了。'); }); // 设置请求地址和方法 XHR.open('POST',action_url); // 发送这个formData对象,HTTP请求头会自动设置 XHR.send(post_data); } } function collection_remove(_film_id){ return function(){ console.log("_film_id:"+_film_id); //delete(this.parentNode.parentNode.id); // var action_url = 'https://movie.douban.com/j/subject/'+_film_id+'/interest'; var action_url = 'https://movie.douban.com/subject/'+_film_id+'/remove'; var post_data = new FormData(); post_data.append('ck','BjvI'); //post_data.append('interest','collect'); //post_data.append('foldcollect','F') ; //post_data.append('tags',''); //post_data.append('comment',''); //post_data.append('private',false) ; var XHR = new XMLHttpRequest(); var FD = new FormData(); // 把我们的数据添加到这个FormData对象中 //for(name in data) { // FD.append(name, data[name]); // } // 定义数据成功发送并返回后执行的操作 XHR.addEventListener('load', function(event) { console.log('Yeah! 已发送数据并加载响应。'); console.log(event); var btn_id = 'collection_'+_film_id; var btn = document.getElementById(btn_id); btn.innerHTML= "点击收藏:"+_film_id; btn.onclick =collection_add (_film_id); }); // 定义发生错误时执行的操作 XHR.addEventListener('error', function(event) { alert('Oops! 出错了。'); }); // 设置请求地址和方法 XHR.open('POST',action_url); // 发送这个formData对象,HTTP请求头会自动设置 XHR.send(post_data); } } setTimeout(function(){ var listDomByClass = document.getElementsByClassName('pictext'); var listDom = listDomByClass[0]; var film_id_arr = []; var domChildNodes = listDom.childNodes; for(var i = 0; i < domChildNodes.length;i++){ var _film_url = domChildNodes[i].getElementsByTagName("a")[0].href; var _film_id =_film_url.match(/[0-9]+/)[0]; var btn =document.createElement("button"); btn.id = 'collection_'+_film_id; if(domChildNodes[i].className.indexOf('unwatched')== -1){ btn.innerHTML= "取消收藏:"+_film_id; btn.onclick =collection_remove (_film_id); btn.className = 'collection_remove'; }else{ btn.innerHTML= "点击收藏:"+_film_id; btn.onclick =collection_add (_film_id); btn.className = 'collection_add'; } domChildNodes[i].appendChild(btn); } // Your code here... },3000); })();