在页面标题(浏览器标签)中显示歌曲的元数据?

问题描述 投票:0回答:1

我会将我的编码技能标记为中级,因此,我所要求的可能是简单的,也可能不是简单的(显而易见)。我也衷心感谢任何对此给予了极大关注的人。

我的目标是通过jsonp和ajax方法从另一台服务器(我是其客户端)中获取原始歌曲元数据。成功获取元数据(艺术家,标题和专辑)后,然后我想在我网站的页面标题中显示它(请参见下面的图片)。我之所以要这样做,是因为从广泛的研究中可以发现,大多数蓝牙音频设备正在读取页面标题(浏览器选项卡)中的元数据:Google Music playing in browserBT Audio player

[我想做的事看起来应该很简单,但我无法想像Spotify,Youtube或Google Music那样在浏览器中显示“艺术家,标题和专辑”。

我下面的代码能够提取原始数据,使用jsonp进行转换,我可以通过将其作为ID元素成功地从原始数据(IE'title')中仅推送一个元素。但是,如何将所有三个(艺术家,标题和专辑)推送到页面标题?

    <!DOCTYPE html>
<html 
    lang=en
    dir="ltr"
    class="mobile-web-player"
>

<head>
       <meta charset="UTF-8">
       <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
      
<script type="text/javascript">      
         function update(metadataObj) {
            if (metadataObj && metadataObj.m_Item2) {
               
               var title = document.getElementById('title');
               title.innerHTML = metadataObj.m_Item2.Title;
               
               var artist = document.getElementById('artist');
               artist.innerHTML = 'by ' +   metadataObj.m_Item2.Artist;

               var album = document.getElementById('album');
               album.innerHTML = metadataObj.m_Item2.Album + ' ';
              
            }
         }         
</script>
      
      <script type="text/javascript">
            var stationID = 'X123';
            var apiToken = 'X12345';
            // refresh MetaData every 5 seconds
         function fetchMetadata(stationID, apiToken) {            
            $.ajax({
               type: 'get',
               cache: false,
               url: "https://listen.samcloud.com/webapi/station/X123/history/npe?token=X12345&callback=update&format=json",
               //async: true,
               datatype: 'jsonp',
            });
         }
         fetchMetadata(stationID, apiToken);
         window.setInterval(function() {
            fetchMetadata(stationID, apiToken);
         }, 5000);
      </script>

<!-- I can successfully send the song's title to my page title via <title id> method -->
<title id="title">My Radio Station</title>

</head>

<body>
</body>

</html>
javascript metadata jsonp
1个回答
0
投票

update()功能中,您可以调用document.title来设置新的标签标题,而不是设置<title>标签。例如:

function update(metadataObj) {
  if (metadataObj && metadataObj.m_Item2) {

     var title = document.getElementById('title');
     var artist = document.getElementById('artist');
     var album = document.getElementById('album');
     // If you are using es6
     document.title = `Playing ${title} from ${artist} - ${album}`;
     // If not using es6
     // document.title = 'Playing '+ title + ' from '+ artist +' - album';
  }
}    
© www.soinside.com 2019 - 2024. All rights reserved.