hexo-tag-music-player
Version: 
hexo简约的tag音乐播放器
62 lines (59 loc) • 2.19 kB
JavaScript
/* global hexo */
;
const path = require('path');
const fs = require('hexo-fs');
const source_dir = hexo.source_dir;
const base_dir = hexo.base_dir;
const { createProxyMiddleware } = require('http-proxy-middleware')
/* 
  nginx用的反代理
*/
const apiProxy = createProxyMiddleware('/api', {
  target: 'http://music.163.com/api/',
  changeOrigin: true,
  pathRewrite: {
    '^/api/': '/', // rewrite path 将链接中的 /api/ 替换为 '/'
  },
});
hexo.extend.filter.register('server_middleware', function (app) {
  // 表示以 api 开头的请求将被转发
  app.use('/api', apiProxy);
});
// 是否是vercel环境
if (hexo.config['tag_music_player']['vercel']) {
  const content = `module.exports = (req, res) => {
    require('hexo-tag-music-player/api/index.js')(req, res)
}`;
  if (!fs.existsSync(path.join(base_dir, 'api/index.js'))) {
    if (!fs.existsSync(path.join(base_dir, 'api'))) {
      fs.writeFile(path.join(base_dir, 'api/index.js'), content, { flag: 'w' });
    } else {
      fs.writeFile(path.join(base_dir, 'api/index.js'), content, { flag: 'w' });
    }
  } else {
    // 获得文件内容
    const content2 = fs.readFileSync(path.join(base_dir, 'api/index.js'));
    // 如果有api/index.js但是内容没有,就添加
    if (!content2.includes(`require('hexo-tag-music-player/api/index.js')(req, res)`)) {
      const content3 = content2.split('\n');
      content3.forEach((item, index) => {
        if (item.includes('module.exports = (req, res)')) {
          content3.splice(index + 1, 0, `//tag-music-player用的反代理\nrequire('hexo-tag-music-player/api/index.js')(req, res)`);
          fs.writeFile(path.join(base_dir, 'api/index.js'), content3.join('\n'), { flag: 'w' });
        }
      });
    }
  }
}
/* 
  hexo-tag
*/
const listMode = require('./util/list-mode');
const { log } = require('console');
hexo.extend.tag.register('musicPlay', function (args) {
  switch (args[0]) {
    case 'list': return listMode(args, source_dir); break;
    case 'singe': console.log('singe'); break;
    default: return '模式(mode)参数错误';
  }
}, { async: true });