Difference between revisions of "Get Profile Picture"
(In case WEB-1384 gets things changed again, look for the img tag as a backup) |
|||
Line 1: | Line 1: | ||
{{LSL Header}} | {{LSL Header}} | ||
Get Profile Picture by Valentine Foxdale | Get Profile Picture by Valentine Foxdale | ||
<lsl> | <lsl> | ||
Line 9: | Line 8: | ||
// Get Profile Picture by Valentine Foxdale | // Get Profile Picture by Valentine Foxdale | ||
// optmisation by SignpostMarv Martin | // optmisation by SignpostMarv Martin | ||
// workaround for WEB-1384 by Viktoria Dovgal | // workaround for WEB-1384 by Viktoria Dovgal: | ||
// try meta tag instead of img first, try img as backup in case meta breaks | |||
list sides; | list sides; | ||
list deftextures; | list deftextures; | ||
string profile_key_prefix = "<meta name=\"imageid\" content=\""; | string profile_key_prefix = "<meta name=\"imageid\" content=\""; | ||
string profile_img_prefix = "<img alt=\"profile image\" src=\"http://secondlife.com/app/image/"; | |||
integer profile_key_prefix_length; // calculated from profile_key_prefix in state_entry() | |||
integer profile_img_prefix_length; // calculated from profile_key_prefix in state_entry() | |||
GetProfilePic(key id) //Run the HTTP Request then set the texture | GetProfilePic(key id) //Run the HTTP Request then set the texture | ||
{ | { | ||
Line 44: | Line 48: | ||
state_entry() | state_entry() | ||
{ | { | ||
profile_key_prefix_length = llStringLength(profile_key_prefix); | |||
profile_img_prefix_length = llStringLength(profile_img_prefix); | |||
llSetText("Touch for this object to display your profile picture!",<0.8,0,1>,1); | llSetText("Touch for this object to display your profile picture!",<0.8,0,1>,1); | ||
//Note: Usage of another person's profile picture without their permission may be viewed as copyright infringement. | //Note: Usage of another person's profile picture without their permission may be viewed as copyright infringement. | ||
Line 51: | Line 56: | ||
touch_start(integer total_number) | touch_start(integer total_number) | ||
{ | { | ||
GetProfilePic(llDetectedKey(0)); | //GetProfilePic(llDetectedKey(0)); | ||
GetProfilePic((key)"5be57967-4c39-440a-80d5-369cfa160699"); | |||
} | } | ||
http_response(key req,integer stat, list met, string body) | http_response(key req,integer stat, list met, string body) | ||
{ | { | ||
integer s1 = llSubStringIndex(body,profile_key_prefix); | integer s1 = llSubStringIndex(body, profile_key_prefix); | ||
if(s1 == -1){SetDefaultTextures();} | integer s1l = profile_key_prefix_length; | ||
if(s1 == -1) | |||
{ // second try | |||
llOwnerSay("second try"); | |||
s1 = llSubStringIndex(body, profile_img_prefix); | |||
s1l = profile_img_prefix_length; | |||
} | |||
if(s1 == -1) | |||
{ // still no match? | |||
llOwnerSay(llGetSubString(body, -100, -1)); | |||
SetDefaultTextures(); | |||
} | |||
else | else | ||
{ | { | ||
Line 69: | Line 87: | ||
} | } | ||
} | } | ||
} | } | ||
</lsl> | </lsl> |
Revision as of 02:51, 26 November 2009
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Get Profile Picture by Valentine Foxdale
<lsl> // Snippets and HTTPRequest bits were taken from: //~ RANDOM PROFILE PROJECTOR v5.4.5 by Debbie Trilling ~
// Get Profile Picture by Valentine Foxdale // optmisation by SignpostMarv Martin // workaround for WEB-1384 by Viktoria Dovgal: // try meta tag instead of img first, try img as backup in case meta breaks list sides; list deftextures;
string profile_key_prefix = "<meta name=\"imageid\" content=\""; string profile_img_prefix = "<img alt=\"profile image\" src=\"http://secondlife.com/app/image/"; integer profile_key_prefix_length; // calculated from profile_key_prefix in state_entry() integer profile_img_prefix_length; // calculated from profile_key_prefix in state_entry()
GetProfilePic(key id) //Run the HTTP Request then set the texture {
//key id=llDetectedKey(0); This breaks the function, better off not used string URL_RESIDENT = "http://world.secondlife.com/resident/"; llHTTPRequest( URL_RESIDENT + (string)id,[HTTP_METHOD,"GET"],"");
} GetDefaultTextures() //Get the default textures from each side {
integer i; integer faces = llGetNumberOfSides(); for (i = 0; i < faces; i++) { sides+=i; deftextures+=llGetTexture(i); }
} SetDefaultTextures() //Set the sides to their default textures {
integer i; integer faces; faces = llGetNumberOfSides(); for (i = 0; i < faces; i++) { llSetTexture(llList2String(deftextures,i),i); }
} default {
state_entry() { profile_key_prefix_length = llStringLength(profile_key_prefix); profile_img_prefix_length = llStringLength(profile_img_prefix); llSetText("Touch for this object to display your profile picture!",<0.8,0,1>,1); //Note: Usage of another person's profile picture without their permission may be viewed as copyright infringement. GetDefaultTextures(); } touch_start(integer total_number) { //GetProfilePic(llDetectedKey(0)); GetProfilePic((key)"5be57967-4c39-440a-80d5-369cfa160699"); } http_response(key req,integer stat, list met, string body) { integer s1 = llSubStringIndex(body, profile_key_prefix); integer s1l = profile_key_prefix_length; if(s1 == -1) { // second try llOwnerSay("second try"); s1 = llSubStringIndex(body, profile_img_prefix); s1l = profile_img_prefix_length; } if(s1 == -1) { // still no match? llOwnerSay(llGetSubString(body, -100, -1)); SetDefaultTextures(); } else { s1 += s1l; key UUID=llGetSubString(body, s1, s1 + 35); if (UUID == NULL_KEY) { SetDefaultTextures(); } else { llSetTexture(UUID,ALL_SIDES); } } }
} </lsl>