MKonlineMuxecPlayer

https://github.com/mxue12138/MKOnlineMusicPlayer

必须上传到服务器才能使用,本地打开抓取不到歌曲,无法使用。

docker搭建

项目文件拷贝到网站根目录,运行docker-compose up -d。

docker-compose.yml文件增加了restart: always,用来项目开机自启。

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'
services:
webapp:
container_name: MKOnlineMusicPlayer
image: php:7.4-apache
restart: always
ports:
- "8080:80"
volumes:
- ./:/var/www/html/
- ./apache.conf:/etc/apache2/sites-available/000-default.conf.bak
command: /bin/bash -c "((a2query -m | grep -q 'headers') || a2enmod headers) && service apache2 stop && cp -v /etc/apache2/sites-available/000-default.conf.bak /etc/apache2/sites-available/000-default.conf && source /etc/apache2/envvars && /usr/sbin/apache2 -D FOREGROUND"

宝塔搭建

运行环境

php 5.4+, curl_exec, file_get_contents, json_decode, openssl_encrypt

必要配置

  1. [清除缓存] 请务必添加以下代码到cron定时任务,并设置成每分钟执行一次,否则会导致用户歌单、歌曲列表、歌词等更新不及时,宝塔用户可以直接设置“计划任务”并选择“Shell脚本”

    find 你的网站绝对路径/cache/*.json -type f -cmin +30 -exec rm -fv {} \;

    如果是虚拟主机没办法添加Shell脚本的话,可以使用网站监控,监控“你的域名/api.php?types=cache”,监控时间推荐一分钟。

    如果以上都不行的话,可以直接关闭 api.php 内的缓存(关闭缓存可能会导致偶尔无法获取音乐)。

  2. [下载歌曲] 添加以下代码到你的网站配置文件,推荐添加到php引用之前,否则可能导致恶意php被执行(不添加会导致网站异常、歌曲无法下载等)

    apache:

    1
    2
    3
    4
    <Directory "你的网站绝对路径/temp/">
    Header set Content-Type "application/octet-stream"
    Header set Content-Disposition "attachment;"
    </Directory>

    nginx:

    1
    2
    3
    4
    location ~/temp/ {
    add_header Content-Type "application/octet-stream";
    add_header Content-Disposition "attachment;";
    }
  3. [跨域设置] 如果网站和接口不在一台服务器上,请将上面的代码添加到接口所在的服务器,并且还需要在接口所在的服务器的网站配置添加以下代码以解决跨域问题

    apache:

    1
    2
    3
    Header set Access-Control-Allow-Origin "*"
    Header set Access-Control-Allow-Headers "X-Requested-With"
    Header set Access-Control-Allow-Methods "GET,POST,OPTIONS"

    nginx:

    1
    2
    3
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers X-Requested-With;
    add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

php选择的7.0,这一串curl_exec, file_get_contents, json_decode, openssl_encrypt应该是php函数,在php7.0中没找到,所以没有设置

取消进站弹窗公告

打开js/player.js,把placard设为false(代码都有注释,很容易修改)

启用下载功能

按照上面给服务器添加网址配置代码,然后给网站申请ssl证书即可。

mmPlayer

https://github.com/maomao1996/Vue-mmPlayer

mmPlayer 作者搭建的在线播放器Demo: https://netease-music.fe-mm.com/