Отваряне и изваждане на информация

niksdevil

Registered
Това е кода
Код:
<?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>'; 
}
?>
Как може да влезни във всеки линк да речем
Код:
http://www.videoclip.bg/watch/574185_avtomobil-proizveden-v-kitai-vs-skuter-proizveden-v-kitai
И да прибави към горната информация на всеки клип
og:image и както е в случая адреса на видеото
<source itemprop="contentURL" src="//videos.videoclip.bg/playback/574185/video.mp4" type="video/mp4" />
 
С моето кодче, което май не хареса. :D

Код:
<?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." - ";
		//Get video file src
		$single_video = file_get_html($video_link);
		$video_file = $single_video->find('source', 0);
		if(is_null($video_file)) 
			echo "No video file found. \n";
		else 
			echo $video_file->src."\n";
	}
}

Но някои от клиповете нямат файлове, защото май са embed-нати.

Или с това на uphero:
Код:
<?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) {
	$link = 'http://www.videoclip.bg'.$row->href;
	$title = $row->title;

    $video = file_get_html($link);
    $file = $video->find('source', 0);
    if(is_null($file)) 
    	$file = 'No video file found';
    else 
    	$file = $file->src;
    echo $title. ' - '. $link.' - '.$file."\n";
}
 
PHP:
<table>
<tr>
<td>Име на клипа</td>
<td>Адрес на клипа</td>
<td>Сурц файл</td> 
</tr>
<?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 '<tr>';
	echo '<td>'.$row->title.'</td>';
	echo '<td>'.$row->href.'</td>'; 
	$video_html = file_get_html('http://www.videoclip.bg'.$row->href);
	if(isset($video_html->find('source',0)->src)) {
		echo  '<td>'.$video_html->find('source',0)->src.'</td>';
	} else { echo '<td>tva e ot tubata</td>'; }
	echo '</tr>';
}
?>
</table>
 
niksdevil каза:
Супер е така, само ако може да изведе и og:image адреса на всеки клип

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) {
	$link = 'http://www.videoclip.bg'.$row->href;
	$title = $row->title;

    $video = file_get_html($link);
    $file = $video->find('source', 0);
    $image =  $video->find('meta[property=og:image]', 0)->content;
    if(is_null($file)) 
    	$file = 'No video file found';
    else 
    	$file = $file->src;
    echo $title. ' - '. $link.' - '.$file.' - '.$image."\n";
}
 
Ето пак без допълнителни библиотеки

Код:
<?php
libxml_use_internal_errors(true);
$url = 'http://www.videoclip.bg/category?c=10&sort=2';
$base = parse_url($url);
$base = $base['scheme'].'://'.$base['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 = $base.$video->getAttribute('href');
	$text = $video->getAttribute('title');
	$videodom = new DomDocument;
	$videodom->loadHTML('<?xml encoding="utf-8" ?>'.file_get_contents($link));
	$videoxpath = new DOMXpath($videodom);
	$meta = $videoxpath->query('//meta[@property="og:image"]/@content')[0]->textContent;
	$src = $videoxpath->query('//source/@src')[0]->textContent;
	if(empty($src)) {
		$src = 'embedded';
	}
	$videos[$link] = ['text'=>$text, 'meta'=>$meta, 'src'=>$src];
}
print_r($videos);
 

Back
Горе