Home > program > iPhone appのリンクをクリックしてもクソ重いiTunesを起動しないで情報だけ見るGreasemonkey

iPhone appのリンクをクリックしてもクソ重いiTunesを起動しないで情報だけ見るGreasemonkey

  • 2009-11-16 (月) 10:59
  • program
  • | |
Google Adsense

iTunesBtn

前回までの記事の通りiPhoneについてあれこれしてたんだけど、その途中色々調べている際にどうにもiTunesが起動するappへのリンクがうっとおしい。
というわけでiTunesが起動するリンクをどうにかするGreasemonkeyを作ってみる。

既にあった、終了!

で、本題なんだけど

gist: 108045 – GitHub

と、既にazuさんがそのまんまのGreasemonkeyを作っていたりする。

// ==UserScript==
// @name from iTunes app store to appspot.com
// @namespace http://web.zgo.jp/
// @include http://*
// ==/UserScript==
(function(){
	window.addEventListener("load", function(e){
		var aTags = document.getElementsByTagName("a");
		var urls = /http:\/\/itunes\.apple\.com\/WebObjects\/MZStore\.woa\/wa\/(.*)$/ig;
		for (var i=0; i<aTags.length; i++) {
			var href = aTags[i].href;
			aTags[i].href = href.replace(urls, "http://app-store.appspot.com/?url=$1");
		}
	}, false);
})();

gitはまださっぱりわからないけど、今度使ってみたいな!

ちょっと手を加えてみる

ただこれだとアフィ付きリンクがうまくいかないのでちょこっと修正してみる。
あと全部のhref属性に片っ端からreplaceをかけるのでちょっと重い(気がする)、なんでその前にちょろっとreplaceするかどうかの処理を入れてやる。

(function(){
	window.addEventListener("load", function(e){
		var aTags = document.getElementsByTagName("a");
		var urls_def = /http:\/\/itunes\.apple\.com\/WebObjects\/MZStore\.woa\/wa\/viewSoftware\?id=(.*)$/ig;
		var urls_aff = /http:\/\/click\.linksynergy\.com\/fs-bin\/stat\?id=.+?&offerid=.+?&type=.+?&subid=.+?&tmpid=.+?&RD_PARM1=http%253A%252F%252Fitunes\.apple\.com%252FWebObjects%252FMZStore\.woa%252Fwa%252FviewSoftware%253Fid%253D(.*)%2526mt.*$/ig

		for (var i=0; i<aTags.length; i++) {
			var href = aTags[i].href;
			if ( href.indexOf("WebObjects") == -1 ) continue;
			var urls = href.indexOf("linksynergy") != -1 ? urls_aff : urls_def;
			aTags[i].href = href.replace(urls, "http://app-store.appspot.com/?url=viewSoftware?id=$1");
		}
	}, false);
})();

はたしてWebObjectsの有無で本当に確認できているのか実はよく分かってないが、今のところ問題は起きてない。
パラメータの順番変えられるだけで動かなくなる微妙正規表現だけど、まぁこれでいっか…。

AppStore for Webも使えるように

さて、これを先日のiPhone記事でも紹介したAppStore for Webに飛ぶようにしてみる。
といってもここまで出来てれば簡単で、replaceするアドレスを

http://namara.moe.hm/AppStore/view.php?country=jp&id=[appのid]

にすればおkなんだけど、折角なんで一つですむようにしてみる。

(function(){
	window.addEventListener("load", function(e){

		var USE_SERVICE_NUM = 0; //0か1かで使用サービス切り替え
		var USE_SERVICE = new Array();
		USE_SERVICE[0] = "http://namara.moe.hm/AppStore/view.php?country=jp&id=";
		USE_SERVICE[1] = "http://app-store.appspot.com/?url=viewSoftware?id=";

		var aTags = document.getElementsByTagName("a");
		var urls_def = /http:\/\/itunes\.apple\.com\/WebObjects\/MZStore\.woa\/wa\/viewSoftware\?id=(.*)$/ig;
		var urls_aff = /http:\/\/click\.linksynergy\.com\/fs-bin\/stat\?id=.+?&offerid=.+?&type=.+?&subid=.+?&tmpid=.+?&RD_PARM1=http%253A%252F%252Fitunes\.apple\.com%252FWebObjects%252FMZStore\.woa%252Fwa%252FviewSoftware%253Fid%253D(.*)%2526mt.*$/ig

		for (var i=0; i<aTags.length; i++) {
			var href = aTags[i].href;
			if ( href.indexOf("WebObjects") == -1 ) continue;
			var urls = href.indexOf("linksynergy") != -1 ? urls_aff : urls_def;
			aTags[i].href = href.replace(urls, USE_SERVICE[ USE_SERVICE_NUM ] + "$1");
		}
	}, false);
})();

