Gmscrobber

记录在线音乐到last.fm

View the Project on GitHub justan/Gmscrobber

GMscrobber - Scrobble Anywhere

某个时候听了某个音乐,因此自己心中的什么,发生了很大的变化…之类的

gmscrobber 的目标是提供一种简单的方法来将在线播放的音乐记录到 last.fm. 安装 gmscrobber 需要 greasemonkey 或者兼容环境(如 chrome + Tampermonkey 或 firefox + greasemonkey)

GMscrobber 的特点

网站支持

目前支持的网站有: 豆瓣电台, Google Music, QQ 音乐, 百度音乐盒, 网易云音乐, 虾米电台/虾米播放器

下载

基础支持(不支持红心同步):

使用

在网站上首次使用 gmscrobbler 需要 last.fm 的认证. 认证以后, 脚本会自动运行. 认证操作如下:

  1. 下载安装对应网站的用户脚本.
  2. 打开需要记录的音乐网站.
  3. 在 greasemonkey(或其他兼容扩展) 命令菜单中选中 “开始记录…”
  4. 上一步会跳转到 last.fm 网站中进行认证. 确认后整个过程即已完成.

歌词

通过 @solos歌词迷API, gmscrobbler 也对正在收听的歌曲提供了简单的在线歌词. 输出在浏览器的 javascript 控制台中(如在 Firefox 中 ctrl + shift + j 打开).

编写你自己的 scrobbler

使用 GMscrobber 将使编写你自己的 scrobbler 变得非常简单, 如果已有 javascript 和 userscript 的编写经验, 写一个 scrobbler 只需要以下几步:

  1. 在你喜欢的在线音乐播放页面新建一个用户脚本文件, 引入 simple_scrobbler_user:

    // @require  http://justan.github.io/gmscrobber/GMscrobbler_for_xiami.user.js
    
  2. 创建一个 Scrobber 实例:
    var scrobber = new Scrobber({name: '在线音乐', ready: init})

  3. 创建你自己的播放器监控方法. 这是你代码的核心部分, 后面会详细讨论这一部分. 当歌曲开始播放的时候调用:

    scrobber.nowPlaying({
      name: 'Wish You Were Here',//歌名
      artist: 'Pink Floyd',//歌手
      duration: 280,//曲长
      album: 'Wish You Were Here'//专辑名
    });
    
  4. 大功告成

关于页面播放器监控

目前有两种办法监控页面的播放状态:

  1. 最为普遍的, 我们并不清楚页面播放器的代码结构, 此种情况下可以编写一个页面歌曲信息获取函数, 将其传给 scrobber.setSongInfoFN, 剩下的 gmscrobber 会聪明的处理好. 示例: QQ 音乐 scrobber.
  2. 在页面播放器有可访问的播放状态变化函数的时候, 可以选择重新封装该函数. 如豆瓣电台 scrobber:

    var ex = unsafeWindow.extStatusHandler;
    unsafeWindow.extStatusHandler = function(songChangeInfo){
      //your code here
      return ex.apply(this, arguments);
    };
    

scrobber 编写示例

userscripts.org 上的GMscrobber

联系

有任何问题, 欢迎提交到 Github issue 上.