{"id":13432421,"url":"https://github.com/sudoskys/Tool-Asoul-Music","last_synced_at":"2025-03-16T23:31:20.471Z","repository":{"id":44094998,"uuid":"481174404","full_name":"sudoskys/Tool-Asoul-Music","owner":"sudoskys","description":"哔哩哔哩收藏夹 Rss 提取音频|一键部署|可本地运行|自动Flac元数据|TG机器人|TG频道|自动搜索筛选| A tool for tg channal delivery,and it can help you to deliver the audio file by asking bilibili api.","archived":true,"fork":false,"pushed_at":"2023-02-13T15:41:42.000Z","size":295,"stargazers_count":42,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-27T11:51:51.925Z","etag":null,"topics":["asoul","bilibili","music-bot","pushservice","rss","rsshub"],"latest_commit_sha":null,"homepage":"https://t.me/biliaudiobot","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sudoskys.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-04-13T10:40:02.000Z","updated_at":"2024-10-26T13:55:10.000Z","dependencies_parsed_at":"2024-02-26T20:02:21.165Z","dependency_job_id":null,"html_url":"https://github.com/sudoskys/Tool-Asoul-Music","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudoskys%2FTool-Asoul-Music","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudoskys%2FTool-Asoul-Music/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudoskys%2FTool-Asoul-Music/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudoskys%2FTool-Asoul-Music/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sudoskys","download_url":"https://codeload.github.com/sudoskys/Tool-Asoul-Music/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243949906,"owners_count":20373655,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asoul","bilibili","music-bot","pushservice","rss","rsshub"],"created_at":"2024-07-31T02:01:11.369Z","updated_at":"2025-03-16T23:31:20.036Z","avatar_url":"https://github.com/sudoskys.png","language":"Python","funding_links":[],"categories":["其他"],"sub_categories":["直播脚本"],"readme":"![a](https://raw.githubusercontent.com/sudoskys/sudoskys/main/love.jpeg)\n\n------------------------------------\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://img.shields.io/badge/LICENSE-Apache2-ff69b4\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/LICENSE-Apache2-ff69b4\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/USE-python-green\" alt=\"PYTHON\" \u003e\n  \u003cimg src=\"https://img.shields.io/badge/Version-220415-9cf\" alt=\"V\" \u003e\n  \u003ca href=\"https://afdian.net/a/Suki1077\"\u003e\u003cimg src=\"https://img.shields.io/badge/Become-sponsor-DB94A2\" alt=\"SPONSOR\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n\n\u003ch2 align=\"center\"\u003eTool-Asoul-Music\u003c/h2\u003e\n\n*A tool for telegram channal delivery,and it can help you to deliver the audio file by asking bilibili api.*\n\nTool-Asoul-Music 是一个使用 Python 编写的自动化的音乐推送程序， 可以 本地运行，交互式机器人部署， 自动抓取 或 手动指定收藏夹Rss地址 提取 BiliBili 视频的音频并推送。\n在自动抓取模式下，程序可以打包数据推送备份。项目经过严格模块化重构，便于扩展。\n\n## 特色\n\n支持四个场景:**频道 Rss 自动推送，频道自动搜索推送，Tg交互机器人部署，本地运行。**\n\n支持无缝更新。\n\n*高度模块化*\n\n*数据推送备份*\n\n*支持自动搜索模式*\n\n*支持部署为Telegram Bot*\n\n*AES-配置文件关键 Token 加密*\n\n*支持本地同步收藏夹库*\n\n*支持Flac元数据标签，自动截取视频封面为音乐封面，并添加作者信息*\n\n\n\u003e 禁止使用本项目执行商业活动，请注意。\n\n\n重构自上游项目 github.com/sudoskys/BiliBiliVideoToMusic\n\n## 部署\n\n### 环境需求\n\n应当使用 Python 3.8 或更高版本,但是不推荐 3.10 。因为，不能构建加密库。\n\n程序依赖 FFmpeg环境 ，但是默认通过 pip 安装，你也可以使用包管理器。\n\n### 安装\n\n```\ncurl -LO https://raw.githubusercontent.com/sudoskys/Tool-Asoul-Music/main/setup.sh \u0026\u0026 sh setup.sh\n\n```\n\n或者\n\n```\ncurl -LO https://raw.fastgit.org/sudoskys/Tool-Asoul-Music/main/setup.sh \u0026\u0026 sh setup.sh\n```\n\n**编辑config.yaml**\n\n```bash\ncd Tool-Asoul-Music\nsudo apt install nano\nnano config.yaml\n```\n\n#### 配置文件说明\n\n*USE config.yaml*\n\n```yaml\nLock: False\nchannalId: -1001741448769\ndesc: 'music from @somename'\nbotToken: '8c259c4dc1xxxxxxxxxxxxxxxxxxxxx050b44453a0'\n#when you select lock:true,you must use aes to encode all Token! And Dont push your token to github directly. \nonedrive: { statu: True, target: authkey/onedrive.token }\nsearch: { duration: '1', keyword: xxxxxx, order: pubdate, page: '1', search_type: video,  tids_1: '3', tids_2: '28' }\nRSS: { statu: True, RssAddressToken: 'https://rssxxxxxxxxxxxxxxxxx' }\nDataCallback: { statu: True, UserIdToken: 'bxxxxxxxxxx79' }\nClientBot: { statu: False, owner: 'xxxxxxx' }\n```\n\n| Key          | Value                                      | Des                                                                                                                                   |\n|--------------|--------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|\n| Lock         | `boolen`                                   | if `True` then ***Token string will be decode by AESTOOL in addition                                                                  |\n| channalId    | `-xxxxxxxx`                                | USE tg@getidsbot                                                                                                                      |\n| botToken     | `xxxxxxxx`                                 | USE tg@BotFather                                                                                                                      |\n| onedrive     | `xxxxxxxx`                                 | undo 还没做                                                                                                                              |\n| search       | search: { statu: False,data:{ dur....8' }} | see PS[1] ,statu 控制开关                                                                                                                 |\n| RSS          | `xxxxxxxx`                                 | statu mean start use and,token must be the link from [Rsshub](docs.rsshub.app) #bili--\u003efav list https://xxxxx.com/bilibili/fav/xxx/xx |\n| DataCallback | `statu: True, UserIdToken: ''`             | 发送执行的缓存数据(比如服务到期但是没有同步数据see PS[2])。 Token是用户ID或者某些频道ID（需要拉机器人入频道） use tg@getidsbot                                                    |\n| ClientBot    | `{statu: False, owner: 'xxxxxxx'}`         | 交互式机器人！可以在线部署 ,owner 为 主人ID                                                                                                          |\n|desc| `some desc`                                | 发送消息时的描述                                                                                                                              |\n\n**PS**\n\n- [1 -参数详情](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/search/search_request.md#%E5%88%86%E7%B1%BB%E6%90%9C%E7%B4%A2web%E7%AB%AF)\n- 2.请务必先start机器人对话\n\n#### 加密配置文件 Token 自助生成\n\n项目的 `docs/newToken.md` 中提供了生成的实例。\n\n### 运行\n\n请附带参数\n\n```shell\npython main.py --p IfYouSetPassword --i True\n```\n\n```python\nparser.add_argument('--password', '-p', help='密码，非必要参数，只有配置开启才会使用')\nparser.add_argument('--init', '-i', help='是否执行数据初始化，避免大量推送', default=False)\n```\n\n### 部署推送服务\n\n- 配置音乐频道推送服务\n  1.申请一个Bot,向BotFather索取Token\n  2.使用ID机器人查看目标频道ID\n  3.将机器人添加至频道并只赋予发消息权限\n\n```yaml\nchannalId: -youchannalIDnumberhere\n```\n\n**填充/初始化 数据**\n\n程序运行会自动初始化数据。\n\n### 自动搜索模式\n\n**配置程序定时运行**\n\n对于乌班图，配置如下(不同服务器不同路径呃)\n\n*授权*\n\n```bash\ncd Tool-Asoul-Music\nchmod 777 main.py\ndate\n```\n\n*crontab 执行*\n\n```bash\ncrontab -l\ncrontab -e\n\n```\n\n*每天5和17执行任务语法*\n\n```0 5,17 * * *  /user/local/python /path/xxx.py```\n\n\u003e 如果脚本中会有涉及读取配置文件或者读写文件的动作,一般定时任务都不会执行.\n\u003e 脚本在执行时,由于是通过crontab去执行的,他的执行目录会变成当前用户的家目录,如果是root,就会在/root/下执行.\n\n所以把执行python的命令放到shell脚本里，然后crontab 定时执行\n详见`cron.sh`\n\n*cron用法*\n\n```\nchmod +x cron.sh\n```\n\ncron 服务的启动与停止，命令如下\n1）service cron start /*启动服务*/\n\n    2）service cron stop /*关闭服务*/\n\n    3）service cron restart /*重启服务*/\n\n    4）service cron reload /*重新载入配置*/\n\n    5）service cron status /*查看crond状态*/ \n\n*使用`crontab -e`*\n\n```\n00 08   * * *  /bin/sh /root/Tool-Asoul-Music/cron.sh\n```\n\nhttps://blog.csdn.net/xys2333/article/details/112469461\nhttps://blog.csdn.net/GX_1_11_real/article/details/86535942\n\n**记得在main文件头部添加类似语句**\n\n```\nimport sys\nsys.path.insert(0, '/root/Tool-Asoul-Music')\n```\n\n**记得在cron.sh里面修改密码**\n\n### 部署交互式机器人\n\n**后台运行**\n\n```shell\nnohup python3 main.py \u003e output.log 2\u003e\u00261 \u0026\n```\n\n**查看进程**\n\n```\nps -aux|grep python3\n```\n\n**终止进程**\n\n```\nkill -9  进程号\n```\n\n------------------\n\n### 滥用警告\n\n机器人每分钟在公开群组发送消息的频率不能超过 20/min,否则会被Telegram删除用户账户并销毁资料。\n\n如果你的调用次数过大，哔哩哔哩可能会封禁你的IP，请注意。请对任务列表做相应限制。\n同时请注意你的硬盘。\n\n### Colab 调试\n\n```\n!rm -f -r /content/*\n!git clone https://github.com/sudoskys/Tool-Asoul-Music\n!rsync -r /content/Tool-Asoul-Music/* /content/\n!python -m pip install --upgrade pip\n!pip3 install -r requirements.txt\n```\n\n### 目录结构描述\n\n```\n.\n├── config_exp.yaml # 示例文件\n├── cron.sh # cron用\n├── data  # 数据目录，智能生成\n│       ├── history.yaml\n│       └── RssData.json\n├── docs # 文档，如何加密\n│       └── newToken.md\n├── LICENSE\n├── main.py  # 运行文件\n├── README.md # 自述文件\n├── requirements.txt # 依赖说明\n├── Runner  # 运行库\n│       ├── DataParse.py\n│       ├── EventLib.py\n│       ├── Network\n│       ├── __pycache__\n│       └── Task.py\n└── setup.sh  # 服务器用\n\n\n```\n\n### TODO\n\n- [x] 重构代码结构\n- [x] 优化冗余代码\n- [x] 优化实现流程\n- [x] 支持手动添加\n- [ ] 支持同步OD盘\n- [x] 重构 1 次\n- [ ] 重构 2 次\n- [ ] 重构 3 次\n\n### 鸣谢\n\n- [BilibiliDownloader](https://github.com/liuyunhaozz/bilibiliDownloader)|下载部分参考|\n- [O365](https://github.com/O365/python-o365) |微软云盘同步实现|\n- [RSShub](https://docs.rsshub.app/) |数据源RSS|\n\n#### 常见问题\n\nhttps://stackoverflow.com/questions/338768/python-error-importerror-no-module-named\n\nhttps://blog.csdn.net/qq_35756383/article/details/109135720\n\n#### Support\n\n如果你感觉这对你有帮助，可以试着我赞助我一点～\n\n[![s](https://img.shields.io/badge/Become-sponsor-DB94A2)](https://afdian.net/a/Suki1077)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsudoskys%2FTool-Asoul-Music","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsudoskys%2FTool-Asoul-Music","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsudoskys%2FTool-Asoul-Music/lists"}