「flickr.dms」の版間の差分
提供: Yourpedia
| 1行目: | 1行目: | ||
| − | [[Irvine]]を使って[[Flickr]]の静止画を落とすためのスクリプト(動画には非対応)。「All Sizes」のページが無かったり、有っても「The owner has disabled downloading of their photos」(本オーナーは本画像のDLを拒否する)の標記が有る画像<del>には使えない</del>にも使える( | + | [[Irvine]]を使って[[Flickr]]の静止画を落とすためのスクリプト(動画には非対応)。「All Sizes」のページが無かったり、有っても「The owner has disabled downloading of their photos」(本オーナーは本画像のDLを拒否する)の標記が有る画像<del>には使えない</del>にも使える(出来るだけ大きい画像、VGA~XGA、2012年12月以降に送信された画像は最大長辺2048ピクセルまで)(2007年2月28日以前に送信された画像はほぼ無条件に本画像をDLする)様に改良。 |
| − | #[ | + | #[http://mxmkitchen.com/2009/03/13/2357.php ここ]からIrvineとDorothy2.zipをDL、インストールする |
#「(Irvineが有るフォルダ)¥Dorothy2¥program¥flickr.dms」を以下の内容で上書きする | #「(Irvineが有るフォルダ)¥Dorothy2¥program¥flickr.dms」を以下の内容で上書きする | ||
#Irvineを起動後、上記サイトに出てる設定を行う | #Irvineを起動後、上記サイトに出てる設定を行う | ||
| 8行目: | 8行目: | ||
//Dorothy2 | //Dorothy2 | ||
//caption=Flickr | //caption=Flickr | ||
| − | //version=0. | + | //version=0.08 |
//hint=「All Sizes」ボタンがあるページのURLを渡してください | //hint=「All Sizes」ボタンがあるページのURLを渡してください | ||
//match=http://www.flickr.com/photos/ | //match=http://www.flickr.com/photos/ | ||
| 22行目: | 22行目: | ||
//modified 30,Jan.,2011 by Abcdefgh | //modified 30,Jan.,2011 by Abcdefgh | ||
//modified 2,Apr.,2011 by Abcdefgh | //modified 2,Apr.,2011 by Abcdefgh | ||
| + | //modified 1,Oct.,2013 by Abcdefgh | ||
function(){ | function(){ | ||
| 27行目: | 28行目: | ||
// 渡されたURLをALL SIZESページのURLに変換 | // 渡されたURLをALL SIZESページのURLに変換 | ||
| − | var title = urlinfo.url.match(/.+photos\/[^\/]+\/[0-9]+ | + | var title = urlinfo.url.match(/.+photos\/[^\/]+\/[0-9]+/)[0]; |
if (!title) { | if (!title) { | ||
println('error---> ALL SIZESページURLが見つかりません'); | println('error---> ALL SIZESページURLが見つかりません'); | ||
exit(); | exit(); | ||
} | } | ||
| − | title + | + | title2 = title + '/sizes/o'; |
| + | title3 = title + '/sizes/k'; | ||
| − | var url = new URL( | + | var url = new URL(title2); |
urlinfo.url = url.url; | urlinfo.url = url.url; | ||
headers.host = url.host; | headers.host = url.host; | ||
| 40行目: | 42行目: | ||
// ALL SIZESページをダウンロード | // ALL SIZESページをダウンロード | ||
common_load('download'); | common_load('download'); | ||
| − | var http = download(urlinfo.url | + | var http = download(urlinfo.url); |
| − | if(http.responseHeader.code != 200){ | + | if( (http.responseHeader.code != 200) && (http.responseHeader.code != 302) ){ |
return retry('error--->' + http.responseHeader.code); | return retry('error--->' + http.responseHeader.code); | ||
| + | } | ||
| + | if(http.responseHeader.code == 302){ | ||
| + | var url = new URL(title3); | ||
| + | urlinfo.url = url.url; | ||
| + | headers.host = url.host; | ||
| + | |||
| + | // 最大画素数プレビューページをダウンロード | ||
| + | common_load('download'); | ||
| + | var http = download(urlinfo.url,true); | ||
| + | if(http.responseHeader.code != 200){ | ||
| + | return retry('error--->' + http.responseHeader.code); | ||
| + | } | ||
} | } | ||
//画像URLを取得 | //画像URLを取得 | ||
| − | if (!http.data.match(/<a href=\"([^"]+_?[ | + | if (!http.data.match(/<a href=\"([^"]+_?[mbhkoz]?_d[.][^"]+)/)) { |
// このページはオリジナルサイズではない | // このページはオリジナルサイズではない | ||
if (!http.data.match(/<img src=\"([^"]+farm[^"]+)/)) { | if (!http.data.match(/<img src=\"([^"]+farm[^"]+)/)) { | ||
| 55行目: | 69行目: | ||
var title=RegExp.$1; | var title=RegExp.$1; | ||
| − | if ( (!title.match(/_[ | + | if ( (!title.match(/_[mbdhkoz][.]/)) ){ |
var title = title.replace(/[.]jpg/ , "_z.jpg"); | var title = title.replace(/[.]jpg/ , "_z.jpg"); | ||
} | } | ||
//単純変換が可能か否かを調査 | //単純変換が可能か否かを調査 | ||
| − | var title2 = title.replace(/(_[ | + | var title2 = title.replace(/(_[mbhkoz])?((_d)?[.][^\/]+)$/ , "_o$2"); |
var url = new URL(title2); | var url = new URL(title2); | ||
urlinfo.url = url.url; | urlinfo.url = url.url; | ||
2013年9月29日 (日) 08:05時点における版
Irvineを使ってFlickrの静止画を落とすためのスクリプト(動画には非対応)。「All Sizes」のページが無かったり、有っても「The owner has disabled downloading of their photos」(本オーナーは本画像のDLを拒否する)の標記が有る画像には使えないにも使える(出来るだけ大きい画像、VGA~XGA、2012年12月以降に送信された画像は最大長辺2048ピクセルまで)(2007年2月28日以前に送信された画像はほぼ無条件に本画像をDLする)様に改良。
- ここからIrvineとDorothy2.zipをDL、インストールする
- 「(Irvineが有るフォルダ)¥Dorothy2¥program¥flickr.dms」を以下の内容で上書きする
- Irvineを起動後、上記サイトに出てる設定を行う
- 後は上記サイトの説明通り
//Dorothy2
//caption=Flickr
//version=0.08
//hint=「All Sizes」ボタンがあるページのURLを渡してください
//match=http://www.flickr.com/photos/
//author=nanasi
//path=program
//priority=500
//end
//rebooted 17,Dec.,2010 by Abcdefgh
//modified 18,Dec.,2010 by Abcdefgh
//modified 21,Dec.,2010 by Abcdefgh
//modified 23,Dec.,2010 by Abcdefgh
//modified 09,Jan.,2011 by Abcdefgh
//modified 30,Jan.,2011 by Abcdefgh
//modified 2,Apr.,2011 by Abcdefgh
//modified 1,Oct.,2013 by Abcdefgh
function(){
println('flickr.dms start');
// 渡されたURLをALL SIZESページのURLに変換
var title = urlinfo.url.match(/.+photos\/[^\/]+\/[0-9]+/)[0];
if (!title) {
println('error---> ALL SIZESページURLが見つかりません');
exit();
}
title2 = title + '/sizes/o';
title3 = title + '/sizes/k';
var url = new URL(title2);
urlinfo.url = url.url;
headers.host = url.host;
// ALL SIZESページをダウンロード
common_load('download');
var http = download(urlinfo.url);
if( (http.responseHeader.code != 200) && (http.responseHeader.code != 302) ){
return retry('error--->' + http.responseHeader.code);
}
if(http.responseHeader.code == 302){
var url = new URL(title3);
urlinfo.url = url.url;
headers.host = url.host;
// 最大画素数プレビューページをダウンロード
common_load('download');
var http = download(urlinfo.url,true);
if(http.responseHeader.code != 200){
return retry('error--->' + http.responseHeader.code);
}
}
//画像URLを取得
if (!http.data.match(/<a href=\"([^"]+_?[mbhkoz]?_d[.][^"]+)/)) {
// このページはオリジナルサイズではない
if (!http.data.match(/<img src=\"([^"]+farm[^"]+)/)) {
println('error---> 大きなサイズの画像が見つかりません');
exit();
}
}
var title=RegExp.$1;
if ( (!title.match(/_[mbdhkoz][.]/)) ){
var title = title.replace(/[.]jpg/ , "_z.jpg");
}
//単純変換が可能か否かを調査
var title2 = title.replace(/(_[mbhkoz])?((_d)?[.][^\/]+)$/ , "_o$2");
var url = new URL(title2);
urlinfo.url = url.url;
headers.host = url.host;
var rHeader = new Object;
rHeader['bytesRead'] = 1024;
common_load('test2_download');
var http = test2_download(urlinfo.url,false,rHeader);
if( (http.responseHeader.code != 200) && (http.responseHeader.code != 302) ){
return retry('error--->' + http.responseHeader.code);
}
if(http.responseHeader.code != 302){
title=title2;
}
var url = new URL(title);
urlinfo.url = url.url;
headers.host = url.host;
//ファイル名を抽出
if (!title.match(/([^\/?]+)([?].+)?$/)) {
println('error---> ファイル名が見つかりません');
exit();
}
Dorothy.fileName = RegExp.$1;
}