zhjits
V2EX  ›  问与答

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

  •  
  •   zhjits · Feb 20, 2016 · 3730 views
    This topic created in 3739 days ago, the information mentioned may be changed or developed.
    歌曲信息:标题,演唱者(,最好有当前进度)
    不限语言,不限实现, OS X 10.11 能用。

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

    https://github.com/Jamesits/netease-music-status
    5 replies    2016-02-20 22:05:33 +08:00
    yxjxx
        1
    yxjxx  
       Feb 20, 2016 via iPhone
    你的目的?别是 AB 问题了。
    zhjits
        2
    zhjits  
    OP
       Feb 20, 2016
    @yxjxx 已经没有更大的目的了,就是想自己写一个类似 last.fm 功能的东西
    plqws
        3
    plqws  
       Feb 20, 2016
    拦截抓包,切歌的时候应该会发送读取歌曲信息的请求。
    chemzqm
        4
    chemzqm  
       Feb 20, 2016
    抓包吧 网易云音乐没有提供 applescript API
    zhjits
        5
    zhjits  
    OP
       Feb 20, 2016   ❤️ 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 内容是加密的……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2464 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 16:10 · PVG 00:10 · LAX 09:10 · JFK 12:10
    ♥ Do have faith in what you're doing.