用 Python 3 + PyQt5 撸了一个可以播放“任意”音乐的播放器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
cosven
V2EX    Python

用 Python 3 + PyQt5 撸了一个可以播放“任意”音乐的播放器

  •  
  •   cosven
    cosven 2019-06-30 21:42:56 +08:00 7775 次点击
    这是一个创建于 2343 天前的主题,其中的信息可能已经有所发展或是发生改变。

    screenshot on GitHub

    特性

    • 可以在 Linux,macOS,Windows 上使用
    • 安装简单,新手友好,默认提供国内各音乐平台插件(网易云、虾米、QQ )
    • 较强的可扩展性可以满足大家折腾的欲望 | MPRIS2 插件 | 和 Emacs 集成、纯命令行使用 视频 DEMO
    • 核心模块有较好文档和测试覆盖,欢迎大家参与开发 | 详细文档 | 开发者 /用户交流群

    安装使用

    安装过程十分简单,这里以 Ubuntu 为例。其他系统安装使用方法请参考 Quick Start

    # Ubuntu 用户可以依次执行以下命令进行安装 sudo apt-get install python3-pyqt5 # 安装 Python PyQt5 依赖包 sudo apt-get install libmpv1 # 安装 libmpv1 系统依赖 pip3 install 'feeluown>=3.0' --user -i https://pypi.org/simple/ feeluown-genicon # 生成图标,点击桌面图标就可以运行 feeluown # 不想生成图标,也可以选择直接在命令行中运行 

    欢迎对此项目有兴趣的童鞋加入开发

    这是今天发帖的重点,嘿嘿 ~

    • 如果你了解 Python,对 Python 最佳实践感兴趣
    • 如果你对怎样开发一个音乐播放器感兴趣
    • 如果你对怎样写一门自己的玩具语言感兴趣
    • 如果你对初级网络编程感兴趣
    • ...

    欢迎加入我们这个小群体 ~ 目前,我们这里有刚毕业的高中生,有刚毕业的研究生,也有已经工作的 Python 工程师...

    在这里,你 可能 可以收获:

    • 一群友善、有趣的朋友
    • 一个好的 Python 学习交流环境
    • 在实际项目提升自己 Python 技能
    • 定制一个自己喜欢的播放器
    • ...

    如果你对项目、我们还心存疑惑,你可以阅读文档 或者加入开发者 /用户交流群来了解更多

    第 1 条附言    2019-06-30 23:25:25 +08:00
    补充一下,项目地址: https://github.com/feeluown/FeelUOwn

    欢迎对项目感兴趣的朋友进行试用,当然,成为开发者更好啦 (重要的事情重复一下)
    第 3 条附言    2019-07-01 09:46:24 +08:00

    如果您觉得自己的需求没有得到充分的满足,可以拿起编辑器/IDE开始搞起来。参考这篇文档,可能可以更快速的上手:https://feeluown.readthedocs.io/en/latest/contributing.html

    另外,项目本身也有一些 TODO:https://github.com/feeluown/feeluown/projects/5 ~

    第 4 条附言    2019-07-03 10:20:00 +08:00
    交流群的邀请链接已经失效了,有兴趣的朋友可以在项目 README 中找最新的交流群链接~
    41 条回复    2019-07-01 15:39:15 +08:00
    coolair
        1
    coolair  
       2019-06-30 21:55:05 +08:00 via Android
    这个太厉害了!
    leon0318
        2
    leon0318  
       2019-06-30 22:01:33 +08:00 via Android
    能播放 qq 音乐的付费歌曲吗?比如杰伦的
    wakan190
        3
    wakan190  
       2019-06-30 22:19:21 +08:00 via Android
    不错哦
    pyqt5 好学吗?
    cosven
        4
    cosven  
    OP
       2019-06-30 22:38:45 +08:00
    @leonme 杰伦的可以... 嘘,比如晴天,告白气球
    cosven
        5
    cosven  
    OP
       2019-06-30 22:39:12 +08:00
    @leonme 图片里面正好是杰伦的
    cosven
        6
    cosven  
    OP
       2019-06-30 22:40:49 +08:00
    @wakan190 ummm,怎么说呢,PyQt5 入门比 Python 入门差不多吧~ 我感觉不难,但是要深入的话,我感觉是有挑战的。
    readlnh
        7
    readlnh  
       2019-06-30 23:10:38 +08:00
    赶紧顶一顶
    cosven
        8
    cosven  
    OP
       2019-06-30 23:11:06 +08:00
    @coolair 可以试用起来~ 有问题随时联系我 ~
    0xroot
        9
    0xroot  
       2019-06-30 23:21:53 +08:00
    赞~ 开源不?来个 GitHub 链接?
    cosven
        10
    cosven  
    OP
       2019-06-30 23:25:47 +08:00
    @0xroot 补充了链接,开始忘记放了 ~
    readlnh
        11
    readlnh  
       2019-06-30 23:26:20 +08:00
    bequt
        12
    bequt  
       2019-06-30 23:33:37 +08:00 via Android
    之前都有类似这种,好像都会有法律函过来。。。
    Tink
        13
    Tink  
    PRO
       2019-06-30 23:36:41 +08:00 via iPhone
    有没有云村日推
    cosven
        14
    cosven  
    OP
       2019-06-30 23:41:33 +08:00
    @Tink 暂时还不支持 =。=

    很早以前有,不过后来在一次更新中删掉了.... 如果会写 Python,加上去应该只有个把小时
    cosven
        15
    cosven  
    OP
       2019-06-30 23:48:36 +08:00
    @bequt 嗯,我之前看过几个项目,确实遇到了这个问题...

    在 FeelUOwn 这个项目里面,我们有想过怎样应对这个问题:

    一方面是从版权方面考虑,我们尽量少损害产商的利益:
    1. 我们会声明每首歌的来源地,如上截图,每首歌都有来源
    2. 优先用 web 的资源,人家收费的资源,我们 *尽量* 不使用

    另一方面是技术方面:
    1. FeelUOwn 项目本身并没有包含 QQ/虾米 /网易云 等厂商的任何资源或者敏感信息,这些东西都是以插件的形式存在于民间
    2. 如果厂商真的发送法律函等资料过来,我们可以取消使用这一个插件,到时,也不会太影响整体使用
    yanfany
        16
    yanfany  
       2019-07-01 00:01:21 +08:00
    前段时间刚好要用 python 搞个界面,学的也是 pyqt,现在看见这个界面控件风格好眼熟哈哈哈
    leishi1313
        17
    leishi1313  
       2019-07-01 00:01:24 +08:00 via Android
    这个厉害了!我也有过类似的想法,不过初衷是想在各大平台上训练一个自己的推荐算法
    cosven
        18
    cosven  
    OP
       2019-07-01 00:05:14 +08:00
    @leishi1313 我曾经想给自己定制个推荐算法,但是...不太懂推荐系统那一套..也没怎么调研过 =。=
    cosven
        19
    cosven  
    OP
       2019-07-01 00:05:39 +08:00
    shxlxa
        20
    shxlxa  
       2019-07-01 09:51:56 +08:00
    厉害了
    im67
        21
    im67  
       2019-07-01 10:04:56 +08:00
    windows 党安装劝退.......就不能用 pyinstaller 打个包么?
    cosven
        22
    cosven  
    OP
    &nbp;  2019-07-01 10:17:28 +08:00 via iPhone
    @im67 可以,但是目前还没有足够时间做这个工作...之前有朋友试过 pyinstaller,确实可以打包成功 ~
    BingoXuan
        23
    BingoXuan  
       2019-07-01 10:17:54 +08:00
    @im67
    然后你会发现,我还是下载个网易云音乐好了( qt 依赖打包起来简直和 electron 差不多)
    cosven
        24
    cosven  
    OP
       2019-07-01 10:22:39 +08:00 via iPhone
    @BingoXuan 嗯,这也是一个问题。项目依赖了 PyQt 和 mpv,打包之后会有大约 150MB 左右~ 会比较大

    通过打包来安装的话,就意味着以后每次更新都要打包,用户每次都要重新下载整个包,更新相对来说那么不方便,所以综合考虑,暂时只能让大家安装的时候折腾一下了~
    Aether
        25
    Aether  
       2019-07-01 10:25:47 +08:00
    File "\fuocore\mpvplayer.py", line 4, in <module>
    from mpv import (
    File "\mpv.py", line 39, in <module>
    backend = CDLL('mpv-1.dll')
    File \__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
    OSError: [WinError 126] 找不到指定的模块。

    好像因为安装顺序的原因(最后一步才放了 dll ),无法运行了怎么办……
    cosven
        26
    cosven  
    OP
       2019-07-01 10:27:49 +08:00 via iPhone
    @Aether 如果确认 mpv-1.dll 放对位置了,那只需要重新运行就好了~
    Akkuman
        27
    Akkuman  
       2019-07-01 10:35:00 +08:00 via Android
    好像前几年搜索网易云音乐 linux 版搜出了这个,没想到这么些年了还在蓬勃发展
    cosven
        28
    cosven  
    OP
       2019-07-01 10:44:36 +08:00
    @Akkuman 你木有记错,哈哈哈,不过它也不是蓬勃发展啦。ummm,我想想,“垂死挣扎”可能更形象。
    larsenlouis
        29
    larsenlouis  
       2019-07-01 11:12:05 +08:00
    好评!海外自动 geoblock 解锁
    FrankHB
        30
    FrankHB  
       2019-07-01 11:12:37 +08:00
    资源来源跟 Listen1 比起来如何。
    BingoXuan
        31
    BingoXuan  
       2019-07-01 11:15:20 +08:00
    @cosven
    pyqt 虽然简单,但打包太大真的很头痛。我试过纯 qt,但效率太低也弃坑了。最终还是选择了 js+electron

    qt5.13 增加了 wasm 的支持,可以在 web 端运行 qt,不知道 pyqt 后续会不会增加支持
    cosven
        32
    cosven  
    OP
       2019-07-01 12:34:31 +08:00
    @FrankHB 看了下 listen1 的来源,它的更多一些 ~ 它多支持了两个来源:酷狗和酷我。这边目前只支持 QQ/虾米 /网易云(都是插件形式),但是我想这三个平台应该能覆盖几乎所有的歌曲了吧(毕竟酷狗和酷我都是 tencent 家的,另外,要新增来源是一件相对容易的事情,如果真的需要的话)。
    Phishion
        33
    Phishion  
       2019-07-01 13:37:43 +08:00
    这个我觉得自己玩玩还可以,做大了必然被告,厂商甘心买版权为其他人做嫁衣么?
    lomsing
        34
    lomsing  
       2019-07-01 14:12:52 +08:00
    大佬
    cosven
        35
    cosven  
    OP
       2019-07-01 14:46:54 +08:00
    @Phishion
    嗯嗯,是这样子的,如果你侵犯了产商的权益,他就来搞你,但是如果你尊重他,他就睁一只眼,闭一只眼。
    当然,什么事情都有例外和意外。

    针对这些例外和意外,我们在 FeelUOwn 上也想了一些办法:FeelUOwn 本身只是个播放器,不过它可以支持多个源,每个源都是一个插件。当一个源不行的时候,我们可以就放弃他。目前 FeelUOwn 支持国内三个源,以后还可以考虑 iTunes, Spotify, Google Music 等。所以除非每个源都来搞我们,不然这个播放器就不会死(另外值得一说的是:我们确实有注意 *尽量不过分* 的侵犯他们的权益,我在上面一个回答里面也解释了这个问题)。

    最差最差的情况:每个源都不能用,那时候,我们还可以听本地音乐了;可以通过搜索引擎来找资源。

    最后,值得一说的是,支持多资源只是 FeelUOwn 众多特性中的一个。
    cosven
        36
    cosven  
    OP
       2019-07-01 14:52:26 +08:00
    @lomsing 老师好 ~
    supertramp
        37
    supertramp  
       2019-07-01 15:22:31 +08:00
    ubuntu19.04,apt 装 pyqt5 报错 ModuleNotFoundError: No module named 'PyQt5.QtOpenGL',应该是版本太老,pip3 install pyqt5 --upgrade 可以解决

    RuntimeError: generator raised StopIteration 这个报错应该解决一下。。

    装 fcitx-frontend-qt5,fcitx 输入法也用不了
    lzxgh621
        38
    lzxgh621  
       2019-07-01 15:33:05 +08:00 via iPhone
    你那个群咋回事 刚加就 T
    cosven
        39
    cosven  
    OP
       2019-07-01 15:36:48 +08:00
    @supertramp

    不好意思,这里忘记写这个步骤了 `sudo apt-get install python3-pyqt5.qtopengl`,另外,在 Ubuntu 上,更推荐使用 apt 来安装 PyQt5。

    > 装 fcitx-frontend-qt5,fcitx 输入法也用不了

    ummm,这个问题,我也不是很确定。
    我觉得可以先尝试用 apt 安装试试,把 pip 安装的给卸载了。如果还是不行的话,我今天装个虚拟机也试试。
    cosven
        40
    cosven  
    OP
       2019-07-01 15:38:01 +08:00
    @lzxgh621 不好意思,你是 id 为 4a6f5a1**** 的那位童鞋么,我以为这个 ID 是个 spam... 我拉您回来 ~
    cosven
        41
    cosven  
    OP
       2019-07-01 15:39:15 +08:00
    @cosven 咦,不对,我没有权限拉您回来... =。= 不好意思,能麻烦您再加一下吗 ~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2596 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 04:15 PVG 12:15 LAX 20:15 JFK 23:15
    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