Something like this?
string music_url = ""; // leave music_url blank if set in object's descriptionkey HTTPRequest;string feed;string URL;string currSongTitle;string lastSongTitle;string lastSaid;list feedList;integer toggle = FALSE;fetch() { HTTPRequest=llHTTPRequest(URL + "/7.html HTTP/1.0\nUser-Agent: LSL Script (Mozilla Compatible)\n\n",[],""); }output(){ lastSongTitle = currSongTitle; if ( toggle ) { llSetText(currSongTitle,<0.7,0.9,0.7>,1.0); if ( currSongTitle != lastSaid) // don't say the title if it has already been said and somebody gets click happy { llSay(0, currSongTitle); lastSaid = currSongTitle; } } else { llSetText(currSongTitle,<1.0,0.1,0.1>,1.0); }}default{ state_entry() { if(music_url) URL = music_url; else URL = llGetObjectDesc(); fetch(); llSetTimerEvent(15.0); } timer() { fetch(); } touch_start(integer num_detected) { toggle = !toggle; output(); } http_response(key k,integer status, list meta, string body) { if(k != HTTPRequest) return; feed = llGetSubString(body,llSubStringIndex(body, "<body>") + llStringLength("<body>"), llSubStringIndex(body,"</body>") - 1); feedList = llParseString2List(feed,[","],[]); currSongTitle = llList2String(feedList,6); integer length = llGetListLength(feedList); if(llList2String(feedList,7)) // in case there are commas in the song title { integer a = 7; for(; a<length; ++a) currSongTitle += ", " + llList2String(feedList,a); } if (currSongTitle != lastSongTitle) { output(); } // don't send object updates if title hasn't changed }}