Всем привет, есть движок со встроенным парсером видео из RedTube, но на данный момент он не работает. Было время мне один хороший человек помог подправить этот php файл и парсер стал работать. Но вот увы не задача я потерял этот файл((((
Так вот люди добрые и умные я помню что там было всё не столь сложно и делалось это через стандартные функции VCurl могли бы вы мне помочь и направить меня в нужное русло.
Вот сам код:
Одно знаю, теперь ссылка на видео идёт не закодированная и её можно просто позаимствовать, но как это сделать? (
Так вот люди добрые и умные я помню что там было всё не столь сложно и делалось это через стандартные функции VCurl могли бы вы мне помочь и направить меня в нужное русло.
Вот сам код:
| Код |
|---|
<?php
class VGrab_redtube
{
var $page;
var $curl;
function __construct()
{
$this->curl = new VCurl();
}
function VGrab_redtube()
{
$this->__construct();
}
function getPage( $url ) {
$this->url = trim($url, '/');
if ( $this->page = $this->curl->saveToString($url, 'pp=1;') ) {
$this->page = trim($this->page);
$this->page = str_replace("\n", '', $this->page);
$this->page = str_replace("\r", '', $this->page);
$this->page = preg_replace('/\s\s+/', ' ', $this->page);
return true;
}
return false;
}
function getVideoTitle()
{
preg_match('/<title> RedTube - (.*?).<\/title>/', $this->page, $matches);
if ( isset($matches['0']) ) {
$title = $matches['0'];
$title = str_replace(' RedTube - ', '', $title);
$title = str_replace('<title>', '', $title);
$title = str_replace('</title>', '', $title);
return $title;
}
}
function getVideoTags()
{
return '';
}
function getVideoCategory()
{
return '';
}
function getVideoId()
{
return intval(strtolower(substr($this->url, strrpos($this->url, '/')+1)));
}
private function _uniord($ch)
{
$n = ord($ch{0});
if ($n < 128) {
return $n;
}
if ($n < 192 || $n > 253) {
return false;
}
$arr = array(1 => 192, 2 => 224, 3 => 240, 4 => 248, 5 => 252);
foreach ($arr as $key => $val) {
if ($n >= $val) {
$char[] = ord($ch{$key}) - 128;
$range = $val;
} else {
break;
}
}
$retval = ($n - $range) * pow(64, sizeof($char));
foreach ($char as $key => $val) {
$pow = sizeof($char) - ($key + 1);
$retval += $val * pow(64, $pow);
}
return $retval;
}
function getVideoUrl()
{
$p_file = '' .$this->getVideoId();
if ($p_file == '') {
$p_file=1;
}
$flor = floor(($p_file/1000));
$v_fileFloat = '' .$flor;
$v_fileLength = strlen($p_file);
for ($a = 1; $a <= 7 - $v_fileLength; $a++) {
$p_file = '0' .$p_file;
}
$v_fileLength = strlen($v_fileFloat);
for ($a = 1; $a <= 7 - $v_fileLength;$a++) {
$v_fileFloat = '0' .$v_fileFloat;
}
$map = array(
"R", "1", "5", "3", "4", "2", "O", "7", "K", "9",
"H", "B", "C", "D", "X", "F", "G", "A", "I", "J", "8", "L",
"M", "Z", "6", "P", "Q", "0", "S", "T", "U", "V", "W", "E", "Y", "N"
);
$mapping = '';
$myInt = 0;
for ($a = 0; $a <= 6; $a++) {
$bracket = floor(substr($p_file,$a,1)*($a+1));
$myInt = $myInt + $bracket;
}
$myChar = '' .$myInt;
$myInt = 0;
for ($a = 0;$a< strlen($myChar);$a++) {
$bracket = floor(substr($myChar,$a,1));
$myInt = $myInt + $bracket;
}
if ($myInt >= 10) {
$newChar = '' .$myInt;
} else {
$newChar = '0' .$myInt;
}
$x = $this->_uniord(substr($p_file,3,1));
$xx = $x-48+$myInt+3;
$mapping = $mapping . $map[$xx];
$x = substr($newChar,1,1);
$mapping = $mapping . $x;
$x = $this->_uniord(substr($p_file,0,1));
$xx = $x-48+$myInt+2;
$mapping = $mapping . $map[$xx];
$x = $this->_uniord(substr($p_file,2,1));
$xx = $x-48+$myInt+1;
$mapping = $mapping . $map[$xx];
$x = $this->_uniord(substr($p_file,5,1));
$xx = $x-48+$myInt+6;
$mapping = $mapping . $map[$xx];
$x = $this->_uniord(substr($p_file,1,1));
$xx = $x-48+$myInt+5;
$mapping = $mapping . $map[$xx];
$x = substr($newChar,0,1);
$mapping = $mapping . $x;
$x = $this->_uniord(substr($p_file,4,1));
$xx = $x-48+$myInt+7;
$mapping = $mapping . $map[$xx];
$x = $this->_uniord(substr($p_file,6,1));
$xx = $x-48+$myInt+4;
$mapping = $mapping . $map[$xx];
return 'http://dl.redtube.com/_videos_t4vn23s9jc5498tgj49icfj4678/' .$v_fileFloat. '/' .$mapping. '.flv';
}
}
?>
|
