CreateFlickrImageLinks
by
griefworker
2010-07-08 [2010/07/08 03:50:18]
Flickr に保存した画像をブログに貼り付けるためのタグを生成
-
/*
* @title CreateFlickrImageLinks
* @description Flickr に保存した画像をブログに貼り付けるためのタグを生成
* @license MIT License
* @require
*/
(function() {
var textArea = document.createElement("textarea");
textArea.setAttribute("cols", 100);
textArea.setAttribute("rows", 20);
document.getElementsByTagName("body")[0].appendChild(textArea);
function createOriginalImageLinks(doc) {
var list = doc.getElementsByTagName("img");
for (var i = 0; i < list.length; i++) {
var img = list[i];
var href = img.getAttribute("src");
var m = href.match(/(^.+static\.flickr\.com.+\/)([0-9]+)_[0-9a-f]{10}_?.?\.jpg/);
if (m && m[2]) {
var imgId = m[2];
href = 'http://www.flickr.com/photo_zoom.gne?id=' + imgId + '&size=o';
lookup(href, createOnLookup(imgId, img));
}
}
}
function createRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch(ex) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
return null;
}
}
function createOnLookup(startUrl, img){
return function parseResult(res) {
var re = new RegExp('<img src="([^"]+' + startUrl + '.+\.jpg)"');
var m = res.responseText.match(re);
if (m) {
var a = '<a href="http://www.flickr.com/photos/username/' + startUrl + '/"><img src="' + m[1] + '"></a>';
textArea.value = textArea.value + a + "\n";
}
}
}
function lookup(url, onLookup){
var req = createRequest();
//req.setRequestHeader('Referer', 'http://www.flickr.com/photos/');
req.onreadystatechange = function(){
if (req.readyState == 4 && req.status == 200){
onLookup(req);
}
}
req.open('GET', url, true);
req.send(null);
}
createOriginalImageLinks(document);
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。