« 個人は現金で | トップページ | おつりはどちらから? »

マイリストを記事にする

 ココログアフィリエイトが始まったこともあって、気軽にマイリストに書籍のリストを作ったのはよいのですが、削除する以外にはこれを整理する方法がありません。増えていくとひたすら長くなってしまうだけで見栄えも使い勝手もよくありません。

 ヘルプを見ると「プラス」「プロ」にはマイリストの書き出し・読み込み機能が使えるようですが、リストに表示するものを選択できたり、記事に取り込んだりという機能はないようです。

 記事の中でアフィリエイトのリンクを使うというのは、将来的にログイン画面から対応する可能性もあるようですが、現状ではありませんし、マイリストの整理という点も現状ではありません。

 そこで、多少手はかかりますが、マイリストを記事に取り込むためのスクリプトを作ってみました。使いかたは次のようになります。

  1. 作業したいココログをブラウザで表示する。
  2. 右クリックして「ソースを表示する」をクリックし、必要であればファイル名をつけてパソコン内に保存する。(初期のフォルダはブラウザのキャッシュフォルダなので適当なフォルダを別に用意しておくこと)
  3. 保存したファイルの文字コードをエディタなどで「 SHIFT-JIS 」に変更して保存する。
  4. スクリプトを実行しリスト毎のファイルを作成する。
  5. 記事にしたいリストのファイル名を半角英数に変更し、文字コードも「 UTF-8 」にして保存しなおす。
  6. ココログにログインし、記事の読み込みで読み込ませる。

 手順はすべて Windows での操作を想定しています。

 まず、作業用にひとつフォルダを用意しておきます。余分なファイルも作成されるのでその方が便利です。ここでは仮に C:\cocolog としておきます。ここに後述するスクリプトファイルと「2」で保存したソースファイルを置きます(保存の際にこのフォルダを指定するのがよいでしょう)。

 Windows に付属しているメモ帳ではなく、様々な文字コードに対応できるエディタを用意しておいてください。秀丸エディタTeraPad などお好きなものを利用してください。

 まず、エディタでソースファイルを読み込みます。このソースファイルは UTF-8 なので、文字化けして読めないときには必要に応じて文字コードを指定して開きなおし、Shift-JIS で改めて保存しなおしてください。

 スクリプトは Ruby で書かれています。Ruby を持っていない場合には、ActiveScriptRuby がインストールや使い勝手がよいでしょう(もちろん Windows の場合限定ですが)。

 「スタート」メニューから Ruby コンソールを起動し、先ほどの c:\cocolog フォルダに移動します。

c:\>cd \cocolog
c:\cocolog>

 ソースファイルが blog.html であったとして、スクリプトの実行は、

c:\cocolog>ruby ml2cont.rb blog.html

 とします。

 すると、先ほどの c:\cocolog フォルダにマイリストに登録されている様々なリスト毎の名前でファイルが作成されます。書式はココログでの「記事の書き出し」機能で書き出されるフォーマットに則っていますが、書籍リストを抜き出すことを目的にしていますので、それ以外のリスト(「最近のコメント」、であるとか「バックナンバー」であるとか)は、正しいフォーマットには必ずしもなりませんのでご注意ください。

 出来上がったファイルのうち、不要なものは削除してください。また、記事に読み込ませたいものについては、エディタで「 UTF-8 」に変換しておいてください。ファイル名も日本語ではなく半角英数のものに変更しておく必要があります。(スクリプトによる変換の際にはリスト名がそのままついているのは、判別しやすいためです)

 ココログにログインし、記事の読み込みでローカルファイルとして今のファイルを指定して読み込ませます。

 以上の操作で、マイリストに記述した書籍リストを記事にそのまま移すことができます。


 続いて、スクリプトの内容について説明します。

def mae(x,y)
  author = 'ムムリク'
  status = 'Publish'
  comments = 1       #comment (1:ok 0:no)
  pings = 1           #trackback (1:ok 0:no)
  ampm = ' %I:%M:%S %p'   #午前午後の時間表記
