iTunesで聴いてる曲をYouTubeから探してTumblrにpost
やってることは以前のと大して変わらず。
http://d.hatena.ne.jp/arikui/20071015/1192378488
ビデオ探すのはHTMLをテキスト処理なので、YoutubeのHTMLが変わったら使えません。API使うの登録とか面倒そうだし。
user_id, passwordを変更して実行。
/* tumblr account */ var user_id = "email@adress"; // email address var password = "password"; /******************/ var iTunes_OnPlayerPlayEvent, iTunes_OnAboutToPromptUserToQuitEvent, iTunes_OnQuittingEvent; new Application(user_id, password); function Application(user_id, password){ var self = this; var xmlHttp = WSH.CreateObject("MSXML2.XMLHTTP"); var iTunes = WSH.CreateObject("iTunes.Application", "iTunes_"); self.url = ""; self.init = function(){ self.addEvent(); self.listen(); }; self.data = function(data){ var _data = []; for(var x in data){ _data.push(x + "=" + encodeURIComponent(data[x]) ); } return _data.join("&"); }; self.get = function(q){ var url = "http://jp.youtube.com/results?search_query="+q; xmlHttp.open("get", url, false); xmlHttp.send(); var ResponseText = xmlHttp.ResponseText.replace(/\n/g, ""); try{ var v_data = (/<div\sclass="vllongTitle">[^<]+<span[^>]+[^<]+<\/span>\s+<a\s([^>]+)/).exec(ResponseText)[1]; var v_url = "http://jp.youtube.com" + (/href="([^"]+)"/).exec(v_data)[1]; var v_title = (/title="([^"]+)"/).exec(v_data)[1]; } catch(e){ return false; } return { url : v_url, title: v_title }; }; self.post = function(data){ var url = "http://www.tumblr.com/api/write"; var send_data = self.data({ email : user_id, password: password, type : "video", embed : data.url, title : data.title, caption : data.title }); xmlHttp.open("post", url, false); xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlHttp.send(send_data); return xmlHttp.ResponseText; }; self.listen = function(){ while(true){ WScript.Sleep(1000); } }; self.addEvent = function(){ iTunes_OnPlayerPlayEvent = function(track){ var v_data = self.get(track.Name + "+" + track.Artist); if(!v_data) return; if(self.url == v_data.url) return; self.url = v_data.url; self.post(v_data); WSH.Echo(track.Name + "/" + track.Artist); }; iTunes_OnAboutToPromptUserToQuitEvent = function(){ WSH.Echo("AboutToPromptUserToQuitEvent"); WScript.Quit(); }; iTunes_OnQuittingEvent = function(){ print("QuittingEvent"); WScript.Quit(); }; }; self.init(); }
本当は、関連ビデオをポストしてった方が面白いのかもしれない。
追記: 早速YoutubeのHTMLが変わっていた。とりあえずコードの方は直したけど、正規表現は難しいですね。