Using the BlipTV flash video player for Blip.TV videos
Drupal and BlipTV: Using RSS and Xpath anything that works to get the Blip.TV Player
$myFile = "testFile.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo $theData;
<?php
$foo = system('wget http://www.myserver.com/file.txt ~',$output);
?>
This is what I really want:
// retrieve the file into a string
$file = file_get_contents('http://example.com/file.ext');
$item['embed']
gets me the file path, the kind with the number: http://blip.tv/file/687915/
http://us2.php.net/manual/en/function.xpath-eval.php
$objXP = xpath_new_context($objDom)
$objTest = &xpath_eval($objXP,"//lalala");
$objTest->nodeset[0]->set_attribute("test","test data");
Conclusion: XPath looks a little like hell, but more complicated.
// get dom object
$xmldoc = domxml_open_mem($rss);
// init xpath
$xpath = xpath_new_context($xmldoc);
$xpresult = xpath_eval($xpath, "/rss/channel/item/media:player");
Expected result, php won't have these functions installed, mwahahahahahaha:
Fatal error: Call to undefined function domxml_open_mem() in /var/www/livingcon_test/sites/livingconversations.com/themes/sky/template.php on line 221
http://devzone.zend.com/article/651-PHP-101-part-11-Sinfully-Simple
<?php
// set name of XML file
$file = "pet.xml";
// load file
$xml = simplexml_load_file($file) or die ("Unable to load XML file!");
// access XML data
echo "Name: " . $xml->name . "\n";
echo "Age: " . $xml->age . "\n";
echo "Species: " . $xml->species . "\n";
echo "Parents: " . $xml->parents->mother . " and " . $xml->parents->father . "\n";
?>
That's more like it!
This is what we're looking for:
<media:player url="http://blip.tv/file/687915"><![CDATA[<embed src="http://blip.tv/play/k2mqri8" type="application/x-shockwave-flash" width="480" height="360" allowscriptaccess="always" allowfullscreen="true" /> ]]> </media:player>
Should just be:
$file = $embed . '?skin=rss';
$xml = simplexml_load_file($file) or die ("Unable to load XML file!");
// print $xml->media:player
print $xml->xpath('/rss/channel/item/media:player');
Putting it all together (turns out the theme function gets the blip url handed to it as $embed)
Wrong output!
It's just giving me a simplexml object with the old numeric path, not ... hmmm
print $xml->media:player;
$file = $embed . '?skin=rss';
$xml = simplexml_load_file(rawurlencode($file)) or die ("Unable to load XML file!");
print $xml->description;
print file_get_contents($file);
/*
print '
';
print_r($xml);
print '
';
print '
';
print_r($xml->xpath('/rss/channel/item/media:player'));
print '
';
print '
';
print_r($xml->xpath('/rss/channel/item/media:content'));
print '
';
*/
Bottom line: nowhere in the SimpleXML parsing of skin is the data I need. It just isn't getting grabbed.
So we turn to the dirtiest of dirty hacks! Running string functions in the theme layer.
Ebony-II:sky ben$ svn commit -m "the whole thing refactored with the dirty hack of PHP string functions. To hell with you, XML."
<?php
function phptemplate_video_cck_bliptv_flash($embed, $width, $height, $field, $item, $autoplay, $flv, $thumbnail) {
/*
print "<p>Develepment code:
<br />embed = $embed
<br />width = $width
<br />height = $height
<br />field = <pre> " . print_r($field, TRUE) . "</pre>
<br />item = <pre> " . print_r($item, TRUE) . "</pre>
<br />autoplay = $autoplay
<br />flv = $flv
<br />thumbnail = $thumbnail
";
/*
if ($embed) {
$autoplay = $autoplay ? 'autoStart=true' : 'autoStart=false';
$output .= '<object type="application/x-shockwave-flash" height="' . $height . '" width="' .$width . '" data="http://blip.tv/scripts/flash/blipplayer.swf?' . $autoplay . '&file=' . $flv . '%3Fsource%3D3" >
<param name="movie" value="http://blip.tv/scripts/flash/blipplayer.swf?' . $autoplay . '&file=' . $flv . '%3Fsource%3D3" />
<param name="allowScriptAcess" value="always" />
<param name="allowFullScreen" value="true" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="scale" value="noScale" />
<param name="salign" value="TL" />
<param name="wmode" value="transparent" />
</object>';
}
*/
// $rss = file_get_contents($embed . '?skin=rss');
/* Here's an example of what we're after:
<media:player url="http://blip.tv/file/687915"><

Comments
Video advice
Hi,
I need to embed video on my content pages and there seems to be about 10 different ways to do it in Drupal - swfobject, dash media player, etc, etc.
Do you have any suggestions or advice for a fairly straightforward way to do this. I need to include a poster frame on my flash videos as well.
Thanks,
Phil
Post new comment