Extragere date din link-ul Youtube cu Codeigniter

Extragere date din link-ul Youtube cu Codeigniter

M-am intilnit cu asa o sarcina sa fac extragerea datelor unui clip de pe youtube. Am facut o mica librarie, poate cuiva ii va fi de folos.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

/**
*@package Codeigniter  
* @subpackage Libraries  
* @category Youtube
* @author Ciobanu Ion "http://www.it-nolimit.com"
* @version 0.1
*/ 

class Youtube  {
public $id ='';
private $_url = "http://gdata.youtube.com/feeds/api/videos/";
private $data;
public $width = 640;
public $height = 390;
public $link;
public $title; 	 	

function __construct($param = array())
{
  if (count($param) --> 0) {

    $this->init($param);

  }
}

	public function init($param = array())
	{
		if (count($param) > 0){

			foreach ($param as $k=>$v){

				if (isset($this->$k)) {
					$this->$k = $v;
				}
			}
		}
	}

	/**
	 *@return complete url
	 */
	private function set_url($url)
	{
		return $this->_url = $url;
	}

	public function set_data($data)
	{
		 $this->data = $data;
	}

	public function get_data()
	{
		return $this->data;
	}

	/**
	 *Extragem datele despre clip
	 *@return array()
	 */

	public function get_youtube_data ()
	{

		$this->set_url($this->_url.$this->id);
		$this->set_data(file($this->_url));
		$this->set_data(implode('', $this->get_data()));
		$this->set_data(str_replace(array("\r\n", "\r"), "\n", $this->get_data()));
		preg_match("<yt:duration seconds='(.*?)'/>", $this->get_data(), $duration);
		preg_match('|<title [^>]*>(.*?)</title>|is', $this->get_data(), $title);

		$min = floor($duration[1]/60);
       	$sec = $duration[1] %60;

	    $details = array(
	    	'title'=>$title[1],
	    	'duration'=>$min.':'.$sec,

	    );

	    $this->title = $title[1];

       return $details;

	}

	/**
	 * Player-ul
	 * @return html
	 */

	public function embed_code()
	{
		$outupt = '<object width="'.$this->width.'" height="'.$this->height.'">';
                $outupt .= '<param name="movie" value="http://www.youtube.com/v/'.$this->id.'?version=3&controls=0&rel=0&showinfo=0&feature=player_embedded" />';
                $outupt .= '<param name="allowFullScreen" value="true" />';
                $outupt .= '<param name="allowScriptAccess" value="always" />';
                $outupt .= '<embed type="application/x-shockwave-flash" width="'.$this->width.'" height="'.$this->height.'" src="http://www.youtube.com/v/'.$this->id.'?version=3&controls=0&rel=0&showinfo=0&feature=player_embedded" allowscriptaccess="always" allowfullscreen="true"></embed></object>';

		return $outupt;
	}

	/**
	 * Image
	 *@return html
	 */
	public function embed_image()
	{
		$output = '<img title=".$this->title." src="http://i.ytimg.com/vi/'.$this->id.'/default.jpg" border="0" alt=".$this->title." width="120" height="90" />';

		return $output;
	}

	/**
	 * Verifica daca exista asa id
	 *
	 * @param $link format
	 * @return id or FALSE
	 */
	public function check_link($link)
	{
		//Verificam daca este link de youtube
		if (!preg_match('/http:\/\/www\.youtube\.com\/watch\?v=[^&]+/', $link)) {
          return FALSE;
		} else {

    	   	//Extragem ID-ul
			$x = explode('?v=', $link);
			if(!empty($x) && isset($x[1])){

				$x = explode('&', $x[1]);
				$id = $x[0];

			}

			$header = get_headers($this->_url.$id);

			//Verificam daca exista asta ID
			if (!strpos($header[0], '200')) {
	    		return FALSE;
			} else {
				return $id;
			}
       	}
	}

}

Controller

$v_id = $this->youtube->check_link("http://www.youtube.com/watch?v=mHTx0mhRFws&feature=autoplay&list=PLE74055EAE83B6803&index=4&playnext=25");

if($v_id){

     $config['id'] = $v_id;
     $config['width'] = 640;
     $config['height']= 390;

     $this->youtube->init($config);

     $details = $this->youtube->get_youtube_data();

     print_r($details);

     echo $this->youtube->embed_image();

     echo  $this->youtube->embed_code();
}
Share to Google Buzz
Share to Google Plus
Share to LiveJournal
Share to MyWorld
Share to Odnoklassniki

One Responseto “Extragere date din link-ul Youtube cu Codeigniter”

  1. Bogdan spune:

    si eu am propia librarie scris to in genul asta

Leave a Reply