萌否电台 to last.fm scrobbler

记录萌否电台到 last.fm

  1. // ==UserScript==
  2. // @name 萌否电台 to last.fm scrobbler
  3. // @namespace https://gf.qytechs.cn/users/8650
  4. // @description 记录萌否电台到 last.fm
  5. // @include http://moe.fm/listen/*
  6. // @require https://gf.qytechs.cn/scripts/7807-lrc-paser/code/lrc%20paser.js?version=34341
  7. // @require https://gf.qytechs.cn/scripts/7806-gmscrobber/code/GMscrobber.js?version=34342
  8. // @version 0.1.5
  9. // @run-at document-end
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @grant GM_deleteValue
  13. // @grant GM_xmlhttpRequest
  14. // @grant GM_registerMenuCommand
  15. // @grant unsafeWindow
  16. // @grant GM_log
  17. // ==/UserScript==
  18.  
  19. var init = function(){
  20. log('init');
  21. scrobber.setSongInfoFN(getSongInfo, {checktime: 4000});
  22. document.getElementsByClassName('buffer')[0].addEventListener('click', function(e){
  23. var oldTime = getSongInfo().playTime;
  24. setTimeout(function(){
  25. var newTime = getSongInfo().playTime;
  26. offset = oldTime - newTime;
  27. scrobber.seek(offset);
  28. }, 0);
  29. }, true);
  30. scrobber.on('nowplaying', function(){
  31. var loveEle = document.getElementsByClassName('button-love')[0];
  32. loveEle.addEventListener('click', function(e){
  33. if(!loveEle.classList.contains('on')){
  34. scrobber.love();
  35. }else{
  36. scrobber.unlove();
  37. }
  38. }, false);
  39. scrobber.getInfo(scrobber.song, function(info){
  40. document.getElementsByClassName('radio')[0].title = '在 last.fm 中记录: ' + info.len + ' 次';
  41. //console.log(info.islove);
  42. //同步 last.fm 红心歌曲到 萌否电台
  43. if(info.islove == '1' && !loveEle.classList.contains('on') ){
  44. document.getElementsByClassName('button-love')[0].click();
  45. }
  46. //同步 萌否电台 红心歌曲到 last.fm
  47. if(info.islove == '0' && loveEle.classList.contains('on') ){
  48. scrobber.love();
  49. }
  50. });
  51. });
  52. };
  53.  
  54. var scrobber = new Scrobbler({
  55. name: '萌否电台',
  56. ready: init
  57. });
  58.  
  59. var getSongInfo = function(){
  60. var song = {};
  61. var songinfo = document.getElementsByClassName('radio');
  62. song.title = songinfo[0].getElementsByClassName('playlist_title')[0].innerText.replace(/song.\d{2,} /,'');
  63. song.artist = songinfo[0].getElementsByClassName('playlist_artist')[0].innerText.replace(/\/ /,'')
  64. song.duration = timeParse(songinfo[0].getElementsByClassName('time')[0].getElementsByTagName('strong')[0].innerText);
  65. song.playTime = song.duration + timeParse(songinfo[0].getElementsByClassName('time')[0].getElementsByTagName('span')[0].innerText);
  66. song.album = songinfo[0].getElementsByClassName('playlist_wiki_title')[0].innerText;
  67. // console.log(song);
  68. return song;
  69. };
  70.  
  71. var timeParse = function(timeStr){
  72. var ts = timeStr.split(':');
  73. return ts[0] * 60 + ts[1] * 1;
  74. };

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址