#!/usr/local/bin/php -q $Xml_Value) { $Index = count($NowObj); if ($Xml_Value["type"] == "complete") { $NowObj[$Index] = new Myxml; if (isset($Xml_Value["tag"])) { $NowObj[$Index]->tag = $Xml_Value["tag"]; } else { $NowObj[$Index]->tag = ""; } if (isset($Xml_Value["value"])) { $NowObj[$Index]->value = $Xml_Value["value"]; } else { $NowObj[$Index]->value = ""; } if (isset($Xml_Value["attributes"])) { $NowObj[$Index]->attributes = $Xml_Value["attributes"]; } else { $NowObj[$Index]->attributes = ""; } } else if ($Xml_Value["type"] == "open") { $NowObj[$Index] = new Myxml; if (isset($Xml_Value["tag"])) { $NowObj[$Index]->tag = $Xml_Value["tag"]; } else { $NowObj[$Index]->tag = ""; } if (isset($Xml_Value["value"])) { $NowObj[$Index]->value = $Xml_Value["value"]; } else { $NowObj[$Index]->value = ""; } if (isset($Xml_Value["attributes"])) { $NowObj[$Index]->attributes = $Xml_Value["attributes"]; } else { $NowObj[$Index]->attributes = ""; } $NowObj[$Index]->next = array(); $LastObj[count($LastObj)] = &$NowObj; $NowObj = &$NowObj[$Index]->next; } else if ($Xml_Value["type"] == "close") { $NowObj = &$LastObj[count($LastObj) - 1]; unset($LastObj[count($LastObj) - 1]); } } return $XmlClass; } function findElementByAttribute($xmlArray,$attribute_name,$attribute_value) { if (sizeof($xmlArray) > 0) { for ($i = 0; $i < sizeof($xmlArray); $i++) { if (is_array($xmlArray[$i]->attributes)) { $attributes = $xmlArray[$i]->attributes; foreach($attributes as $name => $value) { //echo $name . " " . $value . "\n"; if ($name == $attribute_name && $value == $attribute_value) { return $xmlArray[$i]; } } } if (isset($xmlArray[$i]->next)) { $possible = findElementByAttribute($xmlArray[$i]->next,$attribute_name,$attribute_value); if ($possible !== false) { return $possible; } } } } else if (isset($xmlArray[0]->next)) { //echo "really here"; $possible = findElementByAttribute($xmlArray[0]->next,$attribute_name,$attribute_value); if ($possible !== false) { return $possible; } } return false; } function findElementByTag($xmlArray,$element) { //echo "looking for $element"; if (sizeof($xmlArray) > 0) { for ($i = 0; $i < sizeof($xmlArray); $i++) { //echo "here"; //echo "does " . $xmlArray[$i]->tag . " == " . $element . "\n"; if ($xmlArray[$i]->tag == $element) { return $xmlArray[$i]; } else if (isset($xmlArray[$i]->next)) { $possible = $this->findElementByTag($xmlArray[$i]->next,$element); if ($possible !== false) { return $possible; } } } } else if (isset($xmlArray[0]->next)) { //echo "really here"; $possible = $this->findElementByTag($xmlArray[0]->next,$element); if ($possible !== false) { return $possible; } } return false; } function findElementsByTag($xmlArray,$element) { //echo "Looking for " . $element . "\n"; $return_elements = array(); if (sizeof($xmlArray) > 0) { //echo "Size is greater than 0\n"; for ($i = 0; $i < sizeof($xmlArray); $i++) { //echo "does " . $xmlArray[$i]->tag . " == " . $element . "\n"; if ($xmlArray[$i]->tag == $element) { $return_elements[sizeof($return_elements)] = $xmlArray[$i]; } else if (isset($xmlArray[$i]->next)) { $possible = $this->findElementsByTag($xmlArray[$i]->next,$element); if (is_array($possible)) { $return_elements = array_merge($return_elements,$possible); } } } } else if (isset($xmlArray[0]->next)) { //echo "Going to next \n"; $possible = $this->findElementsByTag($xmlArray[0]->next,$element); if (is_array($possible)) { $return_elements = $possible; } } return $return_elements; } } exec("echo 'Getting the feed from unmediated dot org' | /usr/bin/text2wave -scale 1.5 -F 8000 -o /tmp/temp.wav"); $agi->stream_file("/tmp/temp"); $headlines = array(); // Using Snoppy // http://sourceforge.net/projects/snoopy/ //curl_setopt($ch, CURLOPT_URL, "http://feeds.feedburner.com/unmediated/"); include "Snoopy.class.php"; $snoopy = new Snoopy; $snoopy->fetch("http://feeds.feedburner.com/unmediated/"); exec("echo 'Got the feed, parsing the headlines' | /usr/bin/text2wave -scale 1.5 -F 8000 -o /tmp/temp.wav"); $agi->stream_file("/tmp/temp"); // Myxml defined above $myxml = new Myxml(); $xml = $myxml->xml2array($snoopy->results); $headlines = $myxml->findElementsByTag($xml,"title"); // For debugging /*for ($i = 0; $i < sizeof($headlines); $i++) { var_dump($headlines[$i]); echo "\n"; //$title = $item[$s]->value; //$headlines[sizeof($headlines)] = preg_replace('/[^0-9a-z\s\.]/i',"",$headlines[sizeof($headlines)]); }*/ exec("echo 'Preparing to speak the headlines' | /usr/bin/text2wave -scale 1.5 -F 8000 -o /tmp/temp.wav"); $agi->stream_file("/tmp/temp"); $outfile = fopen("/tmp/unmediated.sable","w"); $begin = '' . "\n"; $begin .= '' . "\n"; $begin .= '' . "\n"; $begin .= '' . "\n"; $being .= 'Unmediated dot org headlines' . "\n"; fwrite($outfile,$begin); for ($i = 0; $i < sizeof($headlines) && $i < 5; $i++) { fwrite($outfile,"headline $i \n"); fwrite($outfile,$headlines[$i]->value . "\n"); } $end = '' . "\n"; $end .= '' . "\n"; fwrite($outfile,$end); fclose($outfile); exec("/usr/bin/text2wave -F 8000 -o /home/sve204/asterisk_sounds/unmediated.wav /tmp/unmediated.sable"); $agi->stream_file("/home/sve204/asterisk_sounds/unmediated.wav"); exit(0); ?>