// ==UserScript== // @name Gazelle Music Tracker Autofill from torrent // @name:zh GMTI:Gazelle框架音乐PT上传自动填充助手 // @name:zh-CN GMTI:Gazelle框架音乐PT上传自动填充助手 // @name:zh-TW GMTI:Gazelle框架音樂PT上傳自動填充助手 // @version 1.7 // @description Attempt to read the .torrent file and fill in the artist and album // @description:zh 通过分析上传的torrent文件来自动填充歌手和专辑,歌曲列表等信息. // @description:zh-CN 通过分析上传的torrent文件来自动填充歌手和专辑,歌曲列表等信息. // @description:zh-TW 通過分析上傳的torrent文件來自動填充歌手和專輯,歌曲列表等信息. // @author Chameleon // @include http*://redacted.ch/upload.php* // @include http*://orpheus.network/upload.php* // @include http*://dicmusic.club/upload.php* // @include http*://konor.net/upload.php* // @grant none // @run-at document-idle // @namespace https://greasyfork.org/users/87476 // @downloadURL https://update.greasyfork.icu/scripts/380672/Gazelle%20Music%20Tracker%20Autofill%20from%20torrent.user.js // @updateURL https://update.greasyfork.icu/scripts/380672/Gazelle%20Music%20Tracker%20Autofill%20from%20torrent.meta.js // ==/UserScript== (function() { 'use strict'; var a=document.createElement('a'); a.innerHTML = 'Auto-fill from torrent: On'; if(window.location.href.indexOf('groupid=') != -1) a.innerHTML = 'Auto-fill from torrent: Off'; a.href='javascript:void(0);'; a.addEventListener('click', toggle.bind(undefined, a), false); a.setAttribute('style', 'display: block; text-align: center;'); var before=document.getElementById('upload_table'); before.parentNode.insertBefore(a, before); var format=document.getElementById('format'); var bitrate=document.getElementById('bitrate'); document.getElementById('file').addEventListener('change', fileAdded.bind(undefined, a, format, bitrate, true), false); addToExisting(a); // select the target node var target = document.getElementById('upload_table'); // create an observer instance var observer = new MutationObserver(addedToTable.bind(undefined, a)); // configuration of the observer: var config = { childList: true, subtree: true }; // pass in the target node, as well as the observer options observer.observe(target, config); })(); function addToExisting(a) { var tr=document.getElementById('extra_format_row_1'); var index=1; while(tr) { var input=tr.getElementsByTagName('input')[0]; var format=tr.getElementsByTagName('select'); var bitrate=format[1]; format=format[0]; input.addEventListener('change', fileAdded.bind(undefined, a, format, bitrate, false), false); index++; tr=document.getElementById('extra_format_row_'+index); } } function addedToTable(a, mutations) { for(var i=0; i 1) artist=artist[1]; else artist=artist[0]; document.getElementById('artist').value=artist; var album=spl[1].split(' (')[0].split(' [')[0].split(' {')[0].replace(/.torrent$/, ''); document.getElementById('title').value=album; var yadg=document.getElementById('yadg_input'); if(yadg) { yadg.value=artist+' '+album; document.getElementById('yadg_submit').click(); } } var f=file.name.toLowerCase(); var formatTemp=-1; var bitrateTemp=-1; var mediaTemp=-1; if(f.indexOf('mp3') != -1) { formatTemp=1; } else if(f.indexOf('flac') != -1) { formatTemp=2; bitrateTemp=9; } else if(f.indexOf('aac') != -1) { formatTemp=3; } else if(f.indexOf('ac3') != -1) { formatTemp=4; } else if(f.indexOf('dts') != -1) { formatTemp=5; } if(f.indexOf('v0') != -1) { bitrateTemp=7; formatTemp=1; } else if(f.indexOf('v1') != -1) { bitrateTemp=4; formatTemp=1; } else if(f.indexOf('v2') != -1) { bitrateTemp=3; formatTemp=1; } else if(f.indexOf('192') != -1) { bitrateTemp=1; formatTemp=1; } else if(f.indexOf('256') != -1) { bitrateTemp=5; formatTemp=1; } else if(f.indexOf('320') != -1) { bitrateTemp=8; formatTemp=1; } var media=document.getElementById('media'); if(f.indexOf('dvd') != -1) { mediaTemp=2; } else if(f.indexOf('vinyl') != -1) { mediaTemp=3; } else if(f.indexOf('soundboard') != -1) { mediaTemp=4; } else if(f.indexOf('sacd') != -1) { mediaTemp=5; } else if(f.indexOf('dat') != -1) { mediaTemp=6; } else if(f.indexOf('cassette') != -1) { mediaTemp=7; } else if(f.indexOf('web') != -1) { mediaTemp=8; } else if(f.indexOf('blu-ray') != -1 || f.indexOf('bluray') != -1) { mediaTemp=9; } else mediaTemp=1; if(formatTemp != -1) { format.selectedIndex=formatTemp; triggerChange(format); } if(bitrateTemp != -1) { bitrate.selectedIndex=bitrateTemp; triggerChange(bitrate); } if(mediaTemp != -1) { media.selectedIndex=mediaTemp; triggerChange(media); } var r=new FileReader(); r.onload=readFile; r.readAsText(file); } function readFile(event) { var contents=event.target.result; //console.log(contents); var paths=contents.split('piece length')[0].split('filesld')[1].split(':path'); var desc=document.getElementById('album_desc'); if(desc.value !== '') return; var extensions=[]; var tracks=[]; for(var i=1; i highCount) { highCount=extensions[i].count; index=i; } } var finalTracks=[]; for(var i=0; i