Thursday, October 25, 2007

Firefox の LiveBookmark(フィード)を取得する方法

Firefox の LiveBookmarkを取得する XUL スクリプト.
Feed Sidebar という拡張機能からの紛うこと無き転載です.


ヘッダ内で,
<script type="application/x-javascript" src="chrome://browser/content/bookmarks/bookmarks.js"></script>
をインクルードして,以下のコードを書いて下さい.
// Live Bookmark Class
function CLiveBookmark () {
return this;
}
CLiveBookmark.prototype = {
folders : [],
livemarks : [],
is_init : false,
init : function () {
if (!RDF) { initServices (); }
if (!BMSVC) { initBMService (); }
this.livemarks = [];
this.is_init = true;
},
collect : function () {
if (!this.is_init) { this.init (); }

var root = RDF.GetResource ("NC:BookmarksRoot");
var feedURLArc = RDF.GetResource ("http://home.netscape.com/NC-rdf#FeedURL");
var urlArc = RDF.GetResource ("http://home.netscape.com/NC-rdf#URL");
var nameArc = RDF.GetResource ("http://home.netscape.com/NC-rdf#Name");

var folders = [ root ];

while (folders.length > 0) {
RDFC.Init(BMDS, folders.shift ());

var elements = RDFC.GetElements ();

while(elements.hasMoreElements ()) {
var element = elements.getNext ();
element.QueryInterface (Components.interfaces.nsIRDFResource);

var type = BookmarksUtils.resolveType (element);

if ((type == "Folder") || (type == "PersonalToolbarFolder")){
folders.push (element);
} else if (type == 'Livemark') {
var res = RDF.GetResource (element.Value);
var target = BMDS.GetTarget (res, feedURLArc, true);

if (target) {
var feedURL = target.QueryInterface (kRDFLITIID).Value;

var target = BMDS.GetTarget (res, urlArc, true);

if (target) {
var siteURL = target.QueryInterface (kRDFLITIID).Value;
} else {
var siteURL = 'about:blank';
}
var target = BMDS.GetTarget (res, nameArc, true);
if (target) {
var feedName = target.QueryInterface (kRDFLITIID).Value;
} else {
var feedName = feedURL;
}
this.livemarks.push ({ "label" : feedName, "url" : feedURL, "link" : siteURL });
}
}
}
}
},
getAll : function () {
// 初期化して再取得
this.init ();
this.collect ();
return this.livemarks;
}
};

好きなところで new して get する.
var live = new CLiveBookmark ();
var list = live.getAll ();
for (var i in list) {
alert (list[i].label + " + " + list[i].url + " + " + list[i].link);
}

http://uswpig.bay.livefilestore.com/y1pt79743Fzf-GT0UHH47HCDbOAJHW0rGD_FXf5L5Uz5wNgrrRFjRHNpPvAlGKpk2bkhyh0sDktjyVrEtBi2wsWqg/20071024livealert.png
ほぼ転載ですので,間違った情報や冗長な部分がある場合は指摘してください.
# というか教えて下さい!

一年前はこの手の情報は検索かければ直ぐ出てきたのですが,今は『ブックマーク』という単語が入ると,『ソーシャルブックマーク』や『はてブ』だらけ.
近年の SEO 対策の弊害を感じました. 通常の検索において誰かのブックマークページなんて,はっきり言ってインデックスされなくていいと思わない?



どうも,お久しぶりです.
更新再開していこうと思います.

自分の場合,ブログを更新するのにはパワーも時間も使うので,なるべく時間を掛けず記事をPost できるように訓練せねば. 従って,ある程度はこうした散発的な Post が続くと思います.
いや,ちゃんと気合入れて更新しますよ.

0 comments:

Link Code for this post:

Template Design. 2008 Jyun.