[PHP] Wyciąganie nowych filmików z YouTube - jak?


(Łukasz14) #1

Witam! Chciał bym stworzyć skrypt, który pobierał by same linki z ID najbardziej popularnych filmów na YT z danej kategorii i w danym czasie. Np z kategorii http://www.youtube.com/entertainment pobierał by “Najpopularniejsze” wyciągał z nich ID i wrzucał to ID do bazy danych. Do wyciągnięcia ID z filmu już mam taki skrypt:

$urlYouTube = "http://www.youtube.com/watch?v=EtQciXNyA0Y&feature=related";

$parsedUrlYouTube = parse_url($urlYouTube);


// Funkcja analizuje parametry i zapisuje je do zmiennej w postaci tablicy

parse_str($parsedUrlYouTube['query'],$idYouTube);


echo '';[/code]

Teraz potrzebuję tylko czegoś, co by mi pozwoliło masowo wyciągać te filmiki z YouTube. Proszę o pomoc :wink:


(ziggurad) #2

Na upartego można parsować całą stronę i pobrać wszystkie hrefy linków z diva np o klasie: browse-main-column, dodasz sobie youtube.com i jest link…


(Łukasz14) #3

ziggurad , a jakiś kawałek kodu, bo z php jestem cienki? :wink:


(ziggurad) #4
$dom = new DOMDocument();

$html = $dom->loadHTMLFile("http://www.bankier.pl/inwestowanie/notowania/fundusze");

$dom->preserveWhiteSpace = false;

$tables = $dom->getElementsByTagName('table');

To jest początek skryptu pobierającego tabelę z kursami funduszy z danej strony.

Później mam kod działający typowo na tabeli.

Ciekawe czy można by się dobrać do kodu innej strony przez javascripta i np za pomocą jquery i $() polatać sobie po DOMie…


(Łukasz14) #5

ziggurad , a coś za pomocą funkcji preg_match ?


(ziggurad) #6

No też można, tylko ja nie lubię wyrażeń regularnych bo nigdy do końca się ich nie nauczyłem :smiley:


(Łukasz14) #7

ziggurad , a pomożesz z napisaniem takiego fragmentu kodu ale właśnie za pomocą wyrażeń regularnych?


(B.Andy) #8

Takie troche brzydkie rozwiązanie, ale działa i zwraca te linki w tablicy $linki

<?php

	//by b.andy


	$str = file_get_contents("http://www.youtube.com/entertainment");

	preg_match_all('/

(.*?)</a>/is’, $str, $matches); foreach($matches[1] as $match) { preg_match(’/href="(.*?)"/’, $match, $return); $linki[] = $return[1]; } print_r($linki); ?>


(Łukasz14) #9

B.Andy , dzięki wielkie. Przyda się :wink: