Jamendocom.php 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace Muzich\CoreBundle\Factory\Elements;
  3. use Muzich\CoreBundle\Factory\ElementFactory;
  4. use Muzich\CoreBundle\Entity\Element;
  5. use Muzich\CoreBundle\Factory\UrlMatchs;
  6. use Symfony\Component\DependencyInjection\Container;
  7. use Doctrine\ORM\EntityManager;
  8. class Jamendocom extends ElementFactory
  9. {
  10. public function __construct(Element $element, Container $container, EntityManager $entity_manager)
  11. {
  12. $this->url_matchs = UrlMatchs::$jamendo;
  13. parent::__construct($element, $container, $entity_manager);
  14. }
  15. public function getStreamData()
  16. {
  17. $ref_id = $this->element->getData(Element::DATA_REF_ID);
  18. $api_url = "http://api.jamendo.com/get2/name+stream/track/json/?". $this->element->getData(Element::DATA_TYPE)."_id=".$ref_id;
  19. if ($ref_id)
  20. {
  21. $response = $this->getApiConnector()->getResponseForUrl($api_url);
  22. if (count($response->getContent()))
  23. {
  24. $data_return = array();
  25. foreach ($response->getContent() as $song)
  26. {
  27. $data_return[] = array(
  28. 'name' => $song['name'],
  29. 'url' => $song['stream'],
  30. );
  31. }
  32. return $data_return;
  33. }
  34. }
  35. }
  36. public function proceedDatas()
  37. {
  38. $this->retrieveDatas();
  39. $this->proceedThumbnailUrl();
  40. }
  41. protected function getApiUrl()
  42. {
  43. switch ($this->url_analyzer->getType())
  44. {
  45. case Element::TYPE_ALBUM:
  46. return "http://api.jamendo.com/get2/id+name+url+image+artist_name+artist_url/album/json/?album_id="
  47. .$this->url_analyzer->getRefId();
  48. break;
  49. case Element::TYPE_TRACK:
  50. return "http://api.jamendo.com/get2/id+name+url+image+artist_name+artist_url+track_name/album/json/?track_id="
  51. .$this->url_analyzer->getRefId();
  52. break;
  53. }
  54. }
  55. protected function getApiTagUrl()
  56. {
  57. return "http://api.jamendo.com/get2/name+weight/tag/json/".$this->url_analyzer->getType()."_tag/?".$this->url_analyzer->getType()."_id="
  58. .$this->url_analyzer->getRefId();
  59. }
  60. public function retrieveDatas()
  61. {
  62. if (($response = $this->getApiConnector()->getResponseForUrl($this->getApiUrl())))
  63. {
  64. // Check si tout se passe bien si pas de retour de l'api
  65. $this->getApiConnector()->setElementDatasWithResponse($response, array(
  66. Element::DATA_THUMB_URL => array(0 => 'image'),
  67. Element::DATA_ARTIST => array(0 => 'artist_name'),
  68. ));
  69. if ($this->url_analyzer->getType() == Element::TYPE_ALBUM)
  70. {
  71. $this->element->setData(Element::DATA_TITLE, $response->get(array(0 => 'name')));
  72. }
  73. if ($this->url_analyzer->getType() == Element::TYPE_TRACK)
  74. {
  75. $this->element->setData(Element::DATA_TITLE, $response->get(array(0 => 'track_name')));
  76. }
  77. $tags = array();
  78. $response = $this->getApiConnector()->getResponseForUrl($this->getApiTagUrl());
  79. if (count($response->getContent()))
  80. {
  81. foreach ($response->getContent() as $tag)
  82. {
  83. $tags[] = $tag['name'];
  84. }
  85. }
  86. $this->element->setData(Element::DATA_TAGS, $tags);
  87. }
  88. // Un contenu jamendo est toujours téléchargeable
  89. $this->element->setData(Element::DATA_DOWNLOAD, true);
  90. }
  91. public function proceedThumbnailUrl()
  92. {
  93. if (($thumb = $this->element->getData(Element::DATA_THUMB_URL)))
  94. {
  95. $this->element->setThumbnailUrl($thumb);
  96. }
  97. }
  98. }