Arte7Bridge.php 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. class Arte7Bridge extends BridgeAbstract{
  3. const MAINTAINER = "mitsukarenai";
  4. const NAME = "Arte +7";
  5. const URI = "http://www.arte.tv/";
  6. const DESCRIPTION = "Returns newest videos from ARTE +7";
  7. const PARAMETERS = array(
  8. '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. '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(){
  44. switch($this->queriedContext){
  45. case 'Catégorie (Français)':
  46. $category=$this->getInput('catfr');
  47. $lang='fr';
  48. break;
  49. case 'Catégorie (Allemand)':
  50. $category=$this->getInput('catde');
  51. $lang='de';
  52. break;
  53. }
  54. $url = self::URI.'guide/'.$lang.'/plus7/'.$category;
  55. $input = getContents($url) or die('Could not request ARTE.');
  56. if(strpos($input, 'categoryVideoSet') !== FALSE){
  57. $input = explode('categoryVideoSet: ', $input);
  58. $input = explode('}},', $input[1]);
  59. $input = $input[0].'}}';
  60. }else{
  61. $input = explode('videoSet: ', $input);
  62. $input = explode('}]},', $input[1]);
  63. $input = $input[0].'}]}';
  64. }
  65. $input_json = json_decode($input, TRUE);
  66. foreach($input_json['videos'] as $element) {
  67. $item = array();
  68. $item['uri'] = str_replace("autoplay=1", "", $element['url']);
  69. $item['id'] = $element['id'];
  70. $hack_broadcast_time = $element['rights_end'];
  71. $hack_broadcast_time = strtok($hack_broadcast_time, 'T');
  72. $hack_broadcast_time = strtok('T');
  73. $item['timestamp'] = strtotime($element['scheduled_on'].'T'.$hack_broadcast_time);
  74. $item['title'] = $element['title'];
  75. if (!empty($element['subtitle']))
  76. $item['title'] = $element['title'].' | '.$element['subtitle'];
  77. $item['duration'] = round((int)$element['duration']/60);
  78. $item['content'] = $element['teaser'].'<br><br>'.$item['duration'].'min<br><a href="'.$item['uri'].'"><img src="' . $element['thumbnail_url'] . '" /></a>';
  79. $this->items[] = $item;
  80. }
  81. }
  82. public function getCacheDuration(){
  83. return 1800; // 30 minutes
  84. }
  85. }