diff options
author | Valentin Popov <info@valentineus.link> | 2018-05-31 05:23:26 +0300 |
---|---|---|
committer | Valentin Popov <info@valentineus.link> | 2018-05-31 05:23:26 +0300 |
commit | bdf01fe3c1b1f16a47450959da2d4d5fec6108ba (patch) | |
tree | 6bf8f09b2bbcb2462b0b75579a45c2fe8c0f2e9d /_includes/javascript.html | |
parent | 7812429da22582763f13e0cdc58f8af18fbcb5ce (diff) | |
download | obs-somafm_current_track-bdf01fe3c1b1f16a47450959da2d4d5fec6108ba.tar.xz obs-somafm_current_track-bdf01fe3c1b1f16a47450959da2d4d5fec6108ba.zip |
Other script connection
Signed-off-by: Valentin Popov <info@valentineus.link>
Diffstat (limited to '_includes/javascript.html')
-rw-r--r-- | _includes/javascript.html | 77 |
1 files changed, 76 insertions, 1 deletions
diff --git a/_includes/javascript.html b/_includes/javascript.html index 6a5316f..7b9e861 100644 --- a/_includes/javascript.html +++ b/_includes/javascript.html @@ -1,2 +1,77 @@ <!-- Updates track names --> -<script type="text/javascript" src="assets/javascript/script.js"></script> +<script type="text/javascript"> + 'use strict'; + + /** + * @param {String} parameterName - Variable name + * @returns {String} Value of variable + * @description Searches for the value of the GET variable on the page. + */ + function findGetParameter(parameterName) { + var result = null; + var tmp = []; + + var items = window.location.search.substr(1).split('&'); + for (var index = 0; index < items.length; index++) { + tmp = items[index].split('='); + if (tmp[0] === parameterName) { + result = decodeURIComponent(tmp[1]); + } + } + + return result; + } + + /** + * @param {String} artistTrack - Artist of the track + * @param {String} titleTrack - Name of the track + * @description Updates the data on the page. Displays a pop-up window if the + * data has changed. + */ + function updateData(artistTrack, titleTrack) { + /* Gets items on the page */ + var displayElement = document.getElementById('display'); + var artistElement = document.getElementById('artist'); + var titleElement = document.getElementById('title'); + + if (artistElement.textContent !== artistTrack || titleElement.textContent !== titleTrack) { + /* Updates text */ + document.title = artistTrack + ' - ' + titleTrack; + artistElement.textContent = artistTrack; + titleElement.textContent = titleTrack; + + /* Displays a pop-up window */ + displayElement.style['animation-name'] = 'fadeIn'; + + setTimeout(function () { + /* Removes a pop-up window */ + displayElement.style['animation-name'] = 'fadeOut'; + }, 5000); + } + } + + var client = new XMLHttpRequest(); + var radio = findGetParameter('radio'); + var url = '//somafm.com/songs/' + radio + '.xml'; + + /* Processes response */ + client.onload = function () { + if (client.readyState === client.DONE) { + if (this.status === 200 && this.responseXML !== null) { + /* Gets current track */ + var current = this.responseXML.getElementsByTagName('song')[0]; + var artist = current.getElementsByTagName('artist')[0].textContent; + var title = current.getElementsByTagName('title')[0].textContent; + + /* Updates data */ + updateData(artist, title); + } + } + }; + + /* Update cycle */ + setInterval(function () { + client.open('GET', url); + client.send(); + }, 10000); +</script> |