全民K歌.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. function qmkg(packages) {
  2. const { axios, cheerio } = packages;
  3. async function parseMusicItemFromUrl(shareUrl) {
  4. const html = (await axios.get(shareUrl)).data;
  5. const $ = cheerio.load(html);
  6. const script = $("script:contains('window.__DATA__')").text();
  7. const jsonStr = script.match(/window\.__DATA__ \=(.+);\s*$/);
  8. if (jsonStr) {
  9. const result = JSON.parse(jsonStr[1]);
  10. const musicItem = {
  11. id: result.detail.ksong_mid,
  12. shareid: result.shareid,
  13. lrc: result.lyric,
  14. artwork: result.detail.cover,
  15. title: result.detail.song_name,
  16. artist: `${result.detail.nick} (原唱: ${result.detail.singer_name})`,
  17. album: result.detail.content,
  18. url: result.detail.playurl,
  19. detail: result.detail
  20. }
  21. return musicItem;
  22. }
  23. }
  24. return {
  25. platform: '全民K歌',
  26. version: '0.0.0',
  27. srcUrl: 'https://gitee.com/maotoumao/MusicFreePlugins/raw/master/qmkg.js',
  28. cacheControl: 'no-store',
  29. async getMediaSource(musicItem) {
  30. if (musicItem.shareid) {
  31. const newItem = await parseMusicItemFromUrl(`https://kg.qq.com/node/play?s=${musicItem.shareid}`);
  32. return {
  33. url: newItem.url,
  34. }
  35. }
  36. return {
  37. url: musicItem.url,
  38. }
  39. },
  40. async importMusicItem(shareUrl) {
  41. return parseMusicItemFromUrl(shareUrl);
  42. }
  43. }
  44. }