radio.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /**** Radio Functions ****/
  2. /* Last-fm API */
  3. (function( $ ) {
  4. $.fn.lfmr = function(options){
  5. var urla = "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=windhamdavid&api_key=e12ea1d0253898ee9a93edfe42ffdeab&format=json&limit=100";
  6. var tracks = [];
  7. function isLoadedr (recentElement) {
  8. for (var i = 0; i < tracks.length; i++){
  9. var markup = $("<li class='list-group-item'>" + tracks[i].artist + " - <span class='artist'>" + tracks[i].title + " : " + tracks[i].album + "</li>");
  10. recentElement.append(markup);
  11. }
  12. }
  13. return this.each(function(){
  14. var $this = $(this);
  15. $.getJSON( urla, function(data){
  16. $(data.recenttracks.track).each(function(){
  17. tracks.push ({
  18. artist: this.artist["#text"],
  19. title: this.name,
  20. album: this.album["#text"]
  21. });
  22. });
  23. isLoadedr($this);
  24. });
  25. });
  26. };
  27. $('.recent').lfmr();
  28. $.fn.lfya = function(options){
  29. var urla = "https://ws.audioscrobbler.com/2.0/?method=user.gettopartists&user=windhamdavid&api_key=e12ea1d0253898ee9a93edfe42ffdeab&period=12month&format=json&limit=100";
  30. var artists = [];
  31. function isLoadeda (artistElement) {
  32. for (var i = 0; i < artists.length; i++){
  33. var markup = $("<li class='list-group-item'>" + artists[i].aname + "<span class='badge'>" + artists[i].played + "</span></li>");
  34. artistElement.append(markup);
  35. }
  36. }
  37. return this.each(function(){
  38. var $this = $(this);
  39. $.getJSON( urla, function(data){
  40. $(data.topartists.artist).each(function(){
  41. artists.push ({
  42. aname: this.name,
  43. played: this.playcount
  44. });
  45. });
  46. isLoadeda($this);
  47. });
  48. });
  49. };
  50. $('.artists').lfya();
  51. $.fn.lfyt = function(options){
  52. var urla = "https://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=windhamdavid&api_key=e12ea1d0253898ee9a93edfe42ffdeab&period=12month&format=json&limit=100";
  53. var tracks = [];
  54. function isLoadedt (tracksElement) {
  55. for (var i = 0; i < tracks.length; i++){
  56. var markup = $("<li class='list-group-item'>" + tracks[i].artist + " - <span class='artist'>" + tracks[i].title + "</span><span class='badge'>" + tracks[i].played + "</span></li>");
  57. tracksElement.append(markup);
  58. }
  59. }
  60. return this.each(function(){
  61. var $this = $(this);
  62. $.getJSON( urla, function(data){
  63. $(data.toptracks.track).each(function(){
  64. tracks.push ({
  65. title: this.name,
  66. artist: this.artist.name,
  67. played: this.playcount,
  68. });
  69. });
  70. isLoadedt($this);
  71. });
  72. });
  73. };
  74. $('.tracks').lfyt();
  75. })( jQuery );
  76. amplitude_config = {
  77. // amplitude_songs: []
  78. "amplitude_songs": [{
  79. "url": "http://stream.davidawindham.com:8008/stream",
  80. "live": true
  81. }],
  82. "amplitude_volume": 90
  83. }
  84. function get_radio_tower() {return 'img/radio.gif';}
  85. function get_radio_none() {return 'img/none.svg';}
  86. function get_radio_eq() {return 'img/eq.gif';}
  87. function get_radio_eq_none() {return 'img/none.svg';}
  88. var interval = null;
  89. $(document).ready(function() {
  90. interval = setInterval(radioTitle,30000); // every 30 seconds stop polling if offline
  91. });
  92. function radioTitle() {
  93. $('#radio').attr('src', get_radio_none()).fadeIn(300);
  94. $('#eq').attr('src', get_radio_eq_none()).fadeIn(300);
  95. var url = 'http://stream.davidawindham.com/status2.xsl';
  96. var mountpoint = '/stream';
  97. $.ajax({ type: 'GET',
  98. url: url,
  99. async: true,
  100. jsonpCallback: 'parseMusic',
  101. contentType: "application/json",
  102. dataType: 'jsonp',
  103. success: function (json) {
  104. $('#track').text(json[mountpoint].title);
  105. $('#listeners').text(json[mountpoint].listeners);
  106. $('#peak-listeners').text(json[mountpoint].peak_listeners);
  107. $('#bitrate').text(json[mountpoint].bitrate);
  108. $('#radio').attr('src', get_radio_tower()).fadeIn(300);
  109. $('#eq').attr('src', get_radio_eq()).fadeIn(300);
  110. },
  111. error: function(e){
  112. console.error('cannot connect to stream');
  113. $('#connection-error').modal('show');
  114. clearInterval(interval);
  115. $('#radio').attr('src', get_radio_none()).fadeIn(300);
  116. $('#eq').attr('src', get_radio_eq_none()).fadeIn(300);
  117. }
  118. });
  119. }
  120. $(document).ready(function() {
  121. function spectrum() {
  122. var randomColor = Math.floor(Math.random()*16777215).toString(16);
  123. $("span#user-label").css({ backgroundColor: '#' + randomColor });
  124. };
  125. $('ul.nav-tabs a').tooltip();
  126. });