PCや土いじりやゲームやオモチャ、思いつくまま細切れネタを書き散らかす日記
iyoupapaが書いたコマネタ帳の文章は「Creative Commons 表示-継承 2.1 日本」ライセンスです。写真については私のFlickrで配布しています。
2009/09/19 追記
「[プログラミング]TomblooでdeviantARTからCC情報を付けてポストする | コマネタ帳」もご覧ください。
LDR+TomblooでTumblrしているんですが、せっかくCreative Commonsな画像をポストしても適切な情報が付加されないという勿体ない状態に。とりあえず、Flickrからのポストの時はCCライセンスの情報をAPIでもらってクレジットをつけてみるようにしました。せっかくなのでソースを晒しておきますが、ほとんどテストしていませんのでご注意ください。
まずは本体ファイル。tombloo/scriptフォルダに保存します。ファイル名はとりあえずFlickr.cc.jsにしています。本当はID番号とURIの関係は別のAPIで取得するべきなんですがサボってます、すみません。
addAround(
Tombloo.Service.extractors['Photo - Flickr'], 'extract',
function(proceed, args, target, methodName) {
return proceed(args).addCallback(function(ps){
switch (ps.license) {
case '1':
var dd = ps.date.split('-');
ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
+ ' Licensed under <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">CC-BY-NC-SA</a>.'
break;
case '2':
var dd = ps.date.split('-');
ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
+ ' Licensed under <a href="http://creativecommons.org/licenses/by-nc/2.0/">CC-BY-NC</a>.'
break;
case '3':
var dd = ps.date.split('-');
ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
+ ' Licensed under <a href="http://creativecommons.org/licenses/by-nc-nd/2.0/">CC-BY-NC-ND</a>.'
break;
case '4':
var dd = ps.date.split('-');
ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
+ ' Licensed under <a href="http://creativecommons.org/licenses/by/2.0/">CC-BY</a>.'
break;
case '5':
var dd = ps.date.split('-');
ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
+ ' Licensed under <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>.'
break;
case '6':
var dd = ps.date.split('-');
ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
+ ' Licensed under <a href="http://creativecommons.org/licenses/by-nd/2.0/">CC-BY-ND</a>.'
break;
}
return ps;
});
});
次に31_Tombloo.Service.extractors.jsを変更します。Tomblooを更新すると変更が上書きされるので避けたいのですが、この中で呼んでるgetInfo APIでライセンス情報が取れるので、とりあえずこちらを変更しました。いっそextractメソッド丸ごとFlickr.cc.jsに持ってくればいいのかな?
{
name : 'Photo - Flickr',
ICON : models.Flickr.ICON,
// 中略
extract : function(ctx){
var id = this.getImageId(ctx);
return new DeferredHash({
'info' : Flickr.getInfo(id),
'sizes' : Flickr.getSizes(id),
}).addCallback(function(r){
if(!r.info[0])
throw new Error(r.info[1].message);
var info = r.info[1];
var sizes = r.sizes[1];
var title = info.title._content;
ctx.title = title + ' on Flickr'
ctx.href = info.urls.url[0]._content;
return {
type : 'photo',
item : title,
itemUrl : sizes.pop().source,
author : info.owner.username,
authorUrl : ctx.href.extract('^(http://.*?flickr.com/photos/.+?/)'),
favorite : {
name : 'Flickr',
id : id,
},
// ここから追加
license : info.license,
date : info.dates.taken,
// ここまで追加
}
});
},
},
これでFlickrからポストすると、Descriptionに例えば「(c) 2008 iyoupapa Licensed under CC-BY-SA.」といった文字列が自動で設定されます。表記としてこれで正しいのか、全く自信がないのですが何もないよりいいんじゃないかな。
できればrel="license"とかRDFを認識した方が適用範囲は広くなるんですが、意外と機械的に適用できない(一部分だけに適用、とかReblogは除く、とか)ケースが見受けられるので、比較的確実なFlickrに絞ってみました。RDFの適用範囲とか調べないとダメですね。
あとは過去のポストのライセンスを確認して、CC情報をつけるか削除(orプライベート)するかしないと…手作業じゃ無理なんでなんか作るしかないですね。そこまでするならTumblrヤメレってのは無しの方向で。
この記事のトラックバックURL
http://iyouneta.blog49.fc2.com/tb.php/348-2dabfc99
コメントの投稿