Here’s a function I wrote to get the thumbnail URL for a Blip.tv video when all you have is the embed URL. It can parse the embed URL out of a larger block of text (e.g., a blog post). It doesn’t use their API, which makes it easier to setup, but also means it might break in the future if they change things.
/** * Gets a Blip.tv video thumbnail URL when given a embed URL * $author Ian Dunn * @param string $embedURL e.g., http://blip.tv/play/hZBPgqbXeQA * @param string $parse If equal to 'parse' then we'll try to parse the URL out of a larger block of text (like a post's $content), otherwise we'll assume it's the exact URL * @return mixed If successful, the URL string e.g., http://a.images.blip.tv/Brandon-bgintro7369.jpg. If unsuccessful, boolean false */ function getBlipThumbnail($embedURL, $parse = '') { $urlStart = strpos($embedURL, 'blip.tv/play/'); if($urlStart === false) return false; // Parse out the embed URL if needed if($parse == 'parse') { $substrLength = strpos($embedURL, '"', $urlStart) - $urlStart; $embedURL = 'http://' . substr($embedURL, $urlStart, $substrLength); } // Open the redirect page $handler = curl_init(); curl_setopt($handler, CURLOPT_URL, $embedURL); curl_setopt($handler, CURLOPT_RETURNTRANSFER, 1); $redirectPage = curl_exec($handler); curl_close($handler); // Parse out the ID $urlStart = strpos($redirectPage, '?file='); $substrLength = strpos($redirectPage, '&', $urlStart) - $urlStart; $redirectURL = substr($redirectPage, $urlStart, $substrLength); $id = substr($redirectURL, strrpos($redirectURL, '%2F') + 3); // Get video details $handler = curl_init(); curl_setopt($handler, CURLOPT_URL, 'http://blip.tv/rss/'. $id); curl_setopt($handler, CURLOPT_RETURNTRANSFER, 1); $videoRSS = curl_exec($handler); curl_close($handler); // Parse out the thumbnail URL $urlStart = strpos($videoRSS, ''); if($urlStart !== false) { $substrLength = strpos($videoRSS, '', $urlStart) - $urlStart; $thumbnailURL = substr($videoRSS, $urlStart + 21, $substrLength - 21); } else { $urlStart = strpos($videoRSS, 'media:thumbnail url="'); if($urlStart !== false) { $substrLength = strpos($videoRSS, '"/>', $urlStart) - $urlStart; $thumbnailURL = substr($videoRSS, $urlStart + 21, $substrLength - 21); } else return false; } return $thumbnailURL; }
awesome piece of code…works perfect…Thank You!
Hi Ian, this piece of code may need a little tweaking in the wake of the recent upgrade to Blip.tv’s URL embed structure.
In the meantime, I’ve used a custom field and a WordPress function to grab the thumbnail image.
function getBliptvThumb() {
global $post;
$blipID = get_post_meta($post->ID, 'Video', true);
$xml = simplexml_load_file("http://blip.tv/players/episode/$blipID?skin=rss");
$result = $xml->xpath("/rss/channel/item/media:thumbnail/@url");
$thumbnail = (string) $result[0]['url'];
echo '';
}
Store your Blip.tv video ID (the ‘AYLInREC’ bit of http://blip.tv/play/AYLInREC) in a custom field and then just call the getBliptvThumb() function somewhere in your theme.
Hope this helps someone.