ソラマメブログ

2008年06月17日

YouTubePlaylistMaker

掲題のようなものを作ってみようかなと思った...(YouTube でなく You tune とすべきかもしれないけれど w)
-----
URL だけ取っておけば タイトルは後で調べて プレイリスト形式にできるというスクリプト
-----
というわけでリスト
//
// File: YouTubePlaylistMaker.lsl
// Date Author number of nodes
// 2008/6/17 walkinglint 77
// 2008/6/17 walkinglint 44 (dance_ring->YouTubePlaylistMaker)
// 2007/9/11 walkinglint 83
// 2007/9/10 walkinglint 82
//
string notecard_name = "url_list";
integer read_line;
key query_id;
list url_list = [];
integer i;
integer j;
string url;
list convert_list;
integer url_num;
key requestid;
activate_load_and_convert() {
url_list = [];
llOwnerSay("Now Loading..");
read_line = 0;
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD) {
query_id = llGetNotecardLine(notecard_name, read_line); // request first line
} else {
llOwnerSay("Notecard " + notecard_name + " is not found");
}
}
convert() {
url_num = 0;
convert_body();
}
convert_body() {
if (url_num < llGetListLength(url_list)) {
requestid = llHTTPRequest(llList2String(url_list, url_num),
                     [HTTP_METHOD, "GET"], "");
}
}
// http://www.secondforum.de/thread.php?threadid=2847
string llReplaceString(string source, list replace) {
while (llSubStringIndex(source, llList2String(replace, 0)) != -1) {
integer index = llSubStringIndex(source, llList2String(replace, 0));
string temp = llDeleteSubString(source, index,
(index + (llStringLength(llList2String(replace, 0)) - 1)));
source = llInsertString(temp, index, llList2String(replace, 1));
}
return source;
}
default {
on_rez(integer start_param) {
llResetScript();
}
touch_start(integer total_number) {
activate_load_and_convert();
}
dataserver(key queryid, string data) {
if (queryid == query_id) {
if (data != EOF) {
// process data
if (llStringLength(data) != 0) {
url_list = url_list + [data];
}
read_line++;
query_id = llGetNotecardLine(notecard_name, read_line);
} else {
llOwnerSay("Loading complete.");
convert();
}
}
}
http_response(key request_id, integer status, list metadata, string body) {
string title = "";
if (request_id == requestid) {
integer i = llSubStringIndex(body, "YouTube - ");
integer j = llSubStringIndex(body, "/title>");
if ((i != -1) && (j != -1)) {
title = llGetSubString(body, i + llStringLength("YouTube - "), j - 2);
title = llReplaceString(title, ["&quot;", "\""]);
}
llOwnerSay(title + "," + llList2String(url_list, url_num));
url_num++;
convert_body();
}
}
}
使い方は このスクリプトを適当に作ったプリムの中に入れ 調べたい URL をずらずら書き並べたものを url_list というノートに入れ(スクリプトを入れた)プリムの中に入れ そのプリムをクリック
-----
そうするとチャットに(タイトルを追加した)プレイリストを出力します
-----
時刻とか入ってしまうのでエディタで切り取って下さい w

同じカテゴリー(walking のスクリプティング講座)の記事
 プロフィール写真の表示に問題 (2009-11-30 20:55)
 ミニ太陽系 (2009-03-21 06:03)
 関数から文字列を返したら何か問題になる? (2009-03-18 18:02)
 llListFindList って型って関係ないんだったっけ (2009-03-18 14:02)
 夏時間(PDT)の実験 (2009-03-08 22:04)
 15パズルの作り方(その3) (2009-03-08 06:03)
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。