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(); }

Sursa
2011-07-03 20:23:55



Comenteaza





Ultimele 25 posturi adăugate

23:39:40Skream & Benga reunited —» turn up the silence
09:06:42Rusia atacă România cu milioane de droni! —» APort | "Pentru un român care știe citi, cel mai greu lucru e să nu scrie." I.L. Carag
05:15:22LAPTE CU LITERE —» Leo Butnaru
16:50:14La întâlnire cu opera lui Constantin Brâncuși —» Biblioteca de Arte 'Tudor Arghezi'
15:03:28„Fii AgriCOOLtor!”: Cum transformă tinerii tradiția vinului moldovenesc într-o carieră de succes 🍷🍷 —» Sandu GRECU
14:38:17Companiile moldovenești pot accesa noi parteneriate de business în BENELUX. Înregistrările pentru Forumul de afaceri BENELUX-Republica Moldova sunt deschise până pe 4 iunie 💲 —» Sandu GRECU
07:14:03JURNALUL LUI ORFEU —» Leo Butnaru
16:31:29Marşul tăcerii pentru victimele pe bicicletă —» Curaj.TV | Media alternativă
13:18:48Șota Maharadze, gruzinul care i-a făcut campioni pe hînceșteni. Legătura cu Kvaratskhelia. Tată unic 🔥🔥🔥 —» Sandu GRECU
08:10:00Lilian Carp: Raportul Primăriei Chișinău confirmă distribuirea apartamentelor de la Apă-Canal către oameni de partid și conducerea întreprinderii 😡 —» Sandu GRECU
07:40:49DIN REVISTA TINERILOR —» Leo Butnaru
15:01:45Vino și joacă fotbal alături de copilul tău ⚽️🏆💥 —» Sandu GRECU
11:19:57Tradițiile au cucerit centrul Chișinăului. Corespondentele Curaj TV Ploiești , CristinaVîrtosu și Laurenția Costin au fost prezente cu camera de filmat la „Festivalul Tradițiilor” —» Curaj.TV | Media alternativă
11:19:57Tradițiile au cucerit centrul Chișinăului —» Curaj.TV | Media alternativă
00:54:00Prevenirea tentativelor de fraudă telefonică și importanța protejării datelor cu caracter personal ☎️ —» Sandu GRECU
18:30:06Studiul 5.0 privind impactul Investițiilor Străine Directe: Reziliență, consolidare și parcurs accelerat de integrare europeană a economiei Republicii Moldova 🚀 —» Sandu GRECU
08:34:01Festivalul Internațional Shakespeare de la Craiova —» Biblioteca de Arte 'Tudor Arghezi'
20:45:01Compania de consultanță și comunicare strategică, Parsec angajează - Specialist de comunicare și PR 💥 —» Sandu GRECU
20:14:32Agricultura 5.0 explorată de tineri la Târgul regional „Viitorul e AgriCOOL” de la Căușeni ☀️ —» Sandu GRECU
08:23:59Chateau Cristi lansează două vinuri noi —» Fine Wine
04:40:04DIN JURNAL 2023 —» Leo Butnaru
07:01:55DIN POEZIA LUMII —» Leo Butnaru
17:24:24🎊 15 ani de activitate ai S.A. „Loteria Națională a Moldovei" —» Sandu GRECU
12:58:44Am desemnat câștigătorul premiului de 6600 de lei oferit de Clubul Premier Football 💥🏆🔝 —» Sandu GRECU
09:07:43TÜV Austria își extinde prezența în Republica Moldova: Standarde internaționale pentru creșterea competitivității economice 💫 —» Sandu GRECU