V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
denonw
V2EX  ›  分享创造

脚本分享 - 同步网易云音乐歌单到 qq 音乐

  •  
  •   denonw · 2017-06-17 16:49:11 +08:00 · 5931 次点击
    这是一个创建于 2495 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近准备叛逃网易云音乐- -. 先做个爬虫脚本。 用了 selenium + phantomjs
    项目地址: https://github.com/Denon/syncPlaylist

    自己测试过应该没啥问题, 但是不知道在其他机器上会不会有啥 bug。如有问题留 issue 就好。
    大家多多提提意见~ 谢谢
    第 1 条附言  ·  2017-06-19 10:51:57 +08:00
    昨天更新了一版, 添加了 exe 执行文件。
    第 2 条附言  ·  2017-06-23 11:25:49 +08:00
    又更新了一版, 反向同步(qq 到网易)已完成
    44 条回复    2017-06-23 11:25:19 +08:00
    clearbug
        1
    clearbug  
       2017-06-17 17:03:20 +08:00 via Android
    先说说网易云音乐的缺点,扣扣音乐的优点
    myhu
        2
    myhu  
       2017-06-17 17:28:19 +08:00
    希望能做一个 dmg 或者 exe 程序
    usufu
        3
    usufu  
       2017-06-17 18:28:10 +08:00
    正好需要,但是,咋用啊。。。
    usufu
        4
    usufu  
       2017-06-17 18:38:16 +08:00
    会用了,thx
    kingboy9525
        5
    kingboy9525  
       2017-06-17 18:48:45 +08:00
    qq 音乐和网易云音乐,qq 音乐的版权多一点,但是社区水平比不上网易云。如果有了解古典音乐的话,网易云强调的是歌单系统,而弱化了专辑系统,听古典的都会蛋疼的,qq 音乐比网易云严谨多了(当然都比不上 apple music )
    另外说是说版权交换,实际上有些歌还是各有各的。我一直郁闷,qq 音乐明明有索尼的版权,为什么我喜欢的那几个歌手的专辑都没。。反而网易云就有(当然不排除网易云的是盗版)。
    kingboy9525
        6
    kingboy9525  
       2017-06-17 18:49:01 +08:00
    @clearbug qq 音乐和网易云音乐,qq 音乐的版权多一点,但是社区水平比不上网易云。如果有了解古典音乐的话,网易云强调的是歌单系统,而弱化了专辑系统,听古典的都会蛋疼的,qq 音乐比网易云严谨多了(当然都比不上 apple music )
    另外说是说版权交换,实际上有些歌还是各有各的。我一直郁闷,qq 音乐明明有索尼的版权,为什么我喜欢的那几个歌手的专辑都没。。反而网易云就有(当然不排除网易云的是盗版)。
    tSQghkfhTtQt9mtd
        7
    tSQghkfhTtQt9mtd  
       2017-06-17 19:06:03 +08:00 via Android
    我想知道有没有反向同步的,打算做个在线工具给周围用 QQ 音乐的
    chantan
        8
    chantan  
       2017-06-17 19:17:09 +08:00 via Android
    不用 Spotify 吗?
    denonw
        9
    denonw  
    OP
       2017-06-17 19:35:11 +08:00
    @myhu 啊, 可以,打包一下就好
    denonw
        10
    denonw  
    OP
       2017-06-17 19:36:10 +08:00
    @clearbug qq 音乐版权多一点, 但是 qq 音乐的歌单实在太蛋疼了.
    网易的话歌单很丰富, 推荐的也可以。 (看歌曲评论可以看一下午)
    denonw
        11
    denonw  
    OP
       2017-06-17 19:38:03 +08:00
    @liwanglin12 反向同步我也准备考虑做。不过说实话= =,唯一可能需要同步的 qq 音乐里面的自己的歌单
    denonw
        12
    denonw  
    OP
       2017-06-17 19:40:34 +08:00
    @chantan 这个是什么?
    denonw
        13
    denonw  
    OP
       2017-06-17 19:41:14 +08:00
    @usufu 用成功了么? 配置可能有点复杂。。 应该加点实例
    chantan
        14
    chantan  
       2017-06-17 20:30:06 +08:00 via Android
    @denonw Spotify 是一個起源於瑞典的音樂串流服務
    denonw
        15
    denonw  
    OP
       2017-06-17 20:56:04 +08:00
    @chantan 好,试一下. 谢谢推荐
    usufu
        16
    usufu  
       2017-06-17 22:31:54 +08:00
    @denonw 成功了,还不错,thx
    muziki
        17
    muziki  
       2017-06-17 22:50:54 +08:00
    @chantan spotify 英语歌曲比较全,其他的不敢恭维
    masha
        18
    masha  
       2017-06-17 23:47:06 +08:00
    我和你刚好反了一下
    /t/365937
    denonw
        19
    denonw  
    OP
       2017-06-17 23:55:55 +08:00
    @masha 哈哈,可以👍。 我后面打算把这个反向的也做了
    helloworld000
        20
    helloworld000  
       2017-06-18 09:39:13 +08:00
    qq 音乐没有 linux 版本。。。
    denonw
        21
    denonw  
    OP
       2017-06-18 10:18:33 +08:00
    @helloworld000 网页版不行么。。
    lhie1
        22
    lhie1  
       2017-06-19 00:54:12 +08:00
    多谢
    lhie1
        23
    lhie1  
       2017-06-19 02:00:41 +08:00
    不好意思打扰了

    请问提示:

    Traceback (most recent call last):
    File "WYtoQQ.py", line 64, in <module>
    browser = init_browser()
    File "WYtoQQ.py", line 61, in init_browser
    browser = webdriver.PhantomJS(phantomjs_driver)
    File "/Library/Python/2.7/site-packages/selenium/webdriver/phantomjs/webdriver.py", line 52, in __init__
    self.service.start()
    File "/Library/Python/2.7/site-packages/selenium/webdriver/common/service.py", line 81, in start
    os.path.basename(self.path), self.start_error_message)
    selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executable needs to be in PATH.

    是什么原因呢?
    lhie1
        24
    lhie1  
       2017-06-19 02:02:53 +08:00
    phantomjs_driver_path = "/Users/denon/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs"
    chrome_driver_path = ""
    headers = {
    "User-Agent": 'Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.'
    }
    search_url = "https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w={}"
    qq_playlist_url = 'https://y.qq.com/portal/profile.html#sub=other&tab=create&'
    denonw
        25
    denonw  
    OP
       2017-06-19 10:49:52 +08:00
    @lhie1 phantomjs_driver_path = "/Users/denon/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs" 这个要换成你自己那边的路径。 我 README 上面写的是个例子= =
    denonw
        26
    denonw  
    OP
       2017-06-19 13:23:42 +08:00
    @myhu exe 程序已做好
    lhie1
        27
    lhie1  
       2017-06-19 14:29:44 +08:00 via iPhone
    @denonw 我傻逼了..
    denonw
        28
    denonw  
    OP
       2017-06-19 14:35:46 +08:00
    @lhie1 这部分配置做的有点复杂... 后面打算直接脚本里面下载好👍, 就不用手动操作了
    lhie1
        29
    lhie1  
       2017-06-19 14:41:41 +08:00
    你好 同步成功了 但是有了新的问题

    get 163 playlist success
    login sucess
    song:哑子的爱情 success
    song:革命时期的爱情 success
    song:南方姑娘 success
    song:追梦赤子心 success
    song:斑马,斑马 success
    total success:5
    total failed:0, detail:

    其中“哑子的爱情”和“革命时期的爱情”还不是我歌单里的..
    denonw
        30
    denonw  
    OP
       2017-06-19 14:42:57 +08:00
    @lhie1 恩? 网易云歌单的 url 发我下看看?
    myhu
        32
    myhu  
       2017-06-19 14:56:22 +08:00
    @denonw 厉害!上架苹果应用商店,和 kilb 一样肯定大卖
    denonw
        33
    denonw  
    OP
       2017-06-19 14:58:53 +08:00
    @lhie1 知道问题了... 这种 url 格式没考虑进去= =. 我想想怎么改
    denonw
        34
    denonw  
    OP
       2017-06-19 14:59:27 +08:00
    @myhu 哈哈, 谢谢. 可惜不太会开发 app= =
    lhie1
        35
    lhie1  
       2017-06-19 15:04:22 +08:00
    @denonw 请问正确的链接应该是怎样的?

    我从网页上复制来的无法同步

    这是从客户端里复制来的
    lhie1
        36
    lhie1  
       2017-06-19 15:05:44 +08:00
    Traceback (most recent call last):
    File "WYtoQQ.py", line 179, in main
    song_list = get_163_song_list()
    File "WYtoQQ.py", line 121, in get_163_song_list
    singer, album = song_detail[1].split('- ', 1)
    ValueError: need more than 1 value to unpack
    total success:0
    total failed:0, detail:
    denonw
        37
    denonw  
    OP
       2017-06-19 15:09:46 +08:00
    @lhie1 http://music.163.com/#/playlist?id=48371355 试试这个? 我是根据后面的 id 来取歌单的, 所以会有点问题. 我后面改下逻辑应该就好. 如果还有问题, 直接在 github 上提 issue 吧~ 谢谢。v2ex 回复代码有点乱
    lhie1
        38
    lhie1  
       2017-06-19 15:11:44 +08:00
    @denonw 好的 试了 好像是获取不了
    denonw
        39
    denonw  
    OP
       2017-06-19 18:14:48 +08:00
    @lhie1 我推了一版新的. 你再试试?
    lhie1
        40
    lhie1  
       2017-06-19 18:31:11 +08:00 via iPhone
    @denonw 好的 不知道对 py 版本有没有要求
    denonw
        41
    denonw  
    OP
       2017-06-19 18:34:06 +08:00
    @lhie1 擦..这么重要的东西我忘写了. 现在支持 py2.7
    lhie1
        42
    lhie1  
       2017-06-20 12:51:03 +08:00
    @denonw 好的 感谢 已经成功了 我是 2.7 之前一直用不起 现在没问题了
    a2ex
        43
    a2ex  
       2017-06-23 11:23:28 +08:00
    能 qq 音乐转网易云吗。。。
    denonw
        44
    denonw  
    OP
       2017-06-23 11:25:19 +08:00
    @a2ex 可以的,已经更新了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3391 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:35 · PVG 20:35 · LAX 05:35 · JFK 08:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.