V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhjits
V2EX  ›  问与答

如何编程方式获取 OS X 上网易云音乐当前播放的歌曲信息?

  •  
  •   zhjits · 2016-02-20 20:05:28 +08:00 · 3402 次点击
    这是一个创建于 3189 天前的主题,其中的信息可能已经有所发展或是发生改变。
    歌曲信息:标题,演唱者(,最好有当前进度)
    不限语言,不限实现, OS X 10.11 能用。

    一个思路:因为网易云音乐会在每首歌开始的时候发送通知,所以可以尝试读出通知栏的通知内容。然而我没有找到这方面的资料……
    第 1 条附言  ·  2016-02-21 00:44:48 +08:00
    看了半小时 DTrace 以后,发现它会输出日志。所以直接监视日志文件就好。 Python 3 代码已传 Github 。

    https://github.com/Jamesits/netease-music-status
    5 条回复    2016-02-20 22:05:33 +08:00
    yxjxx
        1
    yxjxx  
       2016-02-20 20:12:58 +08:00 via iPhone
    你的目的?别是 AB 问题了。
    zhjits
        2
    zhjits  
    OP
       2016-02-20 20:17:11 +08:00
    @yxjxx 已经没有更大的目的了,就是想自己写一个类似 last.fm 功能的东西
    plqws
        3
    plqws  
       2016-02-20 20:52:41 +08:00
    拦截抓包,切歌的时候应该会发送读取歌曲信息的请求。
    chemzqm
        4
    chemzqm  
       2016-02-20 21:45:02 +08:00
    抓包吧 网易云音乐没有提供 applescript API
    zhjits
        5
    zhjits  
    OP
       2016-02-20 22:05:33 +08:00   ❤️ 1
    @plqws @chemzqm 抓包已经抓到吐。

    目前的情况是:

    通过 tcpdump 的 Apple 扩展过滤器来分析 metadata 按进程名过滤: sudo tcpdump -Q "proc =NeteaseMusic" -k -v -U -w -
    这个做法不太现实,因为代理软件或者杀软可以通过内核驱动截获网络请求,导致在出口上抓到的进程名改变。

    通过 DTrace 监视系统调用: sudo dtruss -n NeteaseMusic -t read -t write 2>&1
    看起来比较靠谱,然而我只能抓到 GET 图片以及 POST 各种统计数据和检查国家,而 POST 内容是加密的……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5713 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:15 · PVG 11:15 · LAX 19:15 · JFK 22:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.