コマネタ帳(旧) by iyoupapa

PCや土いじりやゲームやオモチャ、思いつくまま細切れネタを書き散らかす日記

Creative Commons Licenseiyoupapaが書いたコマネタ帳の文章は「Creative Commons 表示-継承 2.1 日本」ライセンスです。写真については私のFlickrで配布しています。新しい「コマネタ帳」に移転しました。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tomblooを新しいFlickrページに対応させる

8月4日付でFlickrの個別写真ページが新しくなりました。で、HTMLが変わったのでTomblooで認識できなくなりました orz。とりあえず Quick & Dirty に 31_Tombloo.Service.extractors.js を書き換えました。Preveiwのうちにやっておけよ>俺。

2010/08/06 追記

残念ながら、これだとコンテキストメニューが表示できません。自分の環境では表示できるんですが、これは何らかの異常動作だと思います。ということで、もう少し調べてみますm(_ _)m。

2010/08/19 追記

Tombloo 0.4.12 に取り込んでいただきました。

2010/09/01 追記

Firefoxの設定でコンテキストメニューを出せることが判りました。(8/6付けの追記で異常動作とか言っていますが、設定が違うだけでした orz。)ただし、これをやるとFlickrの右クリックメニューとコンテキストメニューが同時に開いてちょっとうるさいです。コンテキストメニューはEscキーで閉じることができますので、サイトの右クリックメニューよりコンテキストメニューの方が便利という方はこちらの設定を試してみて下さい。

1.about:configを開く。

2.フィルタ欄に以下の項目名を入力する。

dom.event.contextmenu.enabled

表示された項目[dom.event.contextmenu.enabled]をダブルクリックし、値を[false]に変更する。

Quote from : Mozilla Re-Mix: Firefoxで右クリック禁止ページを回避する方法。

594 -           $x('./ancestor-or-self::div[@id="photo_notes"]', ctx.target)
    +           $x('./ancestor-or-self::div[@id="photo-drag-proxy"]', ctx.target)

596 -           ctx.target = $x('//img[@class="reflect"]') || ctx.target;
    +           ctx.target = $x('//div[@class="photo-div"]/img') || ctx.target;

Tomblooが正式対応するまでのつなぎにどうぞ。

スポンサーサイト

[写真]Snapfishでプリントしてみた

IMG_8491 Flickrのプリントオーダー先がSnapfishになってました。ちょうどSnapfishの無料プリントも20枚分あったので、お試ししてみました。

左上の空と飛行機の写真は青がちょっと強めに感じます。ピクチャースタイルが風景だとちょっと効果が強くなるのかな。

右上のシャボン玉は1:1の正方形の画像でいたずらしたものですが、上下をカットして横長にプリントされました。

下の2枚は最初はちょっと違うかなーとも感じたんですが、チェックするとちゃんと色が合っていました。PCのディスプレイをキャリブレートしているわけではないのでアテになりませんけどw。

ちなみに、金曜日の午前中に発注して、月曜日に処理が終わり、火曜日に発送、木曜日にメール便が到着しました。同時に依頼した四つ切りは宅配便なので、一日早く到着しています。

料金は1枚15円と送料がメール便で150円。近所のフジカラーだと1枚25円なので、すごくお得という気はしませんが、近くにプリントするところが無いとなると便利でしょうね。まぁFlickrから(再度アップロードせずに)オーダーできる時点で便利なんですけど。

プリントになると価値がついたような気がするのは、デジタルネイティブでは無いからでしょうかね。いいじゃん、アナログで。

[プログラミング]TomblooでFlickrからpostするときlinkになる不具合パッチ

2010/01/05追記

toさんがTombloo本体へ修正パッチをCommitしてくれました。現行の0.4.5の次のバージョンからこのパッチは不要になるはずです。

第13回北海道開発オフでTomblooのパッチを作りました。本当はGithubからTomblooを持ってきてパッチするべきなんでしょうけど、アドオンの開発環境がないのでテストできない罠orz。

FlickrPatch.jsをtomblooのscriptフォルダに突っ込んでください。ソースは以下。

(function() {
Tombloo.Service.extractors['Photo - Flickr']['check'] = function(ctx){
	if (ctx.target.id=="photo-drag-proxy"
	 && ctx.host.match(/\.flickr\./)) {
		var t = $x('..//img[@class="reflect"]', ctx.target);
		if (t) {
			ctx.target = t;
			ctx.onImage = ctx.target instanceof Ci.nsIDOMHTMLImageElement;
		}
	}
	return ctx.onImage && this.getImageId(ctx);
};
})();

一応説明しておくと、画像の上にDIVが置かれるようになりました。もとはNotesだけだったのですが、新しくPersonもこのDIVを使うことになったので、こいつが邪魔になるケースが多くなりました。そこで、このDIVを選択しているときはその下のimgに差し替えると言うパッチです。

とっととGit環境作ってPull Request送れるようにするべきなんだろうな。

[プログラミング]TomblooでdeviantARTからCC情報を付けてポストする

前回の「[プログラミング]TomblooでFlickrのCC情報をつけてポストする」を改造して、deviantARTからポストするときもCreative Commonsの情報を付けるようにしてみました。

2010/5/19 追記

こちらのソースは deviantART Version 7 では動作しません。「[プログラミング]TomblooでdeviantART(Version 7)からCC情報を付けてポストする」をご覧下さい。

