Arte7Bridge.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. class Arte7Bridge extends BridgeAbstract{
  3. public function loadMetadatas() {
  4. $this->maintainer = "mitsukarenai";
  5. $this->name = "Arte +7";
  6. $this->uri = "http://www.arte.tv/";
  7. $this->description = "Returns newest videos from ARTE +7";
  8. $this->update = "2015-10-31";
  9. $this->parameters["Catégorie (Français)"] =
  10. '[
  11. {
  12. "type" : "list",
  13. "identifier" : "catfr",
  14. "name" : "Catégorie",
  15. "values" : [
  16. {
  17. "name" : "Toutes les vidéos (français)",
  18. "value" : "toutes-les-videos"
  19. },
  20. {
  21. "name" : "Actu & société",
  22. "value" : "actu-société"
  23. },
  24. {
  25. "name" : "Séries & fiction",
  26. "value" : "séries-fiction"
  27. },
  28. {
  29. "name" : "Cinéma",
  30. "value" : "cinéma"
  31. },
  32. {
  33. "name" : "Arts & spectacles classiques",
  34. "value" : "arts-spectacles-classiques"
  35. },
  36. {
  37. "name" : "Culture pop",
  38. "value" : "culture-pop"
  39. },
  40. {
  41. "name" : "Découverte",
  42. "value" : "découverte"
  43. },
  44. {
  45. "name" : "Histoire",
  46. "value" : "histoire"
  47. },
  48. {
  49. "name" : "Junior",
  50. "value" : "junior"
  51. }
  52. ]
  53. }
  54. ]';
  55. $this->parameters["Catégorie (Allemand)"] =
  56. '[
  57. {
  58. "type" : "list",
  59. "identifier" : "catde",
  60. "name" : "Catégorie",
  61. "values" : [
  62. {
  63. "name" : "Alle Videos (deutsch)",
  64. "value" : "alle-videos"
  65. },
  66. {
  67. "name" : "Aktuelles & Gesellschaft",
  68. "value" : "aktuelles-gesellschaft"
  69. },
  70. {
  71. "name" : "Fernsehfilme & Serien",
  72. "value" : "fernsehfilme-serien"
  73. },
  74. {
  75. "name" : "Kino",
  76. "value" : "kino"
  77. },
  78. {
  79. "name" : "Kunst & Kultur",
  80. "value" : "kunst-kultur"
  81. },
  82. {
  83. "name" : "Popkultur & Alternativ",
  84. "value" : "popkultur-alternativ"
  85. },
  86. {
  87. "name" : "Entdeckung",
  88. "value" : "entdeckung"
  89. },
  90. {
  91. "name" : "Geschichte",
  92. "value" : "geschichte"
  93. },
  94. {
  95. "name" : "Junior",
  96. "value" : "junior"
  97. }
  98. ]
  99. }
  100. ]';
  101. }
  102. public function collectData(array $param){
  103. function extractVideoset($category='toutes-les-videos', $lang='fr')
  104. {
  105. $url = 'http://www.arte.tv/guide/'.$lang.'/plus7/'.$category;
  106. $input = file_get_contents($url) or die('Could not request ARTE.');
  107. if(strpos($input, 'categoryVideoSet') !== FALSE)
  108. {
  109. $input = explode('categoryVideoSet: ', $input);
  110. $input = explode('}},', $input[1]);
  111. $input = $input[0].'}}';
  112. }
  113. else
  114. {
  115. $input = explode('videoSet: ', $input);
  116. $input = explode('}]},', $input[1]);
  117. $input = $input[0].'}]}';
  118. }
  119. $input = json_decode($input, TRUE);
  120. return $input;
  121. }
  122. $category='toutes-les-videos'; $lang='fr';
  123. if (!empty($param['catfr']))
  124. $category=$param['catfr'];
  125. if (!empty($param['catde']))
  126. { $category=$param['catde']; $lang='de'; }
  127. $input_json = extractVideoset($category, $lang);
  128. foreach($input_json['videos'] as $element) {
  129. $item = new \Item();
  130. $item->uri = str_replace("autoplay=1", "", $element['url']);
  131. $item->id = $element['id'];
  132. $hack_broadcast_time = $element['rights_end'];
  133. $hack_broadcast_time = strtok($hack_broadcast_time, 'T');
  134. $hack_broadcast_time = strtok('T');
  135. $item->timestamp = strtotime($element['scheduled_on'].'T'.$hack_broadcast_time);
  136. $item->thumbnailUri = $element['thumbnail_url'];
  137. $item->title = $element['title'];
  138. if (!empty($element['subtitle']))
  139. $item->title = $element['title'].' | '.$element['subtitle'];
  140. $item->duration = round((int)$element['duration']/60);
  141. $item->content = $element['teaser'].'<br><br>'.$item->duration.'min<br><a href="'.$item->uri.'"><img src="' . $item->thumbnailUri . '" /></a>';
  142. $this->items[] = $item;
  143. }
  144. }
  145. public function getName(){
  146. return 'Arte7';
  147. }
  148. public function getURI(){
  149. return 'http://www.arte.tv/';
  150. }
  151. public function getCacheDuration(){
  152. return 1800; // 30 minutes
  153. }
  154. }