缓存网易云数据,新增快捷键功能

缓存网易云歌词及歌单数据,防止因请求频繁导致无法获取数据(请确保程序目录下的 cache 文件夹存在且可读写);
新增快捷键控制功能(Ctrl + 方向键 切歌,空格 暂停)感谢 @茗血。
master
mengkun 6 years ago
parent 64f4f80a0e
commit a22f634eb6
  1. 49
      api.php
  2. 0
      cache/index.html
  3. 10
      js/player.js

@ -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 函数名

@ -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…
Cancel
Save