Initial commit as of 2018-10-16
This commit is contained in:
92
application/models/YoutubeDownloadModel.php
Normal file
92
application/models/YoutubeDownloadModel.php
Normal file
@@ -0,0 +1,92 @@
|
||||
<?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
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user