更新が滞っていてすみません。

いろいろブログの技術的な改装をしておりまして。
スマホ版の記事がちょっと見易くなってきたかも…そうでもない?

またファビコンの記事です。
知らなかった…自分がファビコンにこんなに興味あったなんて。
これはほぼPC版での話なんですけど、いつもの覚書です。

Google Alert からの

Google Alert は、私のアカウントでチェックしているキーワード「咲-Saki-」の最新記事のフィードを配信してくれます。 これは、シンマイこと信濃毎日新聞のWEB版記事。

これによると、麻雀牌ケーキをコスト無視で作って下さるケーキ職人は
茅野市ちのの洋菓子店「アニバーサリーチロル」の高橋幹彦社長(58)。
いつか食べに行きたいものです。
Google Alert のおかげでこういう記事が読める…こんなすばらなことはない。

相互RSS からの

さて、そのフィードをライブドアブログの相互RSSに登録しているので、表示された記事タイトルをクリックすると、元記事のサイトに飛びます。当り前ですね。

しかし、相互RSSのデフォルトではそのサイトのファビコンが表示されない!

Google API からの

そこで Google の API を使うことにした、と前記事にも書きました。
ついでに「Google Alert」はサイト名ではないので「咲-Saki-情報」という、他と区別がつく見出しにしました。
が、実はGoogle の API でも元サイトのファビコンは表示されません。 Google Alert では、元サイトには Google のドメインを経由して飛ぶ仕様になっており、するとそのURLを Google の API に渡せば Google のファビコンが表示されるわけで…
これも当たり前。

オリジナルアイコンからの

それならいっそオリジナルのファビコンを表示させよう、ということで エトペンのアイコンを作って表示させてみましたが… こちらの大先輩サイト様と被っていることに気づいて、あわててチェンジ! 咲-Saki-第1巻から、デフォルメ咲さんをチョイス。
でも縮小すると咲さんの可愛さがいまいち伝わらない気がして…もやもやするわね。

それにやっぱり、そのサイトに飛ぶんだから、そのサイトのファビコンを表示したいんです。

JavaScript で、整いました

では、 Google Alert が配信するURLの具体例を御覧下さい。
https://www.google.com/url?rct=j&sa=t&url=http://www.shinmai.co.jp/news/nagano/20170411/KT170407GII090013000.php&ct=ga&cd=CAIyHDZlOThkYTgwNWE5ZGY5NmE6Y28uanA6amE6SlA&usg=AFQjCNEGSLEmVOJ4wJlRBKJDYxWWFG5WNA
…うーん、長いですね。

最後のPHPファイル名とそれへの呪文のようなパラメータ渡しは無視するとして、ファビコン取得に必要な URL は黄色いマーカーをつけた部分です。
というかルート部分のwww.shinmai.co.jpだけでいい気もするんですが、サイトによってはパスごとにファビコンが違うケースも考えられるので、いちおう最後のディレクトリまで。
これを取り出せばいいんですが…。

どうすんだこれ。
toki-003-tokisPoints
試行錯誤の末、Google Alert のフィードのアドレスから、情報元サイトの URL を抜き出す関数を作りました。
var getSrcURL = function(url){
  url = url.replace(/https:\/\/www\.google\.com\/url\?rct=j&sa=t&url=/, '');
  for(
    var i = url.length - 1;
    i && ('/' != url[i]);
    i--
  );
  return url.substr(0, i + 1)
};
この URL を Google API に渡せば、記事のページのファビコンが取得できます。 めでたしめでたし。

…まあ、スキルのある人なら一分もかからず正規表現一発で書けそうなんですが、私の知能ではこっちの方が早かったんだ。