Site search

Google
WWW を検索 backup-beta.blogspot.com を検索

2008年6月21日土曜日

YouTubeのアドレス変換スクリプト

インワールドでyoutube見るのが流行ってるみたいですが、
土地持ってない + PC古い + 回線遅い
そんな私には縁のない話です^^;

でもスクリプトは書いてみましたw

string youtube2mp4url(string video_url)
{
    if (llGetSubString(video_url,0,6) != "http://") return "";
    string yturl=".youtube.com/watch?v=";
    string mp4url1="http://www.youtubemp4.com/video/";
    string mp4url2=".mp4";
    integer ytl=llStringLength(yturl);
    integer i=llSubStringIndex(video_url,yturl);
    if (i > 7) {
        video_url=mp4url1+llGetSubString(video_url,i+ytl,-1)+mp4url2;
        return video_url;
    }
    else return "";
}

この関数で、ようつべのURL
http://jp.youtube.com/watch?v=463X0BSadFk
http://www.youtube.com/watch?v=463X0BSadFk
などをmp4変換サービスのURLに変換します^^
変換サービスは http://www.youtubemp4.com/ を使用してみました。

10月7日追記: この関数を書いたときは
http://www.youtube.com/watch?v=463X0BSadFk&feature=related
のような後ろにパラメータの付いたURLは考慮していませんでしたが、製品化したYouTube TV screenでは改良しています。
2009年5月28日追記: 修正版のスクリプト http://backup-beta.blogspot.com/2009/05/youtube-mp4_28.htmlを掲載しました。


たぶんllParcelMediaCommandListを使って、こんな感じでいけるかなーと思いますけど、試せないので間違えてるかも知れないです^^;
default
{
    state_entry()
    {
        llListen(0, "", llGetOwner(), "");
    }
    on_rez(integer start_param)
    {
        llResetScript();
    }
    listen(integer channel, string name, key id, string msg)
    {
        if (channel == 0 && id == llGetOwner())
        {
            string url=youtube2mp4url(msg);
            if (url != "") {  // チャットでURLを設定
                llParcelMediaCommandList([
                    PARCEL_MEDIA_COMMAND_URL,url,
                    PARCEL_MEDIA_COMMAND_TYPE,"video/*",
                    PARCEL_MEDIA_COMMAND_AGENT,id]);
                    llOwnerSay("MP4 URL = "+url);
            }
        }
    }
}

2 件のコメント:

  1. 千尋さん、はじめまして♪
    勝手に書き込みすみません・・・w
    私、ダークと申します^^
    スクリプトを試せない状態で書けるなんて、凄いの一言ですw
    試してみたところ、問題なく動作しますよ~♪

    返信削除
  2. はじめまして^^
    いいえ、私、結構失敗多いので自信なかったんですよw
    問題なかったと聞いてほっとしました。ありがとうございました^^

    返信削除