# ampm = ' %H:%M:%S'    #24時制の時間表記
  cy = 2003          #作成記事の年
  cm = 1            #       月
  cd = 2            #        日
  • author には自分のニックネーム(ココログに登録している名前)を書いてください。
  • comments pings にはココログでの設定に応じて 10 を設定してください。
  • ampm は時間の表記の仕方をココログの設定に応じて使い分けてください。24 時制で利用している場合には上の行の先頭に # をつけ、今 # がついている行の # を取ってください。どちらか一方だけを使うようにしてください。
  • cy cm cd は作成する記事の日付を設定します。通常の記事と区別するためにあえて過去の日付を設定してありますが任意の日付で構いません。なお、変換中に設定する時間は作業をしている現在の時間をそのまま利用しています。このため万一にも記事とバッティングすることのないような日付を利用するほうが賢明かと思われます。

 はじめに設定が必要なのは、以上の個所だけです。

 また、タイトルは書名を、カテゴリはリストのタイトルを使っていますが、変更したい場合には出来上がったファイルを変更するか読み込ませたあとでココログの管理画面で変更してください。(もちろん自分でスクリプトを変更しても構いませんが)

 作成するファイルのフォーマットは、記事の書き出しで作成されたファイルを元にしています。

 $ だらけで恥ずかしいのですがうまくいかないのでお許しを。なにぶん Ruby 初心者ですゆえ。読み込んだサンプル

 なお、このスクリプトによってなんらかの障害や問題が発生しても、わたしには一切責任を負えませんので、ご利用になる方みずからの責任において利用されるようにお願いいたします。

  • 作成環境:
    • Windows 2000 SP4
    • ActiveScriptRuby 1.8.1.3
    • 秀丸エディタ 3.19

マイリストをココログの保存形式で切り出すためのスクリプト
ml2cont.rb

$KCODE = "SJIS"

def mae(x,y)
author = 'ムムリク'
status = 'Publish'
comments = 1 #comment (1:ok 0:no)
pings = 1 #trackback (1:ok 0:no)
ampm = ' %I:%M:%S %p' #午前午後の時間表記
# ampm = ' %H:%M:%S' #24時制の時間表記
cy = 2003 #作成記事の年
cm = 1 # 月
cd = 2 # 日


$f.print 'AUTHOR: ',author,"\n"
$f.print 'TITLE: ',x.chomp,"\n"
$f.print 'STATUS: ',status,"\n"
$f.print 'ALLOW COMMENTS: ',comments,"\n"
$f.puts 'CONVERT BREAKS: __default__'
$f.print 'ALLOW PINGS: ',pings,"\n"
$f.print 'CATEGORY: ',y.chomp,"\n"
$f.print "\n"
$f.print Time.mktime(cdate).strftime('DATE: %m/%d/%Y')
$f.puts Time.now.strftime(ampm)
$f.puts '-----'
$f.puts 'BODY:'
end

def ato()
$f.puts '-----'
$f.puts 'EXTENDED BODY:'
$f.print "\n-----\n"
$f.puts 'EXCERPT:'
$f.print "\n-----\n"
$f.puts 'KEYWORDS:'
$f.print "\n-----\n\n\n--------\n"
end


file_name = ARGV.shift
File.foreach(file_name) do |line|

if /<h2>[\s\S]+<\/h2>/ =~ line
begin
$category = line.sub(/^[\s\S]*<h2>/,'')
$category = $category.sub(/<\/h2>$/,'')
gfn = $category.chomp + '.txt'
$f = File.new(gfn,"w")
rescue
end
end

if /^<li>[\s\S]+<\/li>$/ =~ line
line = line.gsub(/<\/*li>/,'')
title = line.sub(/^[\s\S]+<img alt="/,'')
title = title.sub(/" src="[\s\S]+$/,'')
title = title.sub(/^[\s\S]*: /,'')
mae(title,$category)
$f.puts line
ato
elsif /^<li>[\s\S]+$/ =~ line
line = line.gsub(/<\/*li>/,'')
title = line.sub(/^[\s\S]+<img alt="/,'')
title = title.sub(/" src="[\s\S]+$/,'')
title = title.sub(/^[\s\S]*: /,'')
mae(title,$category)
$f.puts line
elsif /^[\s\S]+<\/li>$/ =~ line
line = line.gsub(/<\/*li>/,'')
$f.puts line
ato
end
end


*どうもコードの表示がうまくできません(^^; pre タグやら css やらを試みているのですが・・・

*どうやら日付を生成する部分でミスをしているようで、「年月」から必ず1日を生成してしまうようです。調べた上で修正したいと思いますが、少し時間がかかるかもしれません。暫定的に記事の編集画面で日付を変更してください。 修正しました(2005/02/22)

|

« 個人は現金で | トップページ | おつりはどちらから? »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: マイリストを記事にする:

« 個人は現金で | トップページ | おつりはどちらから? »