Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyciągnięcie z XML`a wskazanych wartości
VanDavv
post 3.07.2014, 22:27:10
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.07.2014

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


Witam.
Mam problem - jak w php odwołać się do podanej wartości w xml`u? Chodzi dokładnie o wyciągnięcie subscriberCount oraz media:thumbnail url z linku http://gdata.youtube.com/feeds/api/users/BeerCoasterTV .

Znalazłem w sieci takie odwołanie :

$vid = $_GET['id'];
$feedURL = 'http://gdata.youtube.com/feeds/api/videos/' . $vid;
$entry = simplexml_load_file($feedURL);


Dalej jest metoda :
$media = $entry->children('http://search.yahoo.com/mrss/');


Której nie do końca rozumiem, może w tym jest problem. Lecz nie za bardzo wiem co oznacza ,,Finds children of given node" i co powinienem wstawić, aby móc odczytać te wartości? dla przykładu, miniaturkę filmiku czyta się tak :
$attrs = $media->group->thumbnail[0]->attributes();
$obj->thumbnailURL = $attrs['url'];


Ale nie wiem jak to przełożyć na url avatara i liczbę subskrybentów.
Go to the top of the page
+Quote Post
SmokAnalog
post 3.07.2014, 23:30:10
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


A co powiesz na to, żeby opierać się na wyniku w formacie JSON zamiast XML? Czyli http://gdata.youtube.com/feeds/api/users/B...sterTV?alt=json

Zwrócony tekst dekodujesz funkcją json_decode i o wiele przyjemniej się na tym pracuje.
Go to the top of the page
+Quote Post
VanDavv
post 4.07.2014, 08:02:42
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 3.07.2014

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


a czy mógłbyś pokazać przykład kodu? Jestem zielony jeśli chodzi o php, a te przykłady znalazłem w sieci i dostosowałem do siebie. Skrypt powinien robić 5 rzeczy : wyświetlić miniaturkę filmiku, ilość wyświetleń, autora, awatar kanału i ilość subów. Pierwsze 3 już zrobiłem i kod wygląda tak :

  1. <?php
  2. // function to parse a video <entry>
  3. function parseVideoEntry($entry) {
  4. $obj= new stdClass;
  5.  
  6. // get author name and feed URL
  7. $obj->author = $entry->author->name;
  8. $obj->authorURL = $entry->author->uri;
  9.  
  10. // get nodes in media: namespace for media information
  11. $media = $entry->children('http://search.yahoo.com/mrss/');
  12. $obj->title = $media->group->title;
  13. $obj->description = $media->group->description;
  14. $obj->author = $entry->author->name;
  15. $obj->authorURL = $entry->author->uri;
  16.  
  17. // get video player URL
  18. $attrs = $media->group->player->attributes();
  19. $obj->watchURL = $attrs['url'];
  20.  
  21. // get video thumbnail
  22. $attrs = $media->group->thumbnail[0]->attributes();
  23. $obj->thumbnailURL = $attrs['url'];
  24.  
  25. // get user thumbnail
  26. $attrs = $entry->yt->statistics->attributes();
  27. $obj->subscriberCount = $attrs['subscriberCount'];
  28.  
  29. // get <yt:stats> node for viewer statistics
  30. $yt = $entry->children('http://gdata.youtube.com/schemas/2007');
  31. $attrs = $yt->statistics->attributes();
  32. $obj->viewCount = $attrs['viewCount'];
  33.  
  34.  
  35. // return object to caller
  36. return $obj;
  37. }
  38.  
  39. // get video ID from $_GET
  40. if (!isset($_GET['id'])) {
  41. die ('ERROR: Missing video ID');
  42. } else {
  43. $vid = $_GET['id'];
  44. }
  45.  
  46. // set video data feed URL
  47. $feedURL = 'http://gdata.youtube.com/feeds/api/videos/' . $vid;
  48.  
  49. // read feed into SimpleXML object
  50. $entry = simplexml_load_file($feedURL);
  51. // parse video entry
  52. $video = parseVideoEntry($entry);
  53.  
  54. // display main video record
  55. echo "<table>\n";
  56. echo "<tr>\n";
  57. echo "<td><a href=\"{$video->watchURL}\">
  58. <img src=\"$video->thumbnailURL\"/></a></td>\n";
  59. echo "<td><a href=\"{$video->watchURL}\">{$video->title}</a>
  60. <br/>\n";
  61. echo "{$video->viewCount} odslon<br/>\n";
  62. echo "{$video->author} autor<br/>\n";
  63. echo "</td>\n";
  64. echo "</tr>\n";
  65. echo "</table>\n";
  66.  
  67. ?>
Go to the top of the page
+Quote Post
Pyton_000
post 4.07.2014, 08:10:54
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Aby wyświetlić atrybut musisz go zrzutować na (string)

Więc coś takiego:
  1. $obj->viewCount = $attrs['viewCount'];

na:
  1. $obj->viewCount = (string)$attrs['viewCount'];


i analogicznie pozostałe attr
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 23:57