「flickr.dms」の版間の差分

提供: Yourpedia
移動: 案内検索
(ほぼ決定版)
(Mario Yonezawa (トーク) による編集を Abcdefgh による直前の版へ差し戻しました)
 
(2人の利用者による、間の21版が非表示)
1行目: 1行目:
[[Irvine]]を使って[[flickr]]の画像を落とすためのスクリプト。「All Sizes」のページが無かったり、有っても「The owner has disabled downloading of their photos」(本オーナーは本画像のDLを拒否する)の標記が有る画像<del>には使えない</del>にも使える(出来るだけ大きい画像、VGA以上)(2007年2月28日以前に送信された画像はほぼ無条件に本画像をDLする)様に改良。
+
[[Irvine]]を使って[[Flickr]]の静止画を落とすためのスクリプト(動画には非対応)。「All Sizes」のページが無かったり、有っても「The owner has disabled downloading of their photos」(本オーナーは本画像のDLを拒否する)の標記が有る画像<del>には使えない</del>にも使える(出来るだけ大きい画像、VGA~XGA、2012年12月以降に送信された画像は最大長辺2048ピクセルまで)(2007年2月28日以前に送信された画像はほぼ無条件に本画像をDLする)様に改良。
#[ttp://mxmkitchen.com/2009/03/13/2357.php ここ]からIrvineとDorothy2.zipを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.04
+
//version=0.08
 
//hint=「All Sizes」ボタンがあるページのURLを渡してください
 
//hint=「All Sizes」ボタンがあるページのURLを渡してください
//match=http://www.flickr.com/photos/
+
//match=https?://www.flickr.com/photos/
 
//author=nanasi
 
//author=nanasi
 
//path=program
 
//path=program
19行目: 19行目:
 
//modified 21,Dec.,2010 by Abcdefgh
 
//modified 21,Dec.,2010 by Abcdefgh
 
//modified 23,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
 +
