The jonki

呼ばれて飛び出てじょじょじょじょーんき

JScriptで現在再生中の曲をTwitterに投稿する その2

前回書いた記事
JScriptで現在再生中の曲をTwitterに投稿する


ここから少し進化してYoutube連携しました。
連携といっても、「曲名」と「歌手名」をキーにYoutubeの検索結果のURLを貼るってだけです。
結局 #nowplaying ってそこで終わってるので何かと連動しなきゃ意味ないなぁ、と思って作りました。

こんな風な投稿。
http://twitter.com/jojonki/status/9965743653


本当はAmazonでやろうとしてたんだけど、Amazon.co.jpがShift JIS。JScriptのencodeURI()は
Unicode変換で固定なのできっぱり諦めますた。
まぁYoutube悪くないな、と思った結果でもあったり。

getShortURL()は結局使ってません。goo.glの短縮URL使おうと思ったけど、Twitterが勝手に
bit.lyにしてくれるし、文字化けめんどいしでやめました。

var url = "http://twitter.com/";
var user = "twitterのID";
var pass = "上記IDのパスワード";

var ytube_url = "http://www.youtube.com/results?search_category=10&search_type=videos&suggested_categories=10&uni=3&search_query=";

var methods = {
  //friends_timeline: "statuses/friends_timeline.json",
  update: "statuses/update.json"
};

function post(data){
  var req = WScript.CreateObject("Msxml2.XMLHTTP");
  req.open("POST", url + methods.update, false, user, pass);
  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  req.setRequestHeader("X-Twitter-Client", "jonkiTunes");
  req.setRequestHeader("X-Twitter-Client", "0.1");
  req.send("status=" + encodeURIComponent(data));
}

function getNowPlayingTweet(){
    var iTunesApp = WScript.CreateObject("iTunes.Application");
    var track  = iTunesApp.CurrentTrack;
    var name = track.Name;
    var artist = track.Artist;
    var ytubeSearchURL = ytube_url + encodeURIComponent(artist + " " + name);
    //var short_ytubeSearchURL = getShortURL(ytubeSearchURL);
    var str = "[jonkiのiTunes] " + name + " ♪ " + artist + " " + ytubeSearchURL + " #nowplaying #JScript";
    return str;
}

function getShortURL(longURL){
    var url = "http://ggl-shortener.appspot.com/?url=" + longURL;
    var req = WScript.CreateObject("Msxml2.XMLHTTP");
    req.open("GET", url, false);
    req.send(null);
    var json_obj = eval("("+req.responseText+")");
    return json_obj.short_url;
}



function init(){
    tweet = getNowPlayingTweet();
    post(tweet);
    WScript.Echo(tweet);
}

init();