Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Sprawdzenie dostępności filmu z youtube.com
Rafee
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 2.11.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Źle skonstruowane szablony w silnikach blogowych podmieniają cudzysłowy "kodowe" na drukarskie, przejrzyj je uważnie.
Go to the top of the page
+Quote Post
Rafee
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 2.11.2008

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Rafee 21.04.2010, 12:45:00
Go to the top of the page
+Quote Post
kilas88
post
Post #4





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
Rafee
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 2.11.2008

Ostrzeżenie: (0%)
-----


Nie jestem za dobrym programista, staram się używać gotowych przykładów
Go to the top of the page
+Quote Post
Pilsener
post
Post #6





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Rafee
post
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 2.11.2008

Ostrzeżenie: (0%)
-----


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...

(IMG:http://i40.tinypic.com/213i39.jpg)
Go to the top of the page
+Quote Post
kilas88
post
Post #8





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

Ostrzeżenie: (0%)
-----


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...

(IMG:http://i40.tinypic.com/213i39.jpg)

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.

Ten post edytował kilas88 21.04.2010, 16:38:59
Go to the top of the page
+Quote Post
Rafee
post
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 2.11.2008

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował Rafee 21.04.2010, 17:35:06
Go to the top of the page
+Quote Post
Pilsener
post
Post #10





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Rafee
post
Post #11





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 2.11.2008

Ostrzeżenie: (0%)
-----


Możesz podać nazwę skryptu takiego katalogu który sprawdza?
Go to the top of the page
+Quote Post
kilas88
post
Post #12





Grupa: Zarejestrowani
Postów: 305
Pomógł: 25
Dołączył: 27.01.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:43