Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzenie dostępności filmu z youtube.com
Forum PHP.pl > Forum > Przedszkole
Rafee
Witam,

Chciałbym aby po podaniu linku do serwisu youtube.com, automatycznie wyświetlało mi czy filmik jest dostępny czy już nie..

Jeśli filmik jest aktywny pisało online a jeśli nie to offline

Znalazłem taką funkcje: http://blog.4rev.net/2009-08/check-if-yotu...id-youtube-api/

  1. <?php
  2. function checkYoutubeId($id) {
  3. if (!$data = @file_get_contents(&#8220;http://gdata.youtube.com/feeds/api/videos/”.$id)) return false;
  4. if ($data == &#8220;Video not found”) return false;
  5. return true;
  6. }
  7.  
  8. function checkYoutube($vid) {
  9.  
  10. if (strlen($vid) < 12) { return checkYoutubeId($vid); }
  11.  
  12. $preg1 = &#8216;@www.youtube.com\/watch\?v=(.*?)$@’;
  13. if ( preg_match($preg1, $vid, $match) ) {
  14. $id = explode(&#8220;&”,$match[1]);Â Â return checkYoutubeId($id[0]);
  15. }
  16.  
  17. $preg1 = &#8216;@www.youtube.com\/v\/(.*?)$@’;
  18. if ( preg_match($preg1, $vid, $match) ) {
  19. $id = explode(&#8220;&”,$match[1]);Â Â return checkYoutubeId($id[0]);
  20. }
  21. }
  22. ?>


Ale po wejściu na stronę wyskakuje mi:
Kod
Parse error: syntax error, unexpected ':' in /public_html/youtube.php  on line 3


Znalazłem jeszcze: http://stackoverflow.com/questions/2256930...rl-using-jquery

  1. var _videoUrl = "youtube.com/watch?v=FhnMNwiGg5M";
  2. if (_videoUrl.contains("youtube.com"))
  3. {
  4. alert('Valid');
  5. }
  6. else
  7. {
  8. alert('Not Valid');
  9. }


Ale nie umiem jej zastosować :/

Ma ktoś jakieś pomysły?
erix
Źle skonstruowane szablony w silnikach blogowych podmieniają cudzysłowy "kodowe" na drukarskie, przejrzyj je uważnie.
Rafee
Zmieniłem i teraz wyglada tak:
Kod
<?php
function checkYoutubeId($id) {
if (!$data = @file_get_contents("http://gdata.youtube.com/feeds/api/videos/".$id)) return false;
if ($data == "Video not found") return false;
return true;
}

function checkYoutube($vid) {

if (strlen($vid) < 12) { return checkYoutubeId($vid); }

$preg1 = '@www.youtube.com\/watch\?v=(.*?)$@';
if ( preg_match($preg1, $vid, $match) ) {
$id = explode("&",$match[1]); return checkYoutubeId($id[0]);
}

$preg1 = '@www.youtube.com\/v\/(.*?)$@';
if ( preg_match($preg1, $vid, $match) ) {
$id = explode("&",$match[1]); return checkYoutubeId($id[0]);
}
}
?>


Dobrze jest? nie wywala nic..

I teraz gdzie muszę podać link aby mi to sprawdzało?

Ma ktoś jakieś pomysły?
kilas88
http://code.google.com/intl/pl/apis/youtub...d.html#data_api
Google niemal do wszystkich swoich narzędzi udostępnia usługi sieciowe, tj. REST, SOAP, XML-RPC. Dlaczego by z tego nie skorzystać?
Rafee
Nie jestem za dobrym programista, staram się używać gotowych przykładów
Pilsener
A nie prościej użyć:
http://pl2.php.net/manual/pl/function.get-headers.php
Jeśli nie znajdzie strony to powinno zwrócić 404 czy tam inny błąd
Rafee
Właśnie nie bardzo... choć może nie umiem tego bardziej zastosować...

Chodzi mi dokładnie o to żeby w kolumnie (rys) Youtube status, wyświetlało się zamiast "Status":
Działa - jeśli filmik jest na Youtube
Nie działa! - jeśli nie jest już dostępny...

kilas88
Cytat(Rafee @ 21.04.2010, 16:56:42 ) *
Właśnie nie bardzo... choć może nie umiem tego bardziej zastosować...

Chodzi mi dokładnie o to żeby w kolumnie (rys) Youtube status, wyświetlało się zamiast "Status":
Działa - jeśli filmik jest na Youtube
Nie działa! - jeśli nie jest już dostępny...


Nie sprawdzisz raczej inaczej, aniżeli przy wykorzystaniu Web Servies YouTube. A przynajmniej nie sprawdzisz tego zbyt wydajnie i elegancko. Musisz wykorzystać ich API lub zlecić to zadanie komuś. Być może ktoś szalony napisze Ci to za darmo :-)

Btw. skrypt, który dałeś wcześniej sprawdza tylko poprawność adresu, co nie wyklucza usunięcie filmu z yT. Pobranie samych nagłówków też nie pomoże, ponieważ YouTube otwiera normalnie stronę, wyświetlając w HTML info o usunięciu filmiku. preg_match_all też nie jest zbyt dobre, bo przy każdej kolejnej aktualizacji yT będziesz musiał aktualizaować swoje skrypty.
Rafee
No tak, tylko ten pierwszy który próbuje go użyć może być wystarczajacy ... gdyż np..

1. Filmik został usunięty (Ten film wideo jest już niedostępny z powodu otrzymania roszczenia dotyczącego praw autorskich przez Box Office Entertainment):
http://gdata.youtube.com/feeds/api/videos/Yno5dUWWAWk
Pojawia się informacja: Video not found

2. Gdy w ogole takiej strony nie ma (Żądany film wideo jest niedostępny. Jeśli ten film został niedawno przesłany, zaczekaj kilka minut na jego przetworzenie.):
http://gdata.youtube.com/feeds/api/videos/4ewrerw8r3r
Pojawia się informacja: Video not found

3. A gdy jest dostępny i działa:
http://gdata.youtube.com/feeds/api/videos/EbF8OhBVnlY
Pokazuje się okno do ściągnięcia
i zawartość pliku:
Kod
<?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007'><id>http://gdata.youtube.com/feeds/api/videos/VMv4R9o9azw</id><published>2009-05-10T21:11:28.000Z</published><updated>2010-04-21T13:07:01.000Z</updated><category scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'/><category scheme='http://gdata.youtube.com/schemas/2007/categories.cat' term='Entertainment' label='Entertainment'/><category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='slasher'/><category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='killer'/><category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat' term='survival'/><title type='text'>Madness theatrical trailer h264</title><content type='text'>FRIENDS JENNA AND TARRA ARE ON THEIR WAY TO A CHEERLEADING CONTEST.

AT A GAS STATION THEY DECIDE TO HELP TWO GUYS,OLIVER AND CHAD WHO ARE HAVING PROBLEM WITH THEIR CAR.

WHAT THEY DON'T KNOW IS THAT THEY ARE BEING WATCHED BY A GROUP OF MADMEN.

THEIR ONLY INTENTION IS TO HUNT THEM DOWN AND KILL THEM FOR PLEASURE.

AFTER BEING CAPTURED AND LOCKED UP,SURVIVAL IS THE ONLY THING THAT MATTERS.

BUT JUST HOW FAR ARE THEY WILLING TO GO?</content><link rel='alternate' type='text/html' href='http://www.youtube.com/watch?v=VMv4R9o9azw&feature=youtube_gdata'/><link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/VMv4R9o9azw/responses'/><link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/VMv4R9o9azw/related'/><link rel='self' type='application/atom+xml' href='http://gdata.youtube.com/feeds/api/videos/VMv4R9o9azw'/><author><name>DC92100</name><uri>http://gdata.youtube.com/feeds/api/users/dc92100</uri></author><gd:comments><gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/VMv4R9o9azw/comments' countHint='0'/></gd:comments><media:group><media:category label='Entertainment' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Entertainment</media:category><media:content url='http://www.youtube.com/v/VMv4R9o9azw?f=videos&app=youtube_gdata' type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full' duration='141' yt:format='5'/><media:content url='rtsp://v1.cache2.c.youtube.com/CiILENy73wIaGQk8az3aR_jLVBMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='141' yt:format='1'/><media:content url='rtsp://v8.cache8.c.youtube.com/CiILENy73wIaGQk8az3aR_jLVBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp' type='video/3gpp' medium='video' expression='full' duration='141' yt:format='6'/><media:description type='plain'>FRIENDS JENNA AND TARRA ARE ON THEIR WAY TO A CHEERLEADING CONTEST.

AT A GAS STATION THEY DECIDE TO HELP TWO GUYS,OLIVER AND CHAD WHO ARE HAVING PROBLEM WITH THEIR CAR.

WHAT THEY DON'T KNOW IS THAT THEY ARE BEING WATCHED BY A GROUP OF MADMEN.

THEIR ONLY INTENTION IS TO HUNT THEM DOWN AND KILL THEM FOR PLEASURE.

AFTER BEING CAPTURED AND LOCKED UP,SURVIVAL IS THE ONLY THING THAT MATTERS.

BUT JUST HOW FAR ARE THEY WILLING TO GO?</media:description><media:keywords>slasher, killer, survival</media:keywords><media:player url='http://www.youtube.com/watch?v=VMv4R9o9azw&feature=youtube_gdata'/><media:thumbnail url='http://i.ytimg.com/vi/VMv4R9o9azw/2.jpg' height='90' width='120' time='00:01:10.500'/><media:thumbnail url='http://i.ytimg.com/vi/VMv4R9o9azw/1.jpg' height='90' width='120' time='00:00:35.250'/><media:thumbnail url='http://i.ytimg.com/vi/VMv4R9o9azw/3.jpg' height='90' width='120' time='00:01:45.750'/><media:thumbnail url='http://i.ytimg.com/vi/VMv4R9o9azw/0.jpg' height='240' width='320' time='00:01:10.500'/><media:title type='plain'>Madness theatrical trailer h264</media:title><yt:duration seconds='141'/></media:group><gd:rating average='3.6666667' max='5' min='1' numRaters='3' rel='http://schemas.google.com/g/2005#overall'/><yt:statistics favoriteCount='2' viewCount='867'/></entry>


Może jakby wykorzystać ten pierwszy i drugi punkt ?

Znalazlem jeszcze cos takiego.. http://stackoverflow.com/questions/1362345...1817569#1817569

Moze teraz ktoś ma jakieś pomysły jak to rozwiązać?
Pilsener
No to musisz użyć CURL by pobrać cały dokument HTML i go przeanalizować potem przy pomocy PHP. Popatrz jak robią to skrypty (katalogi stron, systemy wymiany linków), które sprawdzają, czy na stronie x znajduje się link y.
Rafee
Możesz podać nazwę skryptu takiego katalogu który sprawdza?
kilas88
Cytat(Pilsener @ 22.04.2010, 08:48:21 ) *
No to musisz użyć CURL by pobrać cały dokument HTML i go przeanalizować potem przy pomocy PHP. Popatrz jak robią to skrypty (katalogi stron, systemy wymiany linków), które sprawdzają, czy na stronie x znajduje się link y.

Bzdura. A jak YouTube zmieni kilka znaczników na swojej stronie to masz zmieniać cały swój skrypt i sposób pobierania informacji? Usługi sieciowe tworzy się po to, aby z nich korzystać. Takie parsowanie czyichś serwisów jest często także nielegalne.

Tutaj przykład usługi sieciowej:
http://pear.php.net/manual/en/package.webs...ube.example.php

Kolejne przykłady zapewne na phpclasses.org, PECL, dokumentacji API YouTube i setce innych miejsc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.