vbox user videos

niksdevil

Registered
Здравейте, някаква идея как мога да взема на даден потребител клиповете да речем от 1-ва страница до 3-та, като извадя адреса на .flv файла и самия клип на името? Благодаря!
 
Може да разгледаш ейтва, само че ще трябва да ползваш curl, защото vbox вижда, че е бот и този простия начин няма да ти свърши работа, но става да видиш логиката ;) :?:
 
Не използвай regex за парсване на html. Пробвай със SimpleXML/DomDocument, за да намериш линковете, които ти трябват.

А това за бота можеш на curl или file_get_contents да подадеш някакъв user-agent
 
Първо сваляш: http://simplehtmldom.sourceforge.net/
След това си го слагаш в папчицата, където е и този код:
PHP:
<?php
include('simple_html_dom.php');

$link = 'http://www.videoclip.bg/category?c=10&sort=2';
$parse_url = parse_url($link);
$base_url = $parse_url['scheme'].'://'.$parse_url['host'];
$html = file_get_html($link);
/**
* Elements
**/
$container = '.items-wide';
$item = '.item';
$title = '.item-title'; //Този елемент е линк и има заедно title-a и линка.

foreach($html->find($container.' '.$item) as $video) {
	//Защото .items-wide .item се използва и за категориите
	//Но само видеата имат attribute: data-videо
	if($video->hasAttribute('data-video')) {
		$video_title = trim($video->find($title, 0)->innertext);
		$video_link =$base_url.trim($video->find($title, 0)->href); 
		echo $video_title.' - '.$video_link."\n";
	}
}

Да кажем, че си го кръстил index.php, отваряш една конзола (cmd, ако си на windows). Пишеш:

Код:
php index.php > dump.txt

Или го слагаш на web server и го отваряш с браузъра.

joTunkiq каза:
Може да разгледаш ейтва, само че ще трябва да ползваш curl, защото vbox вижда, че е бот и този простия начин няма да ти свърши работа, но става да видиш логиката ;) :?:

ПС: Както ламерчето каза: "Не ползвайте regex за парсване на HTML"
 
niksdevil каза:
Ето от тази страница искам да изкарам само линковете и имената на клиповете
Код:
http://www.videoclip.bg/category?c=10&sort=2
PHP:
<?php
include 'simple_html_dom.php';
$html = file_get_html('http://www.videoclip.bg/category?c=10&sort=2');
foreach($html->find('a.item-title') as $row) {
	echo $row->href.'-----> ';
	echo $row->title.'<br>'; 
}
?>
8763126y.png
 
Fakeheal каза:
Първо сваляш: http://simplehtmldom.sourceforge.net/
След това си го слагаш в папчицата, където е и този код:
PHP:
<?php
include('simple_html_dom.php');

$link = 'http://www.videoclip.bg/category?c=10&sort=2';
$parse_url = parse_url($link);
$base_url = $parse_url['scheme'].'://'.$parse_url['host'];
$html = file_get_html($link);
/**
* Elements
**/
$container = '.items-wide';
$item = '.item';
$title = '.item-title'; //Този елемент е линк и има заедно title-a и линка.

foreach($html->find($container.' '.$item) as $video) {
	//Защото .items-wide .item се използва и за категориите
	//Но само видеата имат attribute: data-videо
	if($video->hasAttribute('data-video')) {
		$video_title = trim($video->find($title, 0)->innertext);
		$video_link =$base_url.trim($video->find($title, 0)->href); 
		echo $video_title.' - '.$video_link."\n";
	}
}

Да кажем, че си го кръстил index.php, отваряш една конзола (cmd, ако си на windows). Пишеш:

Код:
php index.php > dump.txt

Или го слагаш на web server и го отваряш с браузъра.

joTunkiq каза:
Може да разгледаш ейтва, само че ще трябва да ползваш curl, защото vbox вижда, че е бот и този простия начин няма да ти свърши работа, но става да видиш логиката ;) :?:

ПС: Както ламерчето каза: "Не ползвайте regex за парсване на HTML"
То не става само с ядене....
 
