SSブログ

GoogleニュースのRSSフィードのlinkタグを本来の記事のURLだけにするphpファイルを作ってみた [メール投稿]

ThunderbirdからFirefoxを起動できないし、FirefoxからThunderbirdを起動できない。:正己の異論・反論(雑感):So-netブログ を見て:正己の異論・反論(雑感):So-netブログ
 それで、「Set MOZ_NO_REMOTE=」の後にFirefoxを起動するbatファイルであるが、次のように記述すれば良さそうである。
@echo off
Set MOZ_NO_REMOTE=
start "" "C:\Program Files\Mozilla Firefox\firefox.exe" "%1"
exit
 このbatファイル(例えばopenFx.bat)を【Batch To Exe Converter】でexeファイル(例えばopenFx.exe)にして、【ThunderBirdに任意のブラウザを関連付ける:G'sのだらだらぐーたら日記 on blog】に書いてある方法で、指定すれば良い。
 しかし、これで問題が解決したと思ったら、そうではなかった。
 試しに、ThunderbirdからGoogleニュースのRSSフィードのリンクをクリックしたら、予定外のページが表示された。表示されたページのURLを見たら、リンクしたURLとも、GoogleニュースのRSSフィードのURLからジャンプするニュースサイトのURLでもない。調べた結果、"%1"でちゃんとURLが私の作ったopenFx.exeに渡されてなかった。「=」や「&」があるとその前で切れてしまうようである。

 この"%1"の所は"%*"の方が良さそうである。
炎のコマンドプロンプト入門/バッチファイル/ユーザー入力
2、バッチファイルに引数を渡す方法

 バッチファイルに引数を渡すためには、% のあとに数字を付加した特殊な環境変数を利用します。変数のうち %0 には、バッチファイル名が入り、%1 〜 %9 までには、1番目の引数から9番目の引数が順に入ります。たとえば、次のようなバッチファイル(argecho.bat)を作成してみましょう。
   @echo off
   echo バッチファイル名 : %0
   echo 1番目の引数   : %1
   echo 5番目の引数   : %5
   echo すべての引数   : %*
 そして次のように、引数を付きでバッチファイル(argecho.bat)を実行してみます。
   argecho a b c d e f g h i j k l m n
 この結果、%0 には0番目の引数(argecho)、%1 には1番目の引数(a)、%5 には5番目の引数(e)、%* にはすべての引数(a b c d e f g h i j k l m n)が渡されるので、次のように表示されます。
   バッチファイル名 : argecho
   1番目の引数   : a
   5番目の引数   : e
   すべての引数   : a b c d e f g h i j k l m n

 それでも、Thunderbirdのリンクをクリックした時に引き渡されるURLは"&"の前で切れてしまう。Googleニュースのフィードでニュース記事にアクセスするURL(Thunderbirdの「件名」の下の「Webサイト」の部分のリンク。またはフィードのlinkタグのURL)は例えば次のような感じだから、"&"の前で切れてしまうと困る。
http://news.google.com/news/url?sa=t&fd=R&usg=アルファベットの羅列&cid=アルファベットの羅列&url=http://…(やっと記事のURL)

 "%*"で外部のexeファイルにURLを引き渡すと http://news.google.com/news/url?sa=t だけになってしまう。Thunderbirdの方で"&"以降も引き渡せるようにできれば良いのだが、その方法がなかなか見つからないようなので、Googleのフィードの方を変えちゃえばいいんじゃないかということでphpファイルを作ってみた。linkタグの部分を記事のURLだけにする改変である。次のように書いた。
<?php

if(isset($_GET['q'])) {
    $word = $_GET['q'];
    if($word == ""){exit('検索単語が未記入です');}
    $filename = 'http://news.google.com/news?ned=us&ie=UTF-8&oe=UTF-8&output=rss&num=10&hl=ja' .'&q=' . $word;
    $xml = simplexml_load_file($filename);
    if ($xml) {

        foreach ($xml->channel->item as $val) {
             $googlelink = $val->link;
             $newlink = substr(strrchr($googlelink, "&url="),5);
             $val->link = $newlink;
        }

        echo $xml->asXML();

    } else {
        exit('GoogleニュースのRSSフィードを読み込めませんでした。');
    }
} else {
    exit('q がありません。');
}

?>

 使うとGoogleに怒られそうなので実際に使ってないが、ローカル環境で確認した。ネット上に散らばっている情報を継ぎはぎして作ったので、使い方を間違えているかもしれないが、Firefoxで確認してみたら、linkタグが本来の記事のURLだけになっていた。最近はリンクをクリックせずThunderbirdのアドオン【Launchy :: Add-ons for Thunderbird】を使って自分の作ったopenFx.exeからFirefoxを起動しているが、リンクをクリックした方が楽だなぁとも思う。
 Thunderbirdのリンクをクリックした時に外部のexeファイルに引き渡すURLが切れないようになれば、それが一番良いのだが…。
nice!(0)  コメント(0)  トラックバック(1) 
共通テーマ:moblog

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。