// ==UserScript== // @name Upload image from upload page // @version 1.7 // @description Upload album art from within the PTH upload page // @author Chameleon // @include http*://*redacted.ch/upload.php* // @include http*://*redacted.ch/forums.php*threadid=1725* // @include http*://*redacted.ch/artist.php*action=edit* // @include http*://*redacted.ch/torrents.php*action=editgroup* // @grant GM_xmlhttpRequest // @namespace https://greasyfork.org/users/87476 // @downloadURL https://update.greasyfork.icu/scripts/25768/Upload%20image%20from%20upload%20page.user.js // @updateURL https://update.greasyfork.icu/scripts/25768/Upload%20image%20from%20upload%20page.meta.js // ==/UserScript== unsafeWindow.Categories=function c(){ ajax.get('ajax.php?action=upload_section&categoryid=' + $('#categories').raw().value, function (response) { $('#dynamic_form').raw().innerHTML = response; initMultiButtons(); // Evaluate the code that generates previews. eval($('#dynamic_form script.preview_code').html()); showUpload(); }); }; (function() { 'use strict'; var settings=getSettings(); if(settings.showSettings) showSettings(); if(window.location.href.indexOf("threadid=1725") != -1) showSettings(); else if(window.location.href.indexOf('upload.php') != -1) { showUpload(); } else if(window.location.href.indexOf('artist.php') != -1 || window.location.href.indexOf('torrents.php') != -1) { showArtistEdit(); } }()); function showSettings(message) { var div=document.getElementById('rehostToSettings'); if(!div) { var before = document.getElementsByClassName('forum_post')[0]; if(!before) before=document.getElementsByTagName('table')[1]; if(!before) before=document.getElementsByClassName('box')[0]; div = document.createElement('div'); div.setAttribute('id', 'rehostToSettings'); before.parentNode.insertBefore(div, before); div.setAttribute('style', 'width: 100%; text-align: center; padding-bottom: 10px;'); div.setAttribute('class', 'box'); } div.innerHTML = '

Upload image from upload page Settings