もし増やしたいサービスが増えた時楽なように配列にしてみた。
正規表現はappのidを抜き出す形になるんで、そのidを最後に追加出来るようにサービスのurlを加工して、配列servicesに追加してやりゃおk。
あとは変数useServiceNumをそのサービスのkeyにしてやりゃいけるかな。

Twitterの短縮URLに対応…せず

実はこのグリモンが欲しい理由の一つに、twitterのリンク踏んだらappリンクでしたのわー!というケースをどうにかしたいのもあったんだけど、twitterは短縮url使ってるんでここまでの修正じゃ動いてくれない。既に短縮URLを展開表示してくれるFirefox addonやグリモンがあるので、それを利用してる人には問題ないんだけど、個人的にはiTunesが立ち上がらないようにしたいだけなので、ちょろっと機能追加・・・しようと思ったんだけど、結構大変なんで諦めた!

何が大変って短縮URLを展開する際に外部サービスのAPI使うから、レスポンス待ちとかを複数リンク分管理したり、他のグリモンとのうんぬんを考えると面倒くっせーとなってしまった。
なんで、以下のを利用すればいいと思う。

Long URL Please :: Add-ons for Firefox

Short URL Expander for Greasemonkey

グリモンのほうは俺の環境ではなぜか動かなかった><

完成品

ちなみに今回の改変はオリジナル作者のazuさんにTwitterで了解を得ております、ありがとうございます。

完成品(クリックするとグリモンインストール開始します)
from iTunes app store to browser

Comments (Close):2

ようかつ@iPhone重い 10-07-20 (火) 23:47

はじめまして。FireFoxユーザーです。
いままでモンキーいれてなかったんですが。
GreaseMonkeyってそこまでできるんですね。
興味がわいてきました。
ありがとうございます!

daruman 10-07-21 (水) 10:53

はじめまして!
申し訳ないですが、ここに掲載されているグリモンは現在もう動かないと思われます。
iTunesリンクの使用変更がされ、iTunesを起動するかという選択肢が表示されるとともに、iTunesストアの情報をブラウザで見れるようになったため、お役ごめんかなといった感じでした。

グリモンはすごく便利なスクリプトも多く、javascriptを多少しっていればある程度は自分でも作成できるので、これで興味を持ってもらえれば幸いです。

自分の記事で恐縮ですが、以下で使用しているグリモンを公開しています。
少し古くなってしまって実際に今現在使ってないものも含まれてますが、何か探す時にでもご利用ください。
これです

Trackbacks (Close):2

pingback from links for 2009-11-17 « 個人的な雑記 09-11-18 (水) 7:34

[...] iPhone appのリンクをクリックしてもクソ重いiTunesを起動しないで情報だけ見るGreasemonkey – atl*weblog (tags: greasemonkey itunes) [...]

pingback from 2010年版ブラウザあれこれ-Greasemonkey/Stylish/etc- - atl*weblog 11-02-19 (土) 21:45

[...] iPhone appのリンクをクリックしてもクソ重いiTunesを起動しないで情報だけ見るGreasemonkey – atl*weblog [...]

Home > program > iPhone appのリンクをクリックしてもクソ重いiTunesを起動しないで情報だけ見るGreasemonkey

Calendar
« 2017 年 10月 »
M T W T F S S
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Search
ABM | AnotherBookmark™
heteml
heteml
amadana
amadana(アマダナ)
feed
Meta

Return to page top