//modified 25,Apr.,2015 by Abcdefgh
  
 
function(){
 
function(){
 
println('flickr.dms start');
 
println('flickr.dms start');
  
// 渡されたURLをALL SIZESボタンのリンク先に変換
+
// 渡されたURLをALL SIZESページのURLに変換
var title = urlinfo.url;
+
var title = urlinfo.url.match(/.+photos\/[^\/]+\/[0-9]+/)[0];
if (!title.match(/([^"]+photos[^0-9A-Za-z][0-9@A-Z_a-z]+[^0-9@A-Z_a-z][0-9]+[^0-9])/)) {
+
if (!title) {
println('error---> リンク先ページURLが見つかりません');
+
println('error---> ALL SIZESページURLが見つかりません');
 
exit();
 
exit();
 
}
 
}
var title = RegExp.$1 + 'sizes/o';
+
title2 = title + '/sizes/o';
if (!title.match(/[^"]+photos[^0-9A-Za-z]([0-9@A-Z_a-z]+)[^0-9@A-Z_a-z]([0-9]+)[^0-9]/)) {
+
title3 = title + '/sizes/k';
println('error---> ユーザ名・ファイル番号が見つかりません');
+
title4 = title + '/sizes/h';
exit();
+
}
+
var username = RegExp.$1;
+
var fileno = RegExp.$2;
+
  
var url = new URL(title);
+
var url = new URL(title2);
 
urlinfo.url = url.url;
 
urlinfo.url = url.url;
 
headers.host = url.host;
 
headers.host = url.host;
  
// ALL SIZESボタンのリンク先をダウンロード
+
// ALL SIZESページをダウンロード
 
common_load('download');
 
common_load('download');
 
var http = download(urlinfo.url);
 
var http = download(urlinfo.url);
48行目: 49行目:
 
}
 
}
 
if(http.responseHeader.code == 302){
 
if(http.responseHeader.code == 302){
//出来るだけ大きいサイズ(VGA~XGA)の画像のリンク(リダイレクト)先をダウンロード
+
var url = new URL(title3);
var url = new URL('http://www.flickr.com' + http.responseHeader.location);
+
 
urlinfo.url = url.url;
 
urlinfo.url = url.url;
 
headers.host = url.host;
 
headers.host = url.host;
 +
 +
// 最大画素数プレビューページをダウンロード
 
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(title4);
 +
urlinfo.url = url.url;
 +
headers.host = url.host;
 +
 +
// 最大画素数(1600)プレビューページをダウンロード
 +
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=\"([^"]+_?[boz]?_d[^"][a-z]+)\">/)) {
+
if (!http.data.match(/<a href=\"([^"]+_?[mbhkoz]?_d[.][^"]+)/)) {
 
// このページはオリジナルサイズではない
 
// このページはオリジナルサイズではない
if (!http.data.match(/<img src=\"([^"]+farm[^"]+)/)) {
+
if (!http.data.match(/<img src=\"([^"]+(static|farm)[^"]+)/)) {
 
println('error---> 大きなサイズの画像が見つかりません');
 
println('error---> 大きなサイズの画像が見つかりません');
 
exit();
 
exit();
69行目: 83行目:
 
var title=RegExp.$1;
 
var title=RegExp.$1;
 
 
if ( (!title.match(/_[bdoz][.]/)) ){
+
if ( (!title.match(/_[mbdhkoz][.]/)) ){
var title2 = title.replace(/[.]jpg/ , "_z.jpg");
+
var title = title.replace(/[.]jpg/ , "_z.jpg");
var title = title2;
+
 
}
 
}
if ( (fileno <= 405888551) && (username != 'mboogiedown') ){
+
//単純変換が可能か否かを調査
var title2 = title.replace(/_[bdz][.]/ , "_o.");
+
var title2 = title.replace(/(_[mbhkoz])?((_d)?[.][^\/]+)$/ , "_o$2");
var title = title2;
+
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);
 
var url = new URL(title);
 
 
urlinfo.url = url.url;
 
urlinfo.url = url.url;
 
headers.host = url.host;
 
headers.host = url.host;
  
if (!title.match(/[^"]+\/([0-9]+_[0-9a-f]+_[bdoz]_?d?[^"][a-z]+)/)) {
+
//ファイル名を抽出
println('error---> 画像ファイル名が見つかりません');
+
if (!title.match(/([^\/?]+)([?].+)?$/)) {
 +
println('error---> ファイル名が見つかりません');
 
exit();
 
exit();
 
}
 
}
var title=RegExp.$1;
+
Dorothy.fileName = RegExp.$1;
 
+
Dorothy.fileName = title;
+
 
+
 
}
 
}
 
</nowiki></pre>
 
</nowiki></pre>
  
 
[[Category:Irvine用スクリプト]]
 
[[Category:Irvine用スクリプト]]

2019年2月8日 (金) 21:03時点における最新版

Irvineを使ってFlickrの静止画を落とすためのスクリプト(動画には非対応)。「All Sizes」のページが無かったり、有っても「The owner has disabled downloading of their photos」(本オーナーは本画像のDLを拒否する)の標記が有る画像には使えないにも使える(出来るだけ大きい画像、VGA~XGA、2012年12月以降に送信された画像は最大長辺2048ピクセルまで)(2007年2月28日以前に送信された画像はほぼ無条件に本画像をDLする)様に改良。

  1. ここからIrvineとDorothy2.zipをDL、インストールする
  2. 「(Irvineが有るフォルダ)¥Dorothy2¥program¥flickr.dms」を以下の内容で上書きする
  3. Irvineを起動後、上記サイトに出てる設定を行う
  4. 後は上記サイトの説明通り
//Dorothy2
//caption=Flickr
//version=0.08
//hint=「All Sizes」ボタンがあるページのURLを渡してください
//match=https?://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
//modified 25,Apr.,2015 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';
	title4 = title + '/sizes/h';

	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);
		if( (http.responseHeader.code != 200) && (http.responseHeader.code != 302) ){
			return retry('error--->' + http.responseHeader.code);
		}
		if(http.responseHeader.code == 302){
			var url = new URL(title4);
			urlinfo.url = url.url;
			headers.host = url.host;

			// 最大画素数(1600)プレビューページをダウンロード
			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=\"([^"]+(static|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;
}