コマネタ帳(旧) by iyoupapa

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

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

deviantARTの検索結果

スポンサーサイト

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

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

deviantARTVersion 7へ更新されていました。以前作ったTomblooパッチが動かなくなっていたので、修正しました。

以前はサムネイルの画像とフルサイズの画像で別のHostが使われていましたが、今度からフルサイズを縮小してサムネイルとして表示するようです。その方がCDNとか都合がいいのか、JavaScriptとか動かないとフルサイズ優先と言うことなのか判りませんけど、地味な変更です。

あと作者の名前を取り出すxPathが変わっていますね…。

ということで、よろしければお使い下さいませ。あと、動かないよって時は優しくお知らせ下さると嬉しいな。

See also:

スポンサーサイト

[プログラミング]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に入れておけば他の人に弄ってもらいやすいのか…やってみる価値あるかもね。アカウントだけは作ったんだけどなー。

skin presented by myhurt : BLOG | SKIN

FC2Ad

  
copyright © 2005 コマネタ帳(旧) some rights reserved. Powered by FC2ブログ