✨缓存网易云数据,新增快捷键功能
缓存网易云歌词及歌单数据,防止因请求频繁导致无法获取数据(请确保程序目录下的 cache 文件夹存在且可读写); 新增快捷键控制功能(Ctrl + 方向键 切歌,空格 暂停)感谢 @茗血。pull/40/head^2
parent
64f4f80a0e
commit
a22f634eb6
49
api.php
49
api.php
|
@ -24,6 +24,7 @@ $netease_cookie = '';
|
|||
|
||||
define('HTTPS', false); // 如果您的网站启用了https,请将此项置为“true”,如果你的网站未启用 https,建议将此项设置为“false”
|
||||
define('DEBUG', false); // 是否开启调试模式,正常使用时请将此项置为“false”
|
||||
define('CACHE_PATH', 'cache/'); // 文件缓存目录,请确保该目录存在且有读写权限。如无需缓存,可将此行注释掉
|
||||
|
||||
/*
|
||||
如果遇到程序不能正常运行,请开启调试模式,然后访问 http://你的网站/音乐播放器地址/api.php ,进入服务器运行环境检测。
|
||||
|
@ -52,7 +53,11 @@ if($source == 'kugou' || $source == 'baidu') {
|
|||
$API->cookie($netease_cookie); // 解决网易云 Cookie 失效
|
||||
}
|
||||
|
||||
switch(getParam('types')) // 根据请求的 Api,执行相应操作
|
||||
// 没有缓存文件夹则创建
|
||||
if(defined('CACHE_PATH') && !is_dir(CACHE_PATH)) createFolders(CACHE_PATH);
|
||||
|
||||
$types = getParam('types');
|
||||
switch($types) // 根据请求的 Api,执行相应操作
|
||||
{
|
||||
case 'url': // 获取歌曲链接
|
||||
$id = getParam('id'); // 歌曲ID
|
||||
|
@ -73,7 +78,22 @@ switch(getParam('types')) // 根据请求的 Api,执行相应操作
|
|||
case 'lyric': // 获取歌词
|
||||
$id = getParam('id'); // 歌曲ID
|
||||
|
||||
$data = $API->lyric($id);
|
||||
if(($source == 'netease') && defined('CACHE_PATH')) {
|
||||
$cache = CACHE_PATH.$source.'_'.$types.'_'.$id.'.json';
|
||||
|
||||
if(file_exists($cache)) { // 缓存存在,则读取缓存
|
||||
$data = file_get_contents($cache);
|
||||
} else {
|
||||
$data = $API->lyric($id);
|
||||
|
||||
// 只缓存链接获取成功的歌曲
|
||||
if(json_decode($data)->lyric !== '') {
|
||||
file_put_contents($cache, $data);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$data = $API->lyric($id);
|
||||
}
|
||||
|
||||
echojson($data);
|
||||
break;
|
||||
|
@ -97,7 +117,22 @@ switch(getParam('types')) // 根据请求的 Api,执行相应操作
|
|||
case 'playlist': // 获取歌单中的歌曲
|
||||
$id = getParam('id'); // 歌单ID
|
||||
|
||||
$data = $API->format(false)->playlist($id);
|
||||
if(($source == 'netease') && defined('CACHE_PATH')) {
|
||||
$cache = CACHE_PATH.$source.'_'.$types.'_'.$id.'.json';
|
||||
|
||||
if(file_exists($cache) && (date("Ymd", filemtime($cache)) == date("Ymd"))) { // 缓存存在,则读取缓存
|
||||
$data = file_get_contents($cache);
|
||||
} else {
|
||||
$data = $API->format(false)->playlist($id);
|
||||
|
||||
// 只缓存链接获取成功的歌曲
|
||||
if(isset(json_decode($data)->playlist->tracks)) {
|
||||
file_put_contents($cache, $data);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$data = $API->format(false)->playlist($id);
|
||||
}
|
||||
|
||||
echojson($data);
|
||||
break;
|
||||
|
@ -135,6 +170,14 @@ switch(getParam('types')) // 根据请求的 Api,执行相应操作
|
|||
echo '</body></html>';
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建多层文件夹
|
||||
* @param $dir 路径
|
||||
*/
|
||||
function createFolders($dir) {
|
||||
return is_dir($dir) or (createFolders(dirname($dir)) and mkdir($dir, 0755));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测服务器函数支持情况
|
||||
* @param $f 函数名
|
||||
|
|
10
js/player.js
10
js/player.js
|
@ -461,3 +461,13 @@ mkpgb.prototype = {
|
|||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
// 快捷键切歌,代码来自 @茗血(https://www.52benxi.cn/)
|
||||
document.onkeydown = function showkey(e) {
|
||||
var key = e.keyCode || e.which || e.charCode;
|
||||
var ctrl = e.ctrlKey || e.metaKey;
|
||||
var isFocus = $('input').is(":focus");
|
||||
if (ctrl && key == 37) playList(rem.playid - 1); // Ctrl+左方向键 切换上一首歌
|
||||
if (ctrl && key == 39) playList(rem.playid + 1); // Ctrl+右方向键 切换下一首歌
|
||||
if (key == 32 && isFocus == false) pause(); // 空格键 播放/暂停歌曲
|
||||
}
|
Loading…
Reference in New Issue