1
0

functions.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. function PlayAudio(audio_url, song_id) {
  2. var audio = document.getElementById('player');
  3. var source = document.getElementById('audioSource');
  4. source.src = audio_url;
  5. var name = document.getElementById(song_id+"-n").textContent;
  6. var album = document.getElementById(song_id+"-a").textContent;
  7. var image = document.getElementById(song_id+"-i").getAttribute("src");
  8. document.title = name+" - "+album;
  9. var bitrate = document.getElementById('saavn-bitrate');
  10. var bitrate_i = bitrate.options[bitrate.selectedIndex].value;
  11. var quality = "";
  12. if (bitrate_i == 4) {quality = 320} else {quality = 160;}
  13. document.getElementById("player-name").innerHTML = name;
  14. document.getElementById("player-album").innerHTML = album;
  15. document.getElementById("player-image").setAttribute("src",image);
  16. var promise = audio.load();
  17. if (promise) {
  18. //Older browsers may not return a promise, according to the MDN website
  19. promise.catch(function(error) { console.error(error); });
  20. }//call this to just preload the audio without playing
  21. audio.play(); //call this to play the song right away
  22. };
  23. function searchSong(search_term) {
  24. document.getElementById('search-box').value=search_term;
  25. var goButton = document.getElementById("search-trigger");
  26. goButton.click();
  27. }
  28. var DOWNLOAD_API = "https://openmp3compiler.astudy.org"
  29. function AddDownload(id) {
  30. var bitrate = document.getElementById('saavn-bitrate');
  31. var bitrate_i = bitrate.options[bitrate.selectedIndex].value;
  32. // MP3 server API
  33. var MP3DL = DOWNLOAD_API+"/add?id="+id;
  34. // make api call, if 200, add to download list
  35. fetch(MP3DL)
  36. .then(response => response.json())
  37. .then(data => {
  38. if (data.status == "success") {
  39. // add to download list
  40. var download_list = document.getElementById("download-list");
  41. var download_item = document.createElement("li");
  42. /*
  43. <li>
  44. <div class="col">
  45. <img src="https://i.pinimg.com/originals/ed/54/d2/ed54d2fa700d36d4f2671e1be84651df.jpg" width="50px">
  46. <div style="display: inline;">
  47. <span id="download-name">Song</span>
  48. <span id="download-album">Album</span>
  49. <br>
  50. <span id="download-size">Size</span>
  51. <span id="download-status" style="color:green">Compiling.</span>
  52. </div>
  53. </div>
  54. <hr>
  55. </li>
  56. */
  57. // download_item.innerHTML = '<div class="col"><img src="'+data.image+'" width="50px"><div style="display: inline;"><span id="download-name">'+id+'</span><span id="download-album">'+data.album+'</span><br><span id="download-size">'+data.size+'</span><span id="download-status" style="color:green">Compiling.</span></div></div><hr>';
  58. download_item.innerHTML = `
  59. <div class="col">
  60. <img class="track-img" src="${data.image}" width="50px">
  61. <div style="display: inline;">
  62. <span class="track-name"> ${id}</span> -
  63. <span class="track-album"> ${data.album}</span>
  64. <br>
  65. <span class="track-size"> Size : Null</span>
  66. <span class="track-status" style="color:green"> </span>
  67. </div>
  68. </div>
  69. <hr>
  70. `;
  71. // set download_item track_tag to song id
  72. download_item.setAttribute("track_tag",id);
  73. // set css class no-bullets
  74. download_item.className = "no-bullets";
  75. download_list.appendChild(download_item);
  76. // every 5 seconds, check download status
  77. var STATUS_URL = DOWNLOAD_API+"/status?id="+id;
  78. // get download_status_span by track_tag and class
  79. var download_status_span = document.querySelector('[track_tag="'+id+'"] .track-status');
  80. var download_name = document.querySelector('[track_tag="'+id+'"] .track-name');
  81. var download_album = document.querySelector('[track_tag="'+id+'"] .track-album');
  82. var download_img = document.querySelector('[track_tag="'+id+'"] .track-img');
  83. var download_size = document.querySelector('[track_tag="'+id+'"] .track-size');
  84. // set text content to song name and album name
  85. download_name.innerHTML= results_objects[id].track.name;
  86. download_status_span.innerHTML = data.status;
  87. download_album.innerHTML = results_objects[id].track.album.name;
  88. download_img.setAttribute("src",results_objects[id].track.image[2].link);
  89. // change mpopupLink background and border color to green and back to blue after 1 second
  90. var float_tap = document.getElementById('mpopupLink');
  91. float_tap.style.backgroundColor = "green";
  92. float_tap.style.borderColor = "green";
  93. setTimeout(function() {
  94. float_tap.style.backgroundColor = "#007bff";
  95. float_tap.style.borderColor = "#007bff";
  96. }, 1000);
  97. // check status every 5 seconds
  98. var interval = setInterval(function() {
  99. fetch(STATUS_URL)
  100. .then(response => response.json())
  101. .then(data => {
  102. if (data.status) {
  103. // update status
  104. download_status_span.textContent = data.status;
  105. if(data.size) {
  106. download_size.textContent = "Size: "+data.size;
  107. }
  108. if (data.status == "Done") {
  109. // download complete, add download button
  110. download_status_span.innerHTML = `<a href="${DOWNLOAD_API}${data.url}" target="_blank">Download MP3</a>`;
  111. // clear interval
  112. clearInterval(interval);
  113. return;
  114. }}
  115. });}, 3000); // end interval
  116. } });}