Googleリーダで共有した記事を(ほぼ)全文化し自動でEvernoteに保存する! 〜 スクリプト公開

突然ですが、以前書かせていただいた

で少し紹介させていただいた自動保存プログラム、意外とニーズがありそうなので公開させていただきます!
ENsave2

1.特徴

何度か書かせていただきましたが、私はCoreserverWordPressを設置し、ブログという形で思ったことを発信させていただいています。Coreserverはcronが利用できるので、今回ご紹介するスクリプトの起動をcronでスケジューリングすることで、Googleリーダの共有アイテムをEvernoteに自動で保存することが可能になります。
では、スクリプトの特徴を書かせていただきます。

  • Googleリーダで共有した記事をEvernote保存用メールアドレスに送信します
  • 元記事は全文配信/部分配信問わず、Instapaperで変換して保存します

これにより、多くの記事が全文化され、Instapaperの美しい表示形式で保存することができます。ただ信用しすぎるのは禁物で、Instapaperは完全に全文というわけでもないみたいです。たまに全文ではなかったり、ブログのサイドバーなどあまりクリップする必要のないものまで表示してしまうこともあるのですが、概ね良好かと思います。

  • Perlの標準的・古典的なモジュールのみで書いているため、比較的多くの環境でご利用いただけます

元は、Coreserverで動くことを前提として書きましたが、Perlの標準的なモジュールのみで動くため、比較的多くの環境で利用できると思います。Coreserverでは、cpanでモジュールを追加する必要なく利用できます。使用しているモジュールは、XML::Simple、LWP::Simple、MIME::Lite、Jcodeです。

2.ダウンロードとご使用について

以下のリンクをクリックして、ダウンロードしてご自由にお使いください。

使用に際しては、自己責任でお願いします。

3.スクリプト構成

以下がスクリプトの構成です。処理の途中でいくつか一時ファイルを利用するのですが、削除しないようにしてください。

  • gr2e.sh
    メインのラッパースクリプトです。設置にあたり、このファイルを幾つか修正いただく必要があります。ファイルの入出力等を行います。
    インタフェースは、

    gr2e.sh

    です。(引数なし)

  • print_url.pl
    Googleリーダの共有アイテムのフィードのパーサで、必要な情報のみに標準出力に出力します。
    インタフェースは、

    print_url.pl <フィードのファイル> <保存対象オプション> <ノート保存オプション>

    です。特に意識しなくても使えるようにしています。

  • send_en.pl
    メールを送信するためのスクリプトです。
    インタフェースは、

    send_en.pl <記事URL> <Evernote保存用メールアドレス> <Evernoteオプション(ノート、タグ)> <共有ノート>

    です。これも特に意識しなくても使えます。

あまり良いインタフェースとは言えず、改善点はあるのですが、最近あまりメンテする時間がとれません(^^;A
ただ、実績は結構あるので使用に際して困ることはないかと思います。

4.設置について

サーバ上の任意のディレクトリに展開して下さい。スクリプト起動のために行うことは2つです。

  • パラメータ値の修正(後述します。)

また、自動化のためにはメインスクリプトであるgr2e.shをcron登録してください。Coreserverは管理画面から登録することができます。
管理画面 - CORESERVER.JP:コアサーバー - Vimperator

5.パラメータの説明

使用を開始するにあたり、gr2e.shに記述しているいくつかのパラメータを修正していただく必要があります。以下に説明します。

パラメータ名 説明
SHARED_ITEM_URL Googleリーダ共有アイテムのフィードのURLを指定します。http://www.google.com/reader/public/atom/user/00000000000000000000/state/com.google/broadcastの様なURLですので、赤字の部分をご自分のIDに変更すればOKかと思います。
TARGET_OPT 共有アイテムのうち、何をEvernoteに保存したいかを指定します。
1: ノートをつけたものだけ保存
2: ノートをつけなかったものだけ保存
その他: すべて保存
NOTE_IN_READER_FLG 共有時に自分がつけたノートまで保存するかどうかを指定します。
on: ノートも保存
その他
: ノートは保存しない
EN_MAIL_ADDRESS Evernoteの保存用メールアドレスを指定します。
EN_NOTE 記事をEvernoteのどのノートに保存するか指定します。@ノート名の形式で指定してください。指定がない場合はデフォルトノートに保存されます。
EN_TAG 記事につけるタグを指定します。#タグ名の形式で指定します。スペース区切りで複数指定できます。Evernoteですでに作られているタグである必要があります。
THIS_DIR このスクリプトを設置するパスを指定します。Coreserverのホームディレクトリで展開した場合は、/virtual/username/gr2eになります。

Evernoteの保存先ノートやタグも指定はできるのですが、Subjectを

タイトル @ノート名 #タグ名

という形式でメールを送信している都合上、タイトルに@が含まれると指定したノートには保存されず、デフォルトのノートに保存されますので、その場合は手動でノートを移動してください。Subjectは他の形式だとうまく保存されないことがあるようです…。

6.サンプル

実際にこのスクリプトEvernoteに保存された記事のサンプルをご紹介します。
Evernote

7.謝辞

公開にあたり、いろいろとアドバイスをくださった@hiro45jpさんに大感謝です!
元々自分用にテキトーに作ったものだったので、ひろさんに「ブログで書いてたあのスクリプト、良かったらください」と言われたときは正直焦ったのですが、言われたのがひろさんの誕生日である4月5日の前日だったこともあり、気合い入れて整備して、誕生日プレゼントとして贈りました(^^)
その後も、いろいろとアドバイスを下さって、このスクリプトにあるいろいろなオプションは、ひろさんからのフィードバックで作られました。言わば、情報整理を主戦場としているひろさんと私の合作です(^^;A
ひろさん、この場を借りても御礼申し上げます。いつもありがとうございます!

使える環境に制限があるのですが、みなさまのお役に立てれば幸いですー。