muxtape mp3 link
追記:2008-04-03
結婚しました
Twitter / 未承諾広告※ : 結婚しました
じゃなかった、
s/muxtape/kettle/ 勃起
Twitter / 未承諾広告※ : s/muxtape/kettle/ 勃起
だそーです。勃起
var muxtape = unsafeWindow.kettle;
追記:おしまい
- http://youpy.tumblr.com/post/29904978
- http://svn.buycheapviagraonlinenow.com/repos/userscripts/muxtapemp3link.user.js
うしろにあるのが$x関数とかいうやつかな?xpath使ってんなー、シメシメ。
実際の本体はえらく少ないのですな。$x('//li[@class="song"]').forEach(function(e)のうしろ8行だけか。なにやってるのかわからんな。muxtapeのユーザーページのhtmlを見ないとダメか。
var hex = e.id.replace(/song/, ''); var song_url = muxtape.ladles['player' + hex].song_url;
この2行だなー。
// ==UserScript== // @name muxtape mp3 link // @namespace http://d.hatena.ne.jp/youpy/ // @include http://*.muxtape.com/ // ==/UserScript== var muxtape = unsafeWindow.muxtape; var ICON = '<img src="data:image/gif,GIF89a%0A%00%0A%00%B3%0F%00%F8Cj%D2%D2%D2%EA%EA%EA%F8%F8%F8%FFg%89%F9%F9%F9%FDFY%DC%0B8%FD%F5%F8%F0%27S%FE%90%A6%FBLs%FD%FD%FD%FEWz%F57%5E%FF%FF%FF!%F9%04%01%00%00%0F%00%2C%00%00%00%00%0A%00%0A%00%00%04%3A%104%E9%DCZ%EE9%C5%02%FB%8C%E2%24%1C%F0!%081*(%83%A6%C9%D6%CC%D7U%11%F8%DC%5C%09Y%0C%C0Aaq%F0%05%8E%81A%A3%A8(%08%9E%82%C2%B2%E80X%AD%87C%04%00%3B" >'; $x('//li[@class="song"]').forEach(function(e) { var hex = e.id.replace(/song/, ''); var song_url = muxtape.ladles['player' + hex].song_url; var a = document.createElement('a'); a.innerHTML = ICON; a.href = song_url; e.appendChild(a); }); function $x(exp, context) { if (!context) context = document; var resolver = function (prefix) { var o = document.createNSResolver(context)(prefix); return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml"; } var exp = context.createExpression(exp, resolver); var result = exp.evaluate(context, XPathResult.ANY_TYPE, null); switch (result.resultType) { case XPathResult.STRING_TYPE : return result.stringValue; case XPathResult.NUMBER_TYPE : return result.numberValue; case XPathResult.BOOLEAN_TYPE: return result.booleanValue; case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: { result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); var ret = []; for (var i = 0, len = result.snapshotLength; i < len ; i++) { ret.push(result.snapshotItem(i)); } return len != 0 ? ret : null; } } return null; }
htmlの曲のとこ。(http://taizooo.muxtape.com)
<li class="song" id="song07ab217bad39ce91c5e08f529c6301ec"> <div class="name">Mitsuyoshi Azuma and The Swinging Boppers - 俺の家は会社</div> <div class="info"> <strong>3:06</strong> <span class="caption">12:52 pm March 28th</span> <span class="loaded"></span> </div> <div class="clock"></div> </li>
muxtapeなんとか、なんてどこにもないがな。こりゃなんだろ?
var muxtape = unsafeWindow.muxtape;
と、
var song_url = muxtape.ladles['player' + hex].song_url;
firebugで開いてみるか。ウーム、あとでだ。
追記:unsafeWindow???
ページ内の window オブジェクトは GM では unsafeWindow としてアクセスできる。
http://lowreal.net/2006/shibuya-js-2-lt:titile
だからそのサイトのスクリプトを置き換えたりすることもできる。
LDR 拡張系 user.js はコレ
unsafeWindow は unsafeWindow という名の通り、安全ではないオブジェクトです。サイト内スクリプトが触れる window オブジェクトをいぢくるわけですから、unsafeWindow 以下のオブジェクトに GM_xmlhttprequest などを渡してしまうと (単に引数に GM_* を渡すだけでも、コールスタックから見える状態になってしまう場合がある) 、脆弱性の引き金になります。unsafeWindow を使って書いたものを公開する場合は慎重になるべきです。
このため、unsafeWindow オブジェクトは常に「unsafeWindow」としてアクセスするように心がけ、可能な限り他の名前をつけない (代入しない) ようにし、関数の引数に GM_* は絶対に渡さないようにすべきです。
http://lowreal.net/2006/shibuya-js-2-lt:titile
ダーメだ、わかんねーよーだ