Difference between revisions of "Get Profile Picture"

From Second Life Wiki
Jump to navigation Jump to search
(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, use meta tag instead of img since it comes earlier
// 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;
integer s1l; // calculated from profile_key_prefix in state_entry()
 
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()
     {
     {
         s1l = llStringLength(profile_key_prefix);
         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 03:51, 26 November 2009

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>