您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a 'Download CSV' button to the personal ratings page in Rotten Tomatoes which downloads a Letterboxd compatible CSV file.
- // ==UserScript==
- // @name Rotten Tomatoes export CSV button
- // @namespace
- // @version 0.4
- // @description Adds a 'Download CSV' button to the personal ratings page in Rotten Tomatoes which downloads a Letterboxd compatible CSV file.
- // @author Guy Hizkiau
- // @match https://www.rottentomatoes.com/user/id/*/ratings
- // @grant none
- // @namespace https://greasyfork.org/users/72895
- // ==/UserScript==
- String.prototype.replaceAll = function(search, replacement) {
- var target = this;
- return target.replace(new RegExp(search, 'g'), replacement);
- };
- var ratingBoxes = document.getElementsByClassName("media bottom_divider");
- var ratingsArray = [];
- for (var i = ratingBoxes.length - 1; i >= 0; i--) {
- var boxBody = ratingBoxes[i].getElementsByClassName("media-body")[0];
- var boxHeading = boxBody.getElementsByClassName("media-heading")[0];
- var titleA = boxHeading.getElementsByTagName("a")[0];
- var title = titleA.textContent.replaceAll(",", "");
- var yearSpan = boxHeading.getElementsByTagName("span")[0];
- var year = yearSpan.textContent.substring(1,5);
- var ratingDiv = boxBody.getElementsByTagName("div")[2];
- var ratingValueWholes = ratingDiv.childElementCount;
- var ratingValueHalves = ratingDiv.innerText;
- var ratingLog = boxBody.getElementsByClassName("ratingMovieDate")[0].textContent;
- var ratingDateVerbal = ratingLog.substring(0,ratingLog.indexOf("ago")-1).split(" ");
- var ratingDate = new Date();
- if (ratingDateVerbal[1] == "days") {
- ratingDate.setDate(ratingDate.getDate()-ratingDateVerbal[0]);
- var ratingDateFormated = ratingDate.getFullYear() + '-' + (ratingDate.getMonth()+1) + '-' + ratingDate.getDate();
- } else if (ratingDateVerbal[1] == "months") {
- ratingDate.setMonth(ratingDate.getMonth()-ratingDateVerbal[0]);
- var ratingDateFormated = ratingDate.getFullYear() + '-' + (ratingDate.getMonth()+1) + '-' + 1;
- } else if (ratingDateVerbal[1] == "years") {
- ratingDate.setFullYear(ratingDate.getFullYear()-ratingDateVerbal[0]);
- var ratingDateFormated = ratingDate.getFullYear() + '-' + 1 + '-' + 1;
- }
- if (ratingValueHalves == "½") {
- var ratingValue = ratingValueWholes + 0.5;
- }
- else {
- var ratingValue = ratingValueWholes;
- }
- ratingsArray.push([title, year, ratingDateFormated, ratingValue]);
- }
- var csvContent = "data:text/csv;charset=utf-8,";
- csvContent += "Title,Year,WatchedDate,Rating\n"
- ratingsArray.forEach(function(infoArray, index){
- dataString = infoArray.join(",");
- csvContent += index < ratingsArray.length ? dataString + "\n" : dataString;
- });
- var encodedUri = encodeURI(csvContent);
- var link = document.createElement("a");
- link.setAttribute("href", encodedUri);
- link.setAttribute("download", "rotten_tomatoes_ratings.csv");
- document.body.appendChild(link); // Required for FF
- var pageBody = document.getElementById("main_container").children[1].children[1];
- function download() {
- link.click();
- return;
- }
- var downloadButton = document.createElement("button");
- var buttonText = document.createTextNode("Download CSV");
- downloadButton.appendChild(buttonText);
- downloadButton.classList.add("panel-heading");
- downloadButton.onclick = download;
- pageBody.insertBefore(downloadButton, pageBody.children[0]);