您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Script that fixes your Start/Finish Dates on MAL
当前为
// ==UserScript== // @name MAL Date Fix // @namespace Fix your dates on MAL // @version 1.2 // @description Script that fixes your Start/Finish Dates on MAL // @author NurarihyonMaou // @match https://anime.plus/*/history,anime // @match https://myanimelist.net/ownlist/* // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @require http://code.jquery.com/jquery-3.5.1.min.js // ==/UserScript== var $ = window.jQuery; var id = []; var startDay = []; var startMonth = []; var startYear = []; var endDay = []; var endMonth = []; var endYear = []; var csrf_token; var how_much, startDate, endDate; let aeps = [], astatus = [], status = [], num_watched_episodes = [], score = [], tags = [], priority = [], storage_type = [], storage_value = [], num_watched_times = [], rewatch_value = [], comments = [], is_asked_to_discuss = [], sns_post_type = [], is_rewatching = [], submitIt = []; $(window).ready(async () => { function SendGetRequest(url) { return new Promise((resolve, reject) => { GM_xmlhttpRequest({ method: "GET", url: url, onload: function(response) { resolve(response.responseText); }, onerror: function(error) { reject(error); } }); }); } if (window.location.pathname.split('/')[2] === 'history,anime') { $('a.entries-trigger')[0].click(); how_much = parseInt($('a.entries-trigger').text()); console.log("Start"); $('#month-unknown ul li a').each(function(){ id.push(parseInt($(this).attr('href').slice(30))); }); if(id.length == how_much){ GM_setValue('id', id); document.location = "https://myanimelist.net/ownlist/anime/"+id[0]+"/edit"; } } if (window.location.pathname.split('/')[1] === 'ownlist'){ id = GM_getValue('id'); csrf_token = $("meta[name='csrf_token']").attr('content'); for (let i = 0; i < id.length; i++) { console.log("Getting info about " + (i + 1) + " Title"); try { const response = await SendGetRequest("https://myanimelist.net/ownlist/anime/"+id[i]+"/edit"); $(response).find("#main-form :input").each(function(x) { if (x == 1) aeps.push($(this).val()); if (x == 2) astatus.push($(this).val()); if (x == 3) status.push($(this).val()); if (x == 4) is_rewatching.push($(this).val()); if (x == 5) num_watched_episodes.push($(this).val()); if (x == 6) score.push($(this).val()); if (x == 15) tags.push($(this).val()); if (x == 16) priority.push($(this).val()); if (x == 17) storage_type.push($(this).val()); if (x == 18) storage_value.push($(this).val()); if (x == 19) num_watched_times.push($(this).val()); if (x == 20) rewatch_value.push($(this).val()); if (x == 21) comments.push($(this).val()); if (x == 22) is_asked_to_discuss.push($(this).val()); if (x == 23) sns_post_type.push($(this).val()); }); } catch (error) { // in case the GET request fails if(error.status != null) console.error("Request failed with error code", error.status, ". Message is ", error.responseText); } } if(aeps.length == id.length){ for(let f = 0; f<id.length; f++){ console.log("Getting date of " + (f + 1) + " Title"); try { const response = await SendGetRequest("https://myanimelist.net/ajaxtb.php?keepThis=true&detailedaid=" +id[f] +"&TB_iframe=true&height=420&width=390"); var length = $(response).find('.spaceit_pad').length; $($(response).find('.spaceit_pad').get().reverse()).each(function (x) { if (x == 0){ startDate = $(this).html().match(/\d{2}([\/.-])\d{2}\1\d{4}/g); startDate = startDate.toString(); startDay.push(parseInt(startDate.split('/')[1],10)); startMonth.push(parseInt(startDate.split('/')[0],10)); startYear.push(parseInt(startDate.split('/')[2],10)); } if (x == aeps[f]-1){ endDate = $(this).html().match(/\d{2}([\/.-])\d{2}\1\d{4}/g); endDate = endDate.toString(); endDay.push(parseInt(endDate.split('/')[1],10)); endMonth.push(parseInt(endDate.split('/')[0],10)); endYear.push(parseInt(endDate.split('/')[2],10)); } if(f == id.length-1 && x == length-1){ console.log("Last Stage"); } }); } catch (error) { // in case the GET request fails if(error.status != null) console.error("Request failed with error code", error.status, ". Message is ", error.responseText); } } } if(startDate.length > id.length){ for(let e = 0; e<id.length; e++){ $.ajax({ method: 'POST', url: 'https://myanimelist.net/ownlist/anime/'+id[e]+'/edit', data: { 'anime_id': id[e], 'aeps': aeps[e], 'astatus': astatus[e], 'add_anime[status]': status[e], 'add_anime[num_watched_episodes]': num_watched_episodes[e], 'add_anime[score]': score[e], 'add_anime[start_date][month]': startMonth[e], 'add_anime[start_date][day]': startDay[e], 'add_anime[start_date][year]': startYear[e], 'add_anime[finish_date][month]': endMonth[e], 'add_anime[finish_date][day]': endDay[e], 'add_anime[finish_date][year]': endYear[e], 'add_anime[tags]': tags[e], 'add_anime[priority]': priority[e], 'add_anime[storage_type]': storage_type[e], 'add_anime[storage_value]': storage_value[e], 'add_anime[num_watched_times]': num_watched_times[e], 'add_anime[rewatch_value]': rewatch_value[e], 'add_anime[comments]': comments[e], 'add_anime[is_asked_to_discuss]': is_asked_to_discuss[e], 'add_anime[sns_post_type]': sns_post_type[e], 'submitIt': 0, 'csrf_token': csrf_token }, complete: function(){ console.log("Successfully updated "+(e+1)+" Title"); if(e == id.length-1) console.log("The End"); }, error: function(){ console.log("Something went wrong"); } }); } } } });