PageRenderTime 65ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/modeles/lyrics.php

https://github.com/cyprieng/MediaStreamer
PHP | 68 lines | 44 code | 10 blank | 14 comment | 13 complexity | cdb7e6ca5d6f5487ae3de87c0150675f MD5 | raw file
  1. <?php
  2. require_once(ROOT_PATH.MODELE_PATH.'getid3/getid3.php'); //Bibliothèque tag audio
  3. /*
  4. Récupère les paroles d'une musique
  5. @params file Fichier musique
  6. @return Paroles
  7. @see http://lyrics.wikia.com
  8. */
  9. function lyrics($file){
  10. //On récupère les tag de la musique
  11. $getID3 = new getID3;
  12. $tag = $getID3->analyze($file);
  13. //On récupère le titre en fonction de la présence tu tag
  14. $title = (isset($tag['tags_html']['id3v1']['title'][0])) ? $tag['tags_html']['id3v1']['title'][0] : substr(strrchr($file,'/'),1);
  15. $artist = (isset($tag['tags_html']['id3v1']['artist'][0])) ? $tag['tags_html']['id3v1']['artist'][0] : '';
  16. //On récupère la page
  17. $lyrics = file_get_contents("http://lyrics.wikia.com/".urlencode(preg_replace('/ /', '_', $artist)).":".urlencode(preg_replace('/ /', '_', $title)));
  18. //On charge le dom
  19. $DOM = new DOMDocument;
  20. @$DOM->loadHTML($lyrics);
  21. $ok = false; //Var de test
  22. //On récupère le div de la bonne classe
  23. $items = $DOM->getElementsByTagName('div');
  24. for ($i = 0; $i < $items->length; $i++){
  25. if($items->item($i)->getAttribute('class') == 'WikiaPageContentWrapper'){
  26. $items = $items->item($i);
  27. $ok = true;
  28. break;
  29. }
  30. }
  31. if(!$ok) return 'Not Found';$ok = false; //On test si on a trouvé le div avec la class
  32. //On récupère le div de la bonne classe
  33. $items = $items->getElementsByTagName('div');
  34. for ($i = 0; $i < $items->length; $i++){
  35. if($items->item($i)->getAttribute('class') == 'mw-content-ltr'){
  36. $items = $items->item($i);
  37. $ok = true;
  38. break;
  39. }
  40. }
  41. if(!$ok) return 'Not Found';$ok = false; //On test si on a trouvé le div avec la class
  42. //On récupère le div de la bonne classe
  43. $items = $items->getElementsByTagName('div');
  44. for ($i = 0; $i < $items->length; $i++){
  45. if($items->item($i)->getAttribute('class') == 'lyricbox'){
  46. $items = $items->item($i);
  47. $ok = true;
  48. break;
  49. }
  50. }
  51. if(!$ok) return 'Not Found'; //On test si on a trouvé le div avec la class
  52. //On supprime les éléments qui ne nous intéresse pas
  53. $del = $items->getElementsByTagName('div');
  54. for ($i = 0; $i < $del->length; $i++)
  55. $del->item($i)->nodeValue = '';
  56. return $items->c14n(false); //On retourne les paroles
  57. }
  58. ?>