如何编程方式获取 OS X 上网易云音乐当前播放的歌曲信息? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhjits

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

  •  
  •   zhjits Feb 20, 2016 3691 views
    This topic created in 3718 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     918 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 22:36 PVG 06:36 LAX 15:36 JFK 18:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86