'; var settings = getSettings(); var a=document.createElement('a'); a.href='javascript:void(0);'; a.innerHTML = 'Use image host: '+settings.site; a.addEventListener('click', changeSite.bind(undefined, a, div), false); div.appendChild(a); div.appendChild(document.createElement('br')); var a=document.createElement('a'); a.href='javascript:void(0);'; a.innerHTML = 'Show settings on upload page: '+(settings.showSettings ? 'true':'false'); a.addEventListener('click', changeShowSettings.bind(undefined, a, div), false); div.appendChild(a); div.appendChild(document.createElement('br')); var labelStyle = ''; var label = document.createElement('span'); label.setAttribute('style', labelStyle); label.innerHTML = 'ptpimg.me API Key: '; div.appendChild(label); var input=document.createElement('input'); input.setAttribute('style', 'width: 21em;'); input.placeholder='ptpimg.me API Key'; input.value = settings.apiKey ? settings.apiKey:''; div.appendChild(input); input.addEventListener('keyup', changeSettings.bind(undefined, div), false); var a=document.createElement('a'); a.href='javascript:void(0);'; a.innerHTML = 'Get ptpimg.me API Key'; div.appendChild(document.createElement('br')); div.appendChild(a); div.appendChild(document.createTextNode(' ')); var s=document.createElement('span'); s.innerHTML = message ? message : ''; div.appendChild(s); a.addEventListener('click', getAPIKey.bind(undefined, input, s, div), false); } function getAPIKey(input, span, div) { span.innerHTML = 'Loading ptpimg.me'; /*var xhr=new XMLHttpRequest(); xhr.open('GET', "https://ptpimg.me"); xhr.onreadystatechange = xhr_func.bind(undefined, span, xhr, gotAPIKey.bind(undefined, input, span, div), rehost.bind(undefined, input, span, div)); xhr.send();*/ GM_xmlhttpRequest({ method: "GET", url: 'https://ptpimg.me', onload: function(response) { if(response.status == 200) {gotAPIKey(input, span, div, response.responseText); } else { span.innerHTML = 'ptpimg.me error: '+response.status; } } }); } function gotAPIKey(input, span, div, response) { var key=response.split("value='")[1].split("'")[0]; if(key.length != 36) { span.innerHTML = "You aren't logged in to ptpimg.me"; return; } input.value=key; changeSettings(div, 0, "Successfully added API Key"); } function changeSite(a, div) { if(a.innerHTML.indexOf('imgur.com') != -1) { a.innerHTML = a.innerHTML.replace('imgur.com', 'ptpimg.me'); } else if(a.innerHTML.indexOf('ptpimg.me') != -1) { a.innerHTML = a.innerHTML.replace('ptpimg.me', 'imgur.com'); } changeSettings(div); } function changeShowSettings(a, div) { if(a.innerHTML.indexOf('false') != -1) a.innerHTML = a.innerHTML.replace('false', 'true'); else a.innerHTML = a.innerHTML.replace('true', 'false'); changeSettings(div); } function changeSettings(div, nul, message) { var settings = getSettings(); var as=div.getElementsByTagName('a'); if(as[0].innerHTML.indexOf('imgur.com') != -1) settings.site = 'imgur.com'; else if(as[0].innerHTML.indexOf('ptpimg.me') != -1) settings.site = 'ptpimg.me'; if(as[1].innerHTML.indexOf('false') != -1) settings.showSettings=false; else settings.showSettings=true; var inputs=div.getElementsByTagName('input'); settings.apiKey = inputs[0].value; window.localStorage.ptpimgAPIKey = settings.apiKey; window.localStorage.uploadFromUploadPageSettings = JSON.stringify(settings); showSettings(message); } function getSettings() { var settings = window.localStorage.uploadFromUploadPageSettings; if(!settings) { settings = {site:'imgur.com', apiKey:window.localStorage.ptpimgAPIKey ? window.localStorage.ptpimgAPIKey : ''}; } else settings = JSON.parse(settings); return settings; } function showArtistEdit() { var image=document.getElementsByName('image')[0]; var div=document.createElement('div'); image.parentNode.insertBefore(div, image); div.appendChild(image); image.setAttribute('id', 'image'); showUpload(); } function showUpload() { var imageInput = document.getElementById('image'); var parent = imageInput.parentNode; if(imageInput.parentNode.innerHTML.indexOf('Auto-rehost') == -1) { var span=document.createElement('span'); var a=document.createElement('a'); a.href='javascript:void(0);'; a.innerHTML = 'Auto-rehost: Off'; a.addEventListener('click', toggleAutoRehost.bind(undefined, a, imageInput, span), false); parent.appendChild(document.createTextNode(' ')); parent.appendChild(a); parent.appendChild(document.createTextNode(' ')); parent.appendChild(span); if(window.localStorage.autoUpload == "true") { imageInput.setAttribute('autorehost', 'true'); a.innerHTML = 'Auto-rehost: On'; } imageInput.addEventListener('keyup', rehost.bind(undefined, imageInput, span), false); } var file = document.createElement('input'); file.type='file'; parent.appendChild(file); var status = document.createElement('div'); parent.appendChild(status); file.addEventListener('change', uploadFile.bind(undefined, status), false); file.accept="image/*"; var dropzone = document.createElement('div'); parent.appendChild(dropzone); dropzone.addEventListener("dragenter", dragenter, false); dropzone.addEventListener("dragover", dragenter, false); dropzone.addEventListener("drop", drop.bind(undefined, status), false); dropzone.innerHTML = 'Or drop files here'; dropzone.setAttribute('style', 'width: 400px; height: 30px; background: rgba(64,64,64,0.8); border: dashed; border-radius: 10px; margin: auto; text-align: center; font-size: 20px;'); } function dragenter(event) { event.preventDefault(); event.stopPropagation(); } function drop(status, event) { event.preventDefault(); event.stopPropagation(); var dt = event.dataTransfer; var files = dt.files; uploadFile(status, {target:{files:files}}); } function rehost(imageInput, span) { if(imageInput.getAttribute('autorehost') != "true") return; var whitelisted = ["imgur.com", "ptpimg.me"]; if(imageInput.value.length < 1) return; for(var i=0; iretrying in 1 second'; window.setTimeout(repeatFunc, 1000); } } }