Това нещо съм го писал за Vbox преди 5 години....
PHP:
<form action="" method="post">
URL collection : <input type="text" name="colection"><br>
Categoriq  ID : <input type="text" name="id"><br>
Addnal: <input type='text' name='adder' value='admin'><br>
ID addanl :<input type='text' name='idadd' value='1'><br>
Opisanie:<input type='text' name='opisanie' value='Приятно гледане'><br>
Tagove:<input type='text' name='tagove' value=''><br>
<input type='submit' name='go' value='go'>
</form>
<br><hr>
<?php
set_time_limit(30);
ini_set('memory_limit', '64M');

$ramPamet = memory_get_usage();

$passOne = '';  // pyrvo preminavane
$passOneCount= '';// broi na  elementite ot pyrvoto preminavane
$passSecond = ''; // vtoro preminavane 
$passThird = ''; // treto preminavane

$vboxUser = 'kobel';// potrebitelsko ime  na usera 
$vboxPassword = '8ef309d6'; // parola na  potrebitelq 

$category =  $_POST['id'];//'543'; // kategoriq za  upload (int)
$video_colection  = $_POST['colection']; //"http://vbox7.com/collection:1259045"; // link kym kolekciq pyrva stranica
// zarejdane na  cookies i  zadavane na   browser agent 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.vbox7.com/login/in.do'); 
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'vboxusr='.$vboxUser.'&vboxpwd='.$vboxPassword.'&Submit=login');
curl_setopt ($ch, CURLOPT_COOKIEJAR, './vbox_cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
curl_exec ($ch); // login stranicata 
// vzemane na informaciqta ot kolekciqta
curl_setopt($ch, CURLOPT_URL, $video_colection);
$content = curl_exec ($ch); // stranicata za kolekciqta
curl_close($ch);// zatvarqne na vryzkata


preg_match('#<title>Колекция / (.*) / VBOX7</title>#isU', $content, $movieTitle);
// izbirane samo na   videtata   ( ot gore ) 
$passOne = explode("<div class=\"clipThumb\">", $content);
$passOneCount = count($passOne);


// izibrane na videata   s  link , snimka  i imeto na  samoto video
$sql = "INSERT INTO pm_temp (url, artist, video_title, description, tags, category, username, user_id, added, source_id, language) VALUES <br />";
for($i=1;$i<=$passOneCount-1;$i++)
{
    
    $passSecond[$i] = explode("</div></div><div class=\"clip\">",$passOne[$i]);
    $temp = explode("<div class=\"video-time\"><span>",$passSecond[$i][0]);
//var_dump($temp);

    preg_match('#<a\s+href=[\'"]([^\'"]+)[\'"]\s*(?:title=[\'"]([^\'"]+)[\'"])?\s*>((?:(?!</a>).)*)</a>#i', $temp[1],$endDatas);
  //  print_r($endDatas);
    $title = explode (":", $endDatas[2]);
	//print_r($endDatas);

    $passThird[$i]['url'] = "http://vbox7.com".$endDatas[1];
	
	$titleNew = str_ireplace($movieTitle[1],'',$title[1]);
    $passThird[$i]['title'] = $titleNew;

     $sql .= "('{$passThird[$i]['url']}', '".max($endDatas)."', '{$passThird[$i]['title']}', '{$_POST['opisanie']} ', '{$_POST['tagove']}', '{$category}', '{$_POST['adder']}', '{$_POST['idadd']}', '".time()."', '53', '1'), <br />";

}
 //print_r($passThird);
 
//print_r($passThird);
echo $sql;
	          

echo "<br><font color='red'>$ramPamet<br>";
echo memory_get_usage();
echo "</font>";
 
Ето и от мен, без да трябва да теглиш допълнителни класове

Код:
<?php
libxml_use_internal_errors(true);
$url = parse_url('http://www.videoclip.bg/category?c=10&sort=2', PHP_URL_HOST);
$dom = new DomDocument;
$dom->loadHTML('<?xml encoding="utf-8" ?>'.file_get_contents($url));
$xpath = new DOMXpath($dom);
$videos = [];
foreach($xpath->query('//a[@class="item-thumb"]') as $video) {
	$link = $video->getAttribute('href');
	$text = $video->getAttribute('title');
	$videos[$base.$link] = $text;
}
print_r($videos);
 

Back
Горе