feed protocol URL

feed:で始まるURLをa要素のhref属性に記述することによって、RSSのsubscribeを行わせようという動きがマイナーながらも存在する(SeeAlso: feed and rss protocols format)わけですが、Bloglinesは対応してません(サービス側でどうにかできるわけではないので、やるとしたらBloglines Notifierによってだとは思いますが)。で、VBScriptで無理やり対応してみる。

まずは何はともあれ、VBScriptを作成します。こんなんで、引数からBloglinesにsubscribeするためのURLを作り、

Dim ObjArgs, StrPath, WshShell

Set ObjArgs = WScript.Arguments

StrPath = ObjArgs(0)
StrPath = StrPath
StrPath = Replace(StrPath, "feed:", "")
If Left(StrPath, 2) = "//" Then
  If Left(StrPath, 6) <> "//http" Then
    StrPath = "http:" & StrPath
  Else
    StrPath = Replace(StrPath, "//http", "http")
  End If
ElseIf Left(StrPath, 4) <> "http" Then
  StrPath = "http://" & StrPath
End If

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "http://www.bloglines.com/sub/" & StrPath

Set ObjArgs = Nothing
Set WshShell = Nothing
WScript.Quit

SubscribeFeed.vbsと名前を付けて、パスの通ったフォルダに保存します。

次に、feed:で始まるリンクをクリックした場合、SubscribeFeed.vbsを起動するように、レジストリへの登録を行います。以下のようなレジストリファイルを作成し登録します。

REGEDIT4

[HKEY_CLASSES_ROOT\feed]
@="URL:Feed Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\feed\shell]
@="open"

[HKEY_CLASSES_ROOT\feed\shell\open]

[HKEY_CLASSES_ROOT\feed\shell\open\command]
@="wscript.exe SubscribeFeed.vbs %1"

これで、feed:で始まるリンクをクリックすると、BloglinesにRSSが登録され、のMyBlogsのページが開きます。

正直、無意味に近いです。feed protocolは広まってないですしね。ちなみに、引数にRSSのURLを渡すとSubscribeできるRSSリーダーなら、

WshShell.Run "http://www.bloglines.com/sub/" & StrPath

の部分を、適当に編集してやれば対応できるはず。試す気ないですが。

追記@2004/01/05

feed protocol URLのシンタックスをかなり誤解しており、うまくhttp:で始まるURLに変換できないっぽいので、VBScriptを更新しました。この更新によって、

  • feed:example.com/rss.xml
  • feed://example.com/rss.xml
  • feed:http://example.com/rss.xml
  • feed://http://example.com/rss.xml

などの記述に対応しました。feed protocol extensionsへも対応してみようかな・・・。面倒すぎる・・・。