GetGroupInfo
Jump to navigation
Jump to search
Usage and Description
call getGroupInfo and check that groupRequest == "1" to verify return success. Group data acquired from LL group pages and includes:
* groupTitle * groupDescription * groupMemberCount * groupOpenEnroll * groupMembershipFee * groupFounderID * groupFounderName * groupImageID * groupMaturityRating
which are put in that order into a list GROUP_INFO.
LSL Code
key getGroupInfo(key group_id)
{
return llHTTPRequest("http://world.secondlife.com/group/" + (string)group_id,[HTTP_METHOD,"GET"],"");
}
key groupRequest;
list GROUP_INFO;
default
{
state_entry()
{
groupRequest = getGroupInfo("a053573f-e2b3-ccb0-954a-177ad62e4d37");
}
http_response(key req, integer status, list meta, string body)
{
if (req == groupRequest)
{
if (status == 200)
{
integer posS = llSubStringIndex(body, "<title>")+7; // Find web title, which is group name
integer posF = llSubStringIndex(body, "</title>")-1; // Find the end of the title
string groupTitle = llGetSubString(body, posS, posF); // Set groupTitle to found title
posS = llSubStringIndex(body, "<meta name=\"description\" content=\"")+34; // Find the start of the description
body = llGetSubString(body, posS, -1); // Trim the beginning of the body off
posF = llSubStringIndex(body, "\" />"); // Find first instance of />, which ends the description tag
string groupDescription = llGetSubString(body, 0, posF); // Set groupDescription to found description
body = llGetSubString(body, posF, -1); // Trim the title/description of the body off
list GROUP_DATA = llParseString2List(body, ["<meta name=","content=", "/>", "\"", " ", "\n"],[]); // Break the body into a list
// The following looks for name-value pairs in the html for each group
// If you do not need some of the following, comment them out to avoid unnecessary processing lag.
integer groupMemberCount = (integer)llList2String(GROUP_DATA, llListFindList(GROUP_DATA, ["member_count"])+1);
// This returns a binary result for comparison, Y=1 and anything else is 0.
integer groupOpenEnroll = (llList2String(GROUP_DATA, llListFindList(GROUP_DATA, ["open_enrollment"])+1) == "Y");
integer groupMembershipFee = (integer)llList2String(GROUP_DATA, llListFindList(GROUP_DATA, ["membership_fee"])+1);
key groupFounderID = (key)llList2String(GROUP_DATA, llListFindList(GROUP_DATA, ["founderid"])+1);
// Because GROUP_DATA removed spaces, Founder Name needs special treatment. If the order of tags changes in the future,
// groupid should be changed to whatever tag follows founder.
string groupFounderName = llDumpList2String(llList2List(GROUP_DATA, llListFindList(GROUP_DATA, ["founder"])+1,
llListFindList(GROUP_DATA, ["groupid"])-1), " ");;
key groupImageID = (key)llList2String(GROUP_DATA, llListFindList(GROUP_DATA, ["imageid"])+1);
string groupMaturityRating = llList2String(GROUP_DATA, llListFindList(GROUP_DATA, ["mat"])+1);
GROUP_INFO = [groupTitle, groupDescription, groupMemberCount, groupOpenEnroll, groupMembershipFee, groupFounderID,
groupFounderName, groupImageID, groupMaturityRating];
groupRequest = "1"; // Check if groupRequest is now "1" to verify you have valid GROUP_INFO after a request.
llOwnerSay(llDumpList2String(GROUP_INFO, "\n")); // Simple use case for info
}
else llOwnerSay(0, "HTTP error in group reqeust: " + body);
}
}
}
--Pazako Karu (talk) 18:15, 31 March 2019 (PDT)