您需要先安装一个扩展,例如 篡改猴、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.22
- // @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) {
- 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<length && $(this).html().indexOf("Ep "+aeps[f]) == 0){
- 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));
- return false;
- }
- x++
- });
- } catch (error) {
- if(error.status != null) console.error("Request failed with error code", error.status, ". Message is ", error.responseText);
- }
- }
- }
- if(endYear.length == id.length){
- console.log("Last Stage");
- 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) setTimeout(function(){console.log("The End -> verify in the Network tab that all edit requests returned a status of 200");}, 500);
- },
- error: function(){
- console.log("Something went wrong");
- }
- });
- }
- }
- }
- });