Show direct links to download original Flickr image and some other sizes.
目前為
// ==UserScript==
// @name Flickr Original Link
// @namespace https://greasyfork.org/scripts/1190-flickr-original-link
// @include http://*.flickr.com/photos/*
// @include https://*.flickr.com/photos/*
// @version 4.1
// @grant none
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
// @description Show direct links to download original Flickr image and some other sizes.
// ==/UserScript==
var action_singlephoto = function() {
var size = document.documentElement.innerHTML.match(/"sizes":{(.+?})}/i);
var mWidth, mHeight, mLink, mSize, length;
var strCss = ".bigButton {display : inline-block; cursor : pointer; border-style : solid; border-width : 2px; border-radius : 50px; padding : 15px 15px; font-size : 10pt; font-weight : bold;} .smallButton { display: inline-block; padding: 0.6em; margin: 0.4em; background-color: pink; border-radius:1.5em;font-size:10pt}";
mSize = size[0].match(/"width":"?\d+"?,"height":"?\d+"?,/ig);
mLink = size[0].match(/"url":"[^"]+"/ig);
length = mLink.length;
for (var k = 0; k < length; k++) {
mSize[k] = mSize[k].replace(/"width":(\d+),"height":(\d+),/i, "$1 x $2");
mLink[k] = "http:" + mLink[k].replace(/"url":"([^"]+)"/i, "$1").replace(/\\/g, "").replace(/\.jpg/i, "_d.jpg");
}
$('head').append('<style>' + strCss + '</style>');
var insertLocation = $('.sub-photo-right-row1');
if (insertLocation.length > 0) {
insertLocation.append('<a class="bigButton" href="' + mLink[length - 1] + '">DOWNLOAD ' + mSize[length - 1] + ' px</a>');
for (var k = 0; k < 7; k++) {
if (length - k - 2 > 0) insertLocation.append('<a class="smallButton" href="' + mLink[length - 2 - k] + '">' + mSize[length - 2 - k] + ' px</a>');
}
}
}
var source = "";
var pageType = function() {
var title = $('head title').text();
var type = "none";
if (title.match(/flickr.+photostream/i) != null) type = 'photostream';
else if (title.match(/an album on flickr/i) != null) type = 'photostream';
else if (title.match(/flickr - photo sharing/i) != null) type = 'singlephoto';
console.log("Type = " + type);
return type;
}
var flickr_mouseenter = function() {
if ($(this).find('#myFuckingLink').length > 0) return;
var photoId = $(this).find('img').attr('id').split("_").pop();
for (var i = 0; i < source.length; i++) {
if (source[i].indexOf(photoId) == 8) {
var link = source[i].match(/https?[^"]+/)[0].replace(/\\/g, "").replace(/\.jpg/, "_d.jpg").replace(/https/, "http");
var size = source[i].replace(/.+"width":"?(\d+)"?,"height":"?(\d+)"?.*/, "$1 x $2 px");
$(this).find('.attribution-block').append('<div id="myFuckingLink"><a href="' + link + '">GET ' + size + '</a>');
break;
}
}
}
var action_photostream = function() {
source = document.documentElement.innerHTML.match(/"file":"[^}]+}}/g);
if (source == null) return;
var t1 = $('a[data-track="prev"]').attr('href');
if (t1 != null) {
var t2 = $('span.this-page').text();
t1 = t1.replace(/\/page\d+\//i, "/page" + t2 + "/");
var $div = $('<div>');
$div.load(t1, function() {
var source2 = $(this).text().match(/"file":"[^}]+}}/g);
source = source.concat(source2);
});
}
$('body').bind('DOMNodeInserted', function() {
$('.hover-target').mouseenter(flickr_mouseenter);
});
}
var type = pageType();
if (type == 'photostream') action_photostream();
else if (type == 'singlephoto') action_singlephoto();
else if (type == 'album') action_album();