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
|
||
|
}
|
||
|
}
|