Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
archiv:opensim:downloads:scripts:youtube_video_player [2024/01/24 16:39] – Externe Bearbeitung 127.0.0.1 | archiv:opensim:downloads:scripts:youtube_video_player [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== Youtube Video Player ===== | ||
+ | |||
+ | < | ||
+ | // ytv by Ziah Zhangsun | ||
+ | // based on the youtubeplayer by Nebadon Izume | ||
+ | // with some few lines of code from DanFernandez Project innerTube | ||
+ | |||
+ | string yt_url = " | ||
+ | string vid_id = ""; | ||
+ | string vid_base = " | ||
+ | string vid_url = ""; | ||
+ | key reqid; | ||
+ | |||
+ | string StringBetween(integer pos, string source, string start, string end) | ||
+ | { | ||
+ | if (pos > 0) | ||
+ | source = llGetSubString(source, | ||
+ | integer sindex = llSubStringIndex(source, | ||
+ | integer eindex = llSubStringIndex(source, | ||
+ | if (sindex == -1 || eindex == -1) | ||
+ | return ""; | ||
+ | else return llGetSubString(source, | ||
+ | } | ||
+ | |||
+ | default { | ||
+ | |||
+ | state_entry() { | ||
+ | llListen(7,"", | ||
+ | llOwnerSay(" | ||
+ | } | ||
+ | |||
+ | listen( integer channel, string name, key id, string message ) | ||
+ | { | ||
+ | if(channel == 7) { | ||
+ | vid_id = message; | ||
+ | reqid = llHTTPRequest( yt_url + vid_id, [], "" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | http_response(key id, integer status, list meta, string body) { | ||
+ | if ( id != reqid ) | ||
+ | return; | ||
+ | |||
+ | // | ||
+ | |||
+ | integer swfArgIdx = llSubStringIndex(body, | ||
+ | string stringArgs = StringBetween(swfArgIdx, | ||
+ | |||
+ | |||
+ | list allArgs = llParseString2List(stringArgs, | ||
+ | |||
+ | //find argName " | ||
+ | //video.mp4 directy. | ||
+ | |||
+ | |||
+ | integer len = llGetListLength(allArgs); | ||
+ | integer i; | ||
+ | string pattern = ""; | ||
+ | string token = ""; | ||
+ | for (i = 0; i < len; ++i) { | ||
+ | |||
+ | pattern = llList2String(allArgs, | ||
+ | if(pattern == " | ||
+ | token = llList2String(allArgs, | ||
+ | llOwnerSay(" | ||
+ | i = len; //break from loop | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | //finally, if everything goes smooth, set the generated URL to the parcell media | ||
+ | |||
+ | vid_url = vid_base + vid_id + "& | ||
+ | // | ||
+ | llParcelMediaCommandList([PARCEL_MEDIA_COMMAND_URL, | ||
+ | } | ||
+ | } | ||
+ | </ | ||