Arte7Bridge.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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->parameters["Catégorie (Français)"] = array(
  9. 'catfr'=>array(
  10. 'type'=>'list',
  11. 'name'=>'Catégorie',
  12. 'values'=>array(
  13. 'Toutes les vidéos (français)'=>'toutes-les-videos',
  14. 'Actu & société'=>'actu-société',
  15. 'Séries & fiction'=>'séries-fiction',
  16. 'Cinéma'=>'cinéma',
  17. 'Arts & spectacles classiques'=>'arts-spectacles-classiques',
  18. 'Culture pop'=>'culture-pop',
  19. 'Découverte'=>'découverte',
  20. 'Histoire'=>'histoire',
  21. 'Junior'=>'junior'
  22. )
  23. )
  24. );
  25. $this->parameters["Catégorie (Allemand)"] = array(
  26. 'catde'=>array(
  27. 'type'=>'list',
  28. 'name'=>'Catégorie',
  29. 'values'=>array(
  30. 'Alle Videos (deutsch)'=>'alle-videos',
  31. 'Aktuelles & Gesellschaft'=>'aktuelles-gesellschaft',
  32. 'Fernsehfilme & Serien'=>'fernsehfilme-serien',
  33. 'Kino'=>'kino',
  34. 'Kunst & Kultur'=>'kunst-kultur',
  35. 'Popkultur & Alternativ'=>'popkultur-alternativ',
  36. 'Entdeckung'=>'entdeckung',
  37. 'Geschichte'=>'geschichte',
  38. 'Junior'=>'junior'
  39. )
  40. )
  41. );
  42. }
  43. public function collectData(array $param){
  44. function extractVideoset($category='toutes-les-videos', $lang='fr')
  45. {
  46. $url = 'http://www.arte.tv/guide/'.$lang.'/plus7/'.$category;
  47. $input = $this->getContents($url) or die('Could not request ARTE.');
  48. if(strpos($input, 'categoryVideoSet') !== FALSE)
  49. {
  50. $input = explode('categoryVideoSet: ', $input);
  51. $input = explode('}},', $input[1]);
  52. $input = $input[0].'}}';
  53. }
  54. else
  55. {
  56. $input = explode('videoSet: ', $input);
  57. $input = explode('}]},', $input[1]);
  58. $input = $input[0].'}]}';
  59. }
  60. $input = json_decode($input, TRUE);
  61. return $input;
  62. }
  63. $category='toutes-les-videos'; $lang='fr';
  64. if (!empty($param['catfr']))
  65. $category=$param['catfr'];
  66. if (!empty($param['catde']))
  67. { $category=$param['catde']; $lang='de'; }
  68. $input_json = extractVideoset($category, $lang);
  69. foreach($input_json['videos'] as $element) {
  70. $item = array();
  71. $item['uri'] = str_replace("autoplay=1", "", $element['url']);
  72. $item['id'] = $element['id'];
  73. $hack_broadcast_time = $element['rights_end'];
  74. $hack_broadcast_time = strtok($hack_broadcast_time, 'T');
  75. $hack_broadcast_time = strtok('T');
  76. $item['timestamp'] = strtotime($element['scheduled_on'].'T'.$hack_broadcast_time);
  77. $item['title'] = $element['title'];
  78. if (!empty($element['subtitle']))
  79. $item['title'] = $element['title'].' | '.$element['subtitle'];
  80. $item['duration'] = round((int)$element['duration']/60);
  81. $item['content'] = $element['teaser'].'<br><br>'.$item['duration'].'min<br><a href="'.$item['uri'].'"><img src="' . $element['thumbnail_url'] . '" /></a>';
  82. $this->items[] = $item;
  83. }
  84. }
  85. public function getCacheDuration(){
  86. return 1800; // 30 minutes
  87. }
  88. }