前回やった31_Tombloo.Service.extractors.jsの書き換えは、関数置き換えに直しました。やっぱりTomblooの更新毎に書き換えるのは面倒だからね。

以下ソース。前回のFlickr.cc.jsとは衝突するので、万が一使っている人がいたら削除してからにしてね。ダウンロードはCCAppend.jsからどうぞ。

(function() {
Tombloo.Service.extractors.register({
  name : 'Photo - DeviantArt',
  ICON : 'http://st.deviantart.net/icons/favicon.ico',
  URL  : 'http://www.deviantart.com/',
  check : function(ctx){
    return ctx.onImage && 
      ctx.target.src.match('^http://.....deviantart\.(net|com)/..../');
  },
  extract : function(ctx){
    var author = $x('(//div[@class="catbar"]//a[@class="u"])[1]');
    var cc = $x('(//div[@class="cc_license_text"])');
    if (cc) {
      cc = cc.innerHTML
             .replace(/<\/?em>/g, '')
             .replace(/<br>/g, '')
             .replace(/rel="license"/g, '')
             .replace(/target="_blank"/g, '')
             .replace(/  +/g, ' ');
    }
    var url;
    if (ctx.target.src.match('^http://.....deviantart\.net/..../')) {
      url = ctx.target.src
          .replace(/..(..)\.deviantart\.net\/(....)\/[^\/]+\//, 'fc$1.deviantart.com/$2/');
    } else {
      url = ctx.target.src;
    }
    // http://th05.deviantart.net/fs50/300W/f/2009/261/9/0/Pegasus_Manip_by_blommix.png
    // http://fc05.deviantart.com/fs50/f/2009/261/9/0/Pegasus_Manip_by_blommix.png
    return {
      type      : 'photo',
      item      : ctx.title.extract(/(.*) by .+ on deviantART/i),
      itemUrl   : url,
      author    : author.textContent.trim(),
      authorUrl : author.href,
      license   : cc,
    };
  },
}, 'Photo', false);

Tombloo.Service.extractors['Photo - Flickr']['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,
    }
  }).addErrback(function(err){
    return Tombloo.Service.extractors['Photo'].extract(ctx);
  });
};

addAround(
  Tombloo.Service.extractors,
  '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>'
        + ' under <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">CC-BY-NC-SA</a> license.'
        ps.private = false;
        break;
      case '2':
        var dd = ps.date.split('-');
        ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
        + ' under <a href="http://creativecommons.org/licenses/by-nc/2.0/">CC-BY-NC</a> license.'
        ps.private = false;
        break;
      case '3':
        var dd = ps.date.split('-');
        ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
        + ' under <a href="http://creativecommons.org/licenses/by-nc-nd/2.0/">CC-BY-NC-ND</a> license.'
        ps.private = false;
        break;
      case '4':
        var dd = ps.date.split('-');
        ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
        + ' under <a href="http://creativecommons.org/licenses/by/2.0/">CC-BY</a> license.'
        ps.private = false;
        break;
      case '5':
        var dd = ps.date.split('-');
        ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
        + ' under <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a> license.'
        ps.private = false;
        break;
      case '6':
        var dd = ps.date.split('-');
        ps.description = '(c) ' + dd[0] + ' <a href="' + ps.authorUrl + '">' + ps.author + '</a>'
        + ' under <a href="http://creativecommons.org/licenses/by-nd/2.0/">CC-BY-ND</a> license.'
        ps.private = false;
        break;
      default:
        if (ps.license) {
          ps.description = '(c) <a href="' + ps.authorUrl + '">' + ps.author
          + '</a> ' + ps.license;
          ps.private = false;
        } else if (ps.type == 'photo') {
          //ps.private = true;
        }
        break;
      }
      return ps;
    });
  }
);

})();

実はエラー処理をサボっているので、Full Viewの映像が取れないとかするとスクリプトエラーになります(苦笑)。ごめんね、ごめんね。あ、githubに入れておけば他の人に弄ってもらいやすいのか…やってみる価値あるかもね。アカウントだけは作ったんだけどなー。

[プログラミング]TomblooでFlickrのCC情報をつけてポストする

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ヤメレってのは無しの方向で。

[ベランダ菜園]トマトっ!

Tomato今年もミニトマトがベランダで実をつけました。アイコはちょっと縦長の実なんですね。予備知識無く調達したんで知らなかったわ。

Tomato

いかにもベランダから撮りましたって写真で申し訳ないんで、思いっきり下から撮ってみました。こちらはイエローキャロットです。この丸さがいかにもミニトマト、ですよね。まだあまり黄色くなっていないので、逆光でごまかしましたw。

Playthings

おまけで近所の公園の遊具を一枚。子供と遊んでいたんで、こんな雲だったことに気付いていませんでした。

そうだ、Flickrから「もうすぐ200枚になるけど、お金払わないと最新200枚以外は見られなくなるよ!」ってメール来てたな。携帯で撮るくらいで年$24.95のProアカウントってのもなぁ。Picasaはライセンス表記できなさそうだし。俺がFlickrにうpした写真は全部CC Attributionにしてるんで、誰かが何かに使ってくれる可能性があるけど(いやないw)、ライセンス表記できなきゃそこまでですからね。…はてなフォトライフかな。

skin presented by myhurt : BLOG | SKIN
  
copyright © 2005 コマネタ帳(旧) some rights reserved. Powered by FC2ブログ