Grooveshark 是一个用于收听音乐的网络应用程序。 你可以在那里搜索和播放几乎任何歌曲。 通过帐户,你可以收藏歌曲、创建播放列表、进行社交活动,你懂得。 也许不太为人知的是,Grooveshark 拥有 API,它允许你将音乐播放到自己的网站上。 这将是一个教程和示例代码,向你展示如何做到这一点。
这是计划

要求
首先,你必须 申请 API 密钥。 这不是免费的 API。 我不确定确切的成本,所以我建议直接申请,解释你想做什么,他们会与你联系并告知成本。 对于流量高的网站,他们有时会提供托管一个支持 Grooveshark 的广告作为一种选择。
有了它,我们将使用以下技术
- jQuery (Ajax 等)
- SWFObject (嵌入 Flash)
- Grooveshark 流媒体 API 和 PHP API 包装器
- Tinysong API 和 PHP API 包装器
1. 将 Grooveshark Flash (SWF) 嵌入页面
Grooveshark 播放器是一个(不可见的)Flash 嵌入。 加载到页面后,你可以通过 JavaScript 控制它。 将其嵌入页面就像这样
...
<script src="swfobject/swfobject.js"></script>
</head>
<body>
<div id="player"></div>
<script>
swfobject.embedSWF("http://grooveshark.com/APIPlayer.swf", "player", "300", "300", "9.0.0", "", {}, {allowScriptAccess: "always"}, {id:"groovesharkPlayer", name:"groovesharkPlayer"}, function(e) {
var element = e.ref;
if (element) {
setTimeout(function() {
window.player = element;
window.player.setVolume(99);
}, 1500);
} else {
// Couldn't load player
// Play sad trombone
}
});
</script>
为了确保它不可见
#groovesharkPlayer {
position: absolute;
top: -9999px;
left: -9999px;
}
2. 拥有一个 songGetter.php
这是我们的本地文件,我们的页面将通过 Ajax 调用它来请求 Grooveshark 的流媒体信息。 本质上,该文件加载 API 包装器,然后使用其方法获取我们需要传递给 SWF 以开始播放音乐的信息。
<?php
session_start();
// Make sure to validate and cleanse this and stuff.
$songID = $_POST['song'];
// Load up API wrapper
require("gsAPI.php");
$gsapi = new gsAPI('API-USERNAME', 'API-KEY');
gsAPI::$headers = array("X-Client-IP: " . $_SERVER['REMOTE_ADDR']);
// Session caching stuff
if (isset($_SESSION['gsSession']) && !empty($_SESSION['gsSession'])) {
$gsapi->setSession($_SESSION['gsSession']);
} else {
$_SESSION['gsSession'] = $gsapi->startSession();
}
if (!$_SESSION['gsSession']) {
die("noSession");
}
if (isset($_SESSION['gsCountry']) && !empty($_SESSION['gsCountry'])) {
$gsapi->setCountry($_SESSION['gsCountry']);
} else {
$_SESSION['gsCountry'] = $gsapi->getCountry();
}
if (!$_SESSION['gsCountry']) {
die("noCountry");
}
// Make request to Grooveshark and return data as JSON
$streamInfo = $gsapi->getStreamKeyStreamServer($songID, false);
echo json_encode($streamInfo);
?>
3. 从点击播放歌曲
假设我们页面上有一个链接,点击它,我们希望播放一首歌。
<a href="#" data-songid="23391593">Play This Song</a>
因此,使用 jQuery,我们将监听该点击,并触发一个自定义函数。 我们将把歌曲 ID 传递给该自定义函数,该歌曲 ID 将从该链接的 HTML5 数据属性中获取。
var doc = $(document);
doc.on("click", "a[data-songid]", function(e) {
e.preventDefault();
playSong($(this).data("songid"));
});
而我们的自定义函数 playSong 只是一个针对我们设置的 songGetter.php 文件的 Ajax 请求
function playSong(songID) {
$.ajax({
url: "api/songGetter.php",
type: "POST",
data: {
song: songID
},
success: function(response) {
var responseData = $.parseJSON(response);
window.player.playStreamKey(responseData.StreamKey, responseData.StreamServerHostname, responseData.StreamServerID);
}
});
}
太棒了。
演示
你可以看到这一切在行动
演示还包括 TinySong API 功能。 这是至关重要的部分,因为它提供了 Grooveshark 需要识别特定歌曲的歌曲 ID。 结合使用这两个 API 来创建搜索和播放功能非常容易,尽管此演示没有该功能,因为它需要一个对互联网开放的 songGetter.php 文件。 此实时演示中的特定 songGetter.php 文件被锁定为仅用于演示页面上的那些歌曲。
所有这些都可以在 GitHub 上找到。
法律问题
如果你将歌曲的音频文件直接上传到你的服务器并使用它在你的网站上播放音乐,如果该音乐受版权保护,你可能会遇到麻烦。 这是一种避免这样做的方法,但仍然可以播放该音乐。 我不是律师,但由于你没有分发音乐,而分发音乐的公司支付了版税,我认为你是安全的。 如果有人对此了解更多,请随时在下面的评论中分享。
是否有针对此的 HTML5 可用? 我之前使用过 jPlayer,它具有很好的降级功能,但这似乎更容易使用…… 缺乏 HTML5/移动设备支持是一个缺点。
喜欢 “Gus 究竟怎么了?” 的选择。
那张图让我的早晨变得美好多了! 谢谢。
我在 Gizmodo 上读到 Grooveshark 将会被环球唱片公司摧毁,因为他们非法上传了歌曲…… 可能要谨慎行事。
我同意 Lindsay 的观点:远离 Grooveshark。 他们很阴险。
网站上的音乐? 太棒了!
我怀念 90 年代…… :-/
说真的,GrooveShark 真的很糟糕(如上所述)。 我会避开他们。
尽管如此,看到如何在不上传文件的情况下完成它,以及浏览器中的挂起时间,还是很有意思的。
DM
关于 Grooveshark 的一些有趣的最新消息:http://news.cnet.com/8301-31001_3-57332246-261/grooveshark-chairman-spills-beans-on-label-strategy/
我一直使用 Grooveshark! 太可惜这个 API 不是免费的 :(
而且我不认为 Grooveshark 有什么问题。 我可以在 YouTube 上获得相同的音乐……
只要众所周知自动播放是网络音频的大忌,我就会对这个 API 的任何方向感到满意。
很棒的设计相关网站! 我在你的博客上找到了很多很棒的作品。 非常感谢与我们分享。
http://soundcloud.com/ 也提供小部件。 我没有使用过它,但看起来很可靠。
好文章,感谢分享,我稍后会试试。
我之前是 Grooveshark 的忠实用户,主要是因为我的播放列表中的许多歌曲随机消失(如果你使用 API,而你的歌曲消失了,这会很糟糕)——另外,音质往往很差。
没有 API,但如果你正在寻找 Grooveshark 的好替代品,Spotify 很棒。
我也是 SoundCloud 小部件的粉丝。 我在我的网站上使用它。 从我作为一个业余音乐家的角度来看,这是一个展示我作品的好方法。 我真的很希望 HTML5 的 <audio> 标签能够得到更好的浏览器支持。
有趣的信息。我最近在 Quora 上发布了一个关于在 Facebook 页面中播放歌曲的问题。我对服务的具体要求与这里概述的类似。
有趣的是,有人指出 Grooveshark 不是一个获得授权的音乐网站。也许大多数人并不关心,但值得一提。干杯!
之前使用过 Jplayer,但我想看看 Grooveshark 的运作方式,所以我会尝试一下。干杯,伙计!
谢谢,有趣的文章。只是我在搜索俄语音乐时遇到了问题 :(
演示页面似乎不起作用?