// ==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);
}
}
}