birdA patch for WebMarker 1.5.0_0, きょうのつぶやき@digitune

A patch for WebMarker 1.5.0_0

WebMarker is an Chrome extension created by Jan S. san to use TweetMarker with the twitter.com website. But it looks not working correctly now. So I made a patch for that (for 1.5.0_0). Please keep in mind that the patch is not official and it may not be correct. If this would be helpful for someone, I’m happy.

(1/18 update) To fix a problem of “options” page, I modified “options.html” and added “options.js”. I updated the crx file again and I made links for individual modified file.

Diff is here.

$ diff -u WebMarker1.5.0_0/webmarker.js WebMarker1.5.0_1/webmarker.js  
--- WebMarker1.5.0_0/webmarker.js	2013-01-14 13:01:33.000000000 +0900  
+++ WebMarker1.5.0_1/webmarker.js	2013-01-14 18:06:37.000000000 +0900  
@@ -17,8 +17,8 @@  
 var doNotUpload = true;  
  
 function checkScrollPosition() {  
-	if($("div.markedTweet").data() != null) {  
-		var top = $("div.markedTweet").offset().top;  
+	if($("li.markedTweet").data() != null) {  
+		var top = $("li.markedTweet").offset().top;  
  
        if((top > $(window).scrollTop()
            && top < $(window).scrollTop() + $(window).height()) || !doNotUpload) {  
@@ -48,7 +48,7 @@  
 function findTopmostMarker() {  
    var markerId;  
  
-	$("#stream-items-id > div.js-stream-item").each(function() {  
+	$("#stream-items-id > li.js-stream-item").each(function() {  
        if($(this).offset().top > $(window).scrollTop() + 40 && !$(this).children().first().children().first().hasClass("promoted-tweet")) {  
            markerId = {tweet: $(this).find(".js-stream-tweet").attr("data-tweet-id"),  
                        retweet: $(this).find(".js-stream-tweet").attr("data-retweet-id")};  
@@ -131,7 +131,6 @@  
  
    //console.log("markTweet()", markerCache[collection], $(selector), old_twitter);  
  
-  
    chrome.extension.sendRequest({message: "setIcon", visible: "false"});  
  
    if($(selector).data() != null) {  
@@ -141,12 +140,12 @@  
            return true;  
        }  
  
-		$("div").removeClass("markedTweet");  
+		$("li").removeClass("markedTweet");  
  
        if(!old_twitter)
-			$("div").removeClass(selected_class);  
+			$("li").removeClass(selected_class);  
        else  
-			$("div").removeClass(selected_class_classic);  
+			$("li").removeClass(selected_class_classic);  
  
  
        $.each($(selector).parents(), function() {  
@@ -170,7 +169,7 @@  
 }  
  
 function scrollTo() {  
-	var selector = "div.markedTweet";  
+	var selector = "li.markedTweet";  
  
    var offsettop = $(window).height() - 300;  
  
@@ -287,8 +286,8 @@  
 });  
  
 $(window).scroll(function () {  
-	if($("div.markedTweet").data() != null) {  
-		var top = $("div.markedTweet").offset().top;  
+	if($("li.markedTweet").data() != null) {  
+		var top = $("li.markedTweet").offset().top;  
  
        if(top > $(window).scrollTop()
            && top < $(window).scrollTop() + $(window).height()) {  
@@ -297,4 +296,4 @@  
    }  
 });  

きょうのつぶやき@digitune

早くも降り積もっておる…。 http://yfrog.com/ob21rdpj (10:18 twiccaから)

ちょっとテストー。 (12:30 PlumeforAndroidから)

Gmailの「草原」テーマも今日は銀世界だな…。 (12:49 YoruFukurouから)

Google Chromeは結構簡単にマルチアカウント扱えるのね。これまでiMac上では僕がSafari、あゆみさんがChromeと使い分けていたけれど、今後はChromeを二人で使うことにしよう。 (14:00 webから)

ちなみにSafariではなくChromeを使いたくなったのは、WebMarkerを使ってみたかったから。 (14:01 webから)

Safariは最近、「戻る」で戻ったあとに真っ白ページになってしまうことが度々あって、その都度reloadしないといけないのが地味に煩わしかった。のでしばらくChromeで生きてみる。 (14:20 webから)

有葉さんのPCが無事届いたんですが、「もしかしてデスクトップのiMacより速いの?」と思って調べてみました。ウチのiMacは2011年モデルでCPUはi5-2500S、有葉さんの新PCはi5-3210Mで、いちおiMacの方がまだ速いみたい。 (15:34 webから)

クロック周波数(2.7GHz vs. 2.5GHz)、実コア数(4 vs. 2)、3次キャッシュ容量(6MB vs. 3MB)ともiMacの上、ということは、同じIntel i5で有葉さんPCの方が新コア(IvyBridge)とはいえ、一応iMacの方が速いと思って良いよね? (15:37 webから)

WebMarker、どうもちゃんと動かないなぁ…と思って改めてChrome App Storeのレビュー覗いたら、「数週間前から動かないよー直してー」という声多数だった(汗。 (16:07 webから)

再びテストー。 (17:05 webから)

せっかくなのでWebMarkerのデバグしてみた。まずMac版Chromeの拡張は下記にインストールされるようなのでそこからソースを取得↓。
$HOME/Library/Application Support/Google/Chrome/Profile 1/Extensions/ (17:45 webから)

ツール→拡張機能を開き、デベロッパーモードにすると「パッケージ化されていない拡張機能を読み込む」ことが出来るので、一旦正規版を削除した後適当なところにコピーしたものを読み込ませる。 (17:46 webから)

表示メニューから開発/管理→JavaScriptコンソールを開いて準備完了。これで拡張機能内のJSコードを見てデバッグする準備が出来た。 (17:47 webから)

JSコードを修正したら、「機能拡張」ページから「リロード」を押せばすぐ読み直せる。で、いろいろ調べてみたところ、恐らく最近Twitterのwebページで「js-stream-item」というclassがdiv要素からli要素になってしまったことが原因みたい。 (17:50 webから)

コード内で同classの要素にaddしていた「markedTweet」というclassも同時にdiv→liになっているのでその辺りも修正する必要ありましたが、ひと通り修正したところなんとなくそれらしく動くようになったような? (17:52 webから)

超quick hackなのでまるで正当性には自信がありませんが、いちおー何かの参考になるかもしれないのでオリジナルの作者にはpatch送っとこー。 (17:53 webから)

ふう。2時間hack&report完了の巻。原作者はドイツの方のようなのでドイツ語でレポートできたら良かったんだけどさすがにもう忘れたー。 (18:17 webから)

ビブリアドラマ、ラノベ成分、ヲタク成分が見事に希釈されていたので、まさに原作のそういうところが好きだった人は物足りなく思うかも。一般ドラマとしては丁寧な作りなんじゃないかと思うけど、「古書店が舞台の安楽椅子探偵モノ」では画面の地味さは避けられませんなぁ(^^;。 (23:27 PlumeforAndroidから)

そうそう、個人的に一番違和感があったのは、ビブリア古書堂があまりにも立派過ぎること。あんな立派な町の古書店、見たこと無いです(汗。 (23:30 PlumeforAndroidから)

コメント

hayajo_prpr (Fri, 01 Feb 2013 15:42:22)
はじめまして。

WebMarkerで同様の改修を行なったあとにこちらの記事を見かけ、「なぜググらなかったし!」と、軽く落ち込みましたw

少々追加の改修を行なってブログ記事で公開したのですが、こちらのパッチを流用させていただいているので、問題があるようでしたらご連絡ください。記事を削除します。

http://hayajo.hatenablog.com/entry/2013/02/01/153153
digitune (Fri, 01 Feb 2013 20:44:42)
ぜんぜん問題ないですよー。わざわざありがとうございます。
hayajo_prpr (Fri, 01 Feb 2013 21:05:37)
ありがとうございます。感謝いたします。