92 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| defined('BASEPATH') OR exit('No direct script access allowed');
 | |
| 
 | |
| class YoutubeDownloadModel extends CI_Model {
 | |
|     
 | |
|     public function __construct() {
 | |
|         parent::__construct();
 | |
|     }
 | |
|     
 | |
|     function curlGet($URL) {
 | |
|         $ch = curl_init();
 | |
|         $timeout = 3;
 | |
|         curl_setopt( $ch , CURLOPT_URL , $URL );
 | |
|         curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
 | |
|         curl_setopt( $ch , CURLOPT_CONNECTTIMEOUT , $timeout );
 | |
|         /* if you want to force to ipv6, uncomment the following line */ 
 | |
|         //curl_setopt( $ch , CURLOPT_IPRESOLVE , 'CURLOPT_IPRESOLVE_V6');
 | |
|         $tmp = curl_exec( $ch );
 | |
|         curl_close( $ch );
 | |
|         return $tmp;
 | |
|     }  
 | |
| 
 | |
|     /* 
 | |
|      * function to use cUrl to get the headers of the file 
 | |
|      */ 
 | |
|     function get_location($url) {
 | |
|         $my_ch = curl_init();
 | |
|         curl_setopt($my_ch, CURLOPT_URL,$url);
 | |
|         curl_setopt($my_ch, CURLOPT_HEADER,         true);
 | |
|         curl_setopt($my_ch, CURLOPT_NOBODY,         true);
 | |
|         curl_setopt($my_ch, CURLOPT_RETURNTRANSFER, true);
 | |
|         curl_setopt($my_ch, CURLOPT_TIMEOUT,        10);
 | |
|         $r = curl_exec($my_ch);
 | |
|          foreach(explode("\n", $r) as $header) {
 | |
|             if(strpos($header, 'Location: ') === 0) {
 | |
|                 return trim(substr($header,10)); 
 | |
|             }
 | |
|          }
 | |
|         return '';
 | |
|     }
 | |
| 
 | |
|     function get_size($url) {
 | |
|         $my_ch = curl_init();
 | |
|         curl_setopt($my_ch, CURLOPT_URL,$url);
 | |
|         curl_setopt($my_ch, CURLOPT_HEADER,         true);
 | |
|         curl_setopt($my_ch, CURLOPT_NOBODY,         true);
 | |
|         curl_setopt($my_ch, CURLOPT_RETURNTRANSFER, true);
 | |
|         curl_setopt($my_ch, CURLOPT_TIMEOUT,        10);
 | |
|         $r = curl_exec($my_ch);
 | |
|          foreach(explode("\n", $r) as $header) {
 | |
|             if(strpos($header, 'Content-Length:') === 0) {
 | |
|                 return trim(substr($header,16)); 
 | |
|             }
 | |
|          }
 | |
|         return '';
 | |
|     }
 | |
| 
 | |
|     function get_description($url) {
 | |
|         $fullpage = curlGet($url);
 | |
|         $dom = new DOMDocument();
 | |
|         @$dom->loadHTML($fullpage);
 | |
|         $xpath = new DOMXPath($dom); 
 | |
|         $tags = $xpath->query('//div[@class="info-description-body"]');
 | |
|         foreach ($tags as $tag) {
 | |
|             $my_description .= (trim($tag->nodeValue));
 | |
|         }	
 | |
| 
 | |
|         return utf8_decode($my_description);
 | |
|     }
 | |
|     
 | |
|     function clean($string) {
 | |
|        $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
 | |
|        return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
 | |
|     }
 | |
| 
 | |
|     function formatBytes($bytes, $precision = 2) { 
 | |
|         $units = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); 
 | |
|         $bytes = max($bytes, 0); 
 | |
|         $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); 
 | |
|         $pow = min($pow, count($units) - 1); 
 | |
|         $bytes /= pow(1024, $pow);
 | |
|         return round($bytes, $precision) . ' ' . $units[$pow]; 
 | |
|     } 
 | |
|     function is_chrome(){
 | |
|         $agent=$_SERVER['HTTP_USER_AGENT'];
 | |
|         if( preg_match("/like\sGecko\)\sChrome\//", $agent) ){	// if user agent is google chrome
 | |
|             if(!strstr($agent, 'Iron')) // but not Iron
 | |
|                 return true;
 | |
|         }
 | |
|         return false;	// if isn't chrome return false
 | |
|     }
 | |
| } |