Difference between revisions of "Talk:LibraryDisplayLandScreenshot"
m (format) |
|||
(5 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
This script seems to be no longer working since the page it accesses has been altered to a point that the script can no longer handle the change. {{unsigned|Fritigern Gothly|03:43, 24 May 2014}} | This script seems to be no longer working since the page it accesses has been altered to a point that the script can no longer handle the change. {{unsigned|Fritigern Gothly|03:43, 24 May 2014}} | ||
: Yep, looks pretty dead. The imageid meta tag is toast, and all the added banner gunk pushes the <img> tag past 16K. User-agent spoofing almost looked like it would save the day, but the banner gunk is still there, just hidden. --[[User:Cerise Sorbet|Cerise Sorbet]] 17:57, 24 May 2014 (PDT) | : Yep, looks pretty dead. The imageid meta tag is toast, and all the added banner gunk pushes the <img> tag past 16K. User-agent spoofing almost looked like it would save the day, but the banner gunk is still there, just hidden. --[[User:Cerise Sorbet|Cerise Sorbet]] 17:57, 24 May 2014 (PDT) | ||
::I came to the same conclusion. I'd say open a new JIRA for this. -- '''[[User:Strife_Onizuka|Strife]]''' <sup><small>([[User talk:Strife_Onizuka|talk]]|[[Special:Contributions/Strife_Onizuka|contribs]])</small></sup> 18:37, 24 May 2014 (PDT) | |||
::: and bibbidi-bobbidi-boo! {{Jira|BUG-6151}} --[[User:Cerise Sorbet|Cerise Sorbet]] 19:47, 24 May 2014 (PDT) | |||
:::: Below should work : | |||
<lsl> | |||
// Credit goes to Jana Kamachi/Solar Alter | |||
// for discovering this concept first | |||
// and taking it beyond just displaying the profile picture | |||
// see http://forums.secondlife.com/showthread.php?t=225460 | |||
// and https://wiki.secondlife.com/wiki/User:Jana_Kamachi/Profile | |||
// for further information | |||
/* | |||
Modified by Jon Desmoulins to use the new PARCEL_DETAILS_ID | |||
to fetch the image that displays on the world.secondlife.com pages | |||
It's a little hacky, but it works. | |||
*/ | |||
string gLandUrl = "http://world.secondlife.com/place/"; //Base URL for world search | |||
ResetTextures() | |||
{ | |||
llSetTexture(TEXTURE_BLANK, ALL_SIDES); | |||
} | |||
default | |||
{ | |||
state_entry() | |||
{ | |||
ResetTextures(); | |||
} | |||
touch_start(integer num_detected) | |||
{ | |||
string parcelID = (string)llList2Key(llGetParcelDetails(llGetPos(), [PARCEL_DETAILS_ID]), 0); | |||
string worlURL = gLandUrl + parcelID; | |||
// We are going to call YQL yahoo API to fetch world.secondlife.com and parse the HTML page | |||
// YQL can give XML answer or JSON answer . | |||
// As we can easier parse JSON answers we request JSON answer | |||
string requestYQL = llEscapeURL("select src from html where url=\"") + worlURL + llEscapeURL("\"" ) | |||
+ llEscapeURL(" and xpath='//img[@class=\"parcelimg\"]'"); | |||
// The Xpath rule means : Inside all the HTML document from world.secondlife.com , | |||
// give me the img attributes who have | |||
// an attribute class named parcelimg | |||
// From these answers give me the src value of the img | |||
string requestREST = "http://query.yahooapis.com/v1/public/yql?q=" + (requestYQL) + "&format=json&callback="; | |||
llHTTPRequest(requestREST, [], ""); | |||
} | |||
on_rez(integer start_param) | |||
{ | |||
ResetTextures(); | |||
} | |||
http_response(key request_id,integer status, list metadata, string body) | |||
{ | |||
if (status == 200) | |||
{ | |||
// We have requested the answer in the JSON Format | |||
// We parse the JSON answer to grab our answer | |||
string urlImage = llJsonGetValue ( body, [ "query" , "results" , "img", "src" ] ); | |||
if ( urlImage != JSON_INVALID ) | |||
{ | |||
key UUIDImage = (key)llGetSubString(urlImage, -38, -3 ); | |||
if ( UUIDImage != NULL_KEY ) | |||
{ | |||
llOwnerSay("Found parcel image " + (string)UUIDImage); | |||
llSetTexture(UUIDImage, ALL_SIDES); | |||
} | |||
} | |||
else | |||
{ | |||
llOwnerSay("Could not retrieve parcel page, parcel not found"); | |||
ResetTextures(); | |||
} | |||
} | |||
else if ( status == 400 ) | |||
// YQL return error 400 and fills field errors when the YQL request is invalid ; | |||
// We are grabbing the error | |||
{ | |||
llOwnerSay("Could not retrieve parcel page, error YQL"); | |||
if ( llJsonValueType ( body, [ "error" , "description"] ) == JSON_STRING ) | |||
{ | |||
llOwnerSay( llJsonGetValue ( body, [ "error" , "description" ] )); | |||
} | |||
ResetTextures(); | |||
} | |||
else // other errors ( network .. etc ... ) | |||
{ | |||
llOwnerSay("Could not retrieve parcel page, error HTTP"); | |||
llOwnerSay(llList2CSV(["Error HTTP", status])); | |||
ResetTextures(); | |||
} | |||
} | |||
} | |||
</lsl> | |||
[[User:Miranda Umino|Miranda Umino]] 20:15, 28 May 2014 (PDT) |
Latest revision as of 05:32, 29 May 2014
This script seems to be no longer working since the page it accesses has been altered to a point that the script can no longer handle the change. —The preceding unsigned comment was added on 03:43, 24 May 2014 by Fritigern Gothly
- Yep, looks pretty dead. The imageid meta tag is toast, and all the added banner gunk pushes the <img> tag past 16K. User-agent spoofing almost looked like it would save the day, but the banner gunk is still there, just hidden. --Cerise Sorbet 17:57, 24 May 2014 (PDT)
- and bibbidi-bobbidi-boo! BUG-6151 --Cerise Sorbet 19:47, 24 May 2014 (PDT)
- Below should work :
<lsl> // Credit goes to Jana Kamachi/Solar Alter // for discovering this concept first // and taking it beyond just displaying the profile picture // see http://forums.secondlife.com/showthread.php?t=225460 // and https://wiki.secondlife.com/wiki/User:Jana_Kamachi/Profile // for further information
/*
Modified by Jon Desmoulins to use the new PARCEL_DETAILS_ID to fetch the image that displays on the world.secondlife.com pages It's a little hacky, but it works.
- /
string gLandUrl = "http://world.secondlife.com/place/"; //Base URL for world search
ResetTextures()
{
llSetTexture(TEXTURE_BLANK, ALL_SIDES);
}
default {
state_entry() { ResetTextures(); } touch_start(integer num_detected) { string parcelID = (string)llList2Key(llGetParcelDetails(llGetPos(), [PARCEL_DETAILS_ID]), 0); string worlURL = gLandUrl + parcelID;
// We are going to call YQL yahoo API to fetch world.secondlife.com and parse the HTML page // YQL can give XML answer or JSON answer . // As we can easier parse JSON answers we request JSON answer
string requestYQL = llEscapeURL("select src from html where url=\"") + worlURL + llEscapeURL("\"" ) + llEscapeURL(" and xpath='//img[@class=\"parcelimg\"]'");
// The Xpath rule means : Inside all the HTML document from world.secondlife.com , // give me the img attributes who have // an attribute class named parcelimg // From these answers give me the src value of the img
string requestREST = "http://query.yahooapis.com/v1/public/yql?q=" + (requestYQL) + "&format=json&callback="; llHTTPRequest(requestREST, [], ""); } on_rez(integer start_param) { ResetTextures(); } http_response(key request_id,integer status, list metadata, string body) {
if (status == 200) {
// We have requested the answer in the JSON Format // We parse the JSON answer to grab our answer
string urlImage = llJsonGetValue ( body, [ "query" , "results" , "img", "src" ] ); if ( urlImage != JSON_INVALID ) { key UUIDImage = (key)llGetSubString(urlImage, -38, -3 ); if ( UUIDImage != NULL_KEY ) { llOwnerSay("Found parcel image " + (string)UUIDImage); llSetTexture(UUIDImage, ALL_SIDES); } } else { llOwnerSay("Could not retrieve parcel page, parcel not found"); ResetTextures(); }
} else if ( status == 400 )
// YQL return error 400 and fills field errors when the YQL request is invalid ; // We are grabbing the error
{ llOwnerSay("Could not retrieve parcel page, error YQL"); if ( llJsonValueType ( body, [ "error" , "description"] ) == JSON_STRING ) { llOwnerSay( llJsonGetValue ( body, [ "error" , "description" ] )); } ResetTextures(); } else // other errors ( network .. etc ... ) { llOwnerSay("Could not retrieve parcel page, error HTTP"); llOwnerSay(llList2CSV(["Error HTTP", status])); ResetTextures(); } }
} </lsl> Miranda Umino 20:15, 28 May 2014 (PDT)