pyncm


Namepyncm JSON
Version 1.7.1 PyPI version JSON
download
home_pagehttps://github.com/greats3an/pyncm
SummaryNeteaseCloudMusic APIs for Python 3.x 适用于 Python 3 的网易云音乐 API
upload_time2024-11-24 11:27:54
maintainerNone
docs_urlNone
authorgreats3an
requires_python>=3.6
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![Logo](https://github.com/greats3an/pyncm/raw/master/demos/_logo.png)

# PyNCM
[![Windows Build](https://github.com/mos9527/pyncm/actions/workflows/build-and-publish.yml/badge.svg)](https://github.com/mos9527/pyncm/blob/master/.github/workflows/build-and-publish.yml) [![Releases](https://img.shields.io/github/downloads/mos9527/pyncm/total.svg)](https://GitHub.com/mos9527/pyncm/releases/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) 

第三方网易云音乐 Python API 及个人音乐库离线转储工具

**注意** : 异步使用,请移步 [`async` 分支](https://github.com/mos9527/pyncm/tree/async)

# 安装
    pip install pyncm
可选 (若不考虑使用CLI则请忽略)
- `mutagen` : 为下载的音乐打上封面等
- `tqdm`    : 显示实时下载进度
- `coloredlogs` : 彩色日志输出

**Windows 用户**: 在 [Releases](https://github.com/mos9527/pyncm/releases) 可下载已打包 `.exe` 版本 (x86)
# 命令行使用
    positional arguments:
    链接                    网易云音乐分享链接

    options:
    -h, --help            show this help message and exit

    下载:
    --max-workers 最多同时下载任务数, -m 最多同时下载任务数
    --output-name 保存文件名模板, --template 保存文件名模板, -t 保存文件名模板
                            保存文件名模板
                                参数:
                                    id     - 网易云音乐资源 ID
                                    year   - 出版年份
                                    no     - 专辑中编号
                                    album  - 专辑标题
                                    track  - 单曲标题
                                    title  - 完整标题
                                    artists- 艺术家名
                                例:
                                    {track} - {artists} 等效于 {title}
    -o 输出, --output 输出    输出文件夹
                                注:该参数也可使用模板,格式同 保存文件名模板
    --quality 音质          音频音质(高音质需要 CVIP)
                                参数:
                                    hires  - Hi-Res
                                    lossless- “无损”
                                    exhigh  - 较高
                                    standard- 标准
    -dl, --use-download-api
                            调用下载API,而非播放API进行下载。如此可能允许更高高音质音频的下载。
                            【注意】此API有额度限制,参考 https://music.163.com/member/downinfo
    --no-overwrite        不重复下载已经存在的音频文件

    歌词:
    --lyric-no 跳过歌词       跳过某些歌词类型的下载
                                参数:
                                    lrc    - 源语言歌词  (合并到 .lrc)
                                    tlyric - 翻译后歌词  (合并到 .lrc)
                                    romalrc- 罗马音歌词  (合并到 .lrc)
                                    yrc    - 逐词滚动歌词 (保存到 .ass)
                                    none   - 下载所有歌词
                                例:
                                    --lyric-no "tlyric romalrc yrc" 将只下载源语言歌词
                                    --lyric-no none 将下载所有歌词
                                注:
                                    默认不下载 *逐词滚动歌词*


    登陆:
    --phone 手机            网易账户手机号
    --cookie Cookie (MUSIC_U)
                            网易云音乐 MUSIC_U Cookie (形如 '00B2471D143...')
    --pwd 密码, --password 密码
                            网易账户密码
    --save [保存到]          写本次登录信息于文件
    --load [保存的登陆信息文件]    从文件读取登录信息供本次登陆使用
    --http                优先使用 HTTP,不保证不被升级
    --deviceId 设备ID       指定设备 ID;匿名登陆时,设备 ID 既指定对应账户
                            【注意】默认 ID 与当前设备无关,乃从内嵌 256 可用 ID 中随机选取;指定自定义 ID 不一定能登录,相关性暂时未知
    --log-level LOG_LEVEL
                            日志等级

    限量及过滤(注:只适用于*每单个*链接 / ID):
    -n 下载总量, --count 下载总量
                            限制下载歌曲总量,n=0即不限制(注:过大值可能导致限流)
    --sort-by 歌曲排序        【限制总量时】歌曲排序方式 (default: 默认排序 hot: 热度高(相对于其所在专辑)在前 time: 发行时间新在前)
    --reverse-sort        【限制总量时】倒序排序歌曲
    --user-bookmarks      【下载用户歌单时】在下载用户创建的歌单的同时,也下载其收藏的歌单

    工具:
    --save-m3u 保存M3U播放列表文件名
                            将本次下载的歌曲文件名依一定顺序保存在M3U文件中;写入的文件目录相对于该M3U文件
                                    文件编码为 UTF-8
                                    顺序为:链接先后优先——每个链接的所有歌曲依照歌曲排序设定 (--sort-by)排序
## 环境变量
|变量名|说明|
|-|-|
|`PYNCM_DEBUG`|调试日志输出等级,`'CRITICAL', 'DEBUG', 'ERROR','FATAL','INFO','WARNING'` 之一|
### 使用示例
## 转储单曲
[![asciicast](https://asciinema.org/a/4PEC5977rTcm4hp9jLuPFYUM1.svg)](https://asciinema.org/a/4PEC5977rTcm4hp9jLuPFYUM1)

API使用详见 
- [Demo](https://github.com/mos9527/pyncm/tree/master/demos)

# API 使用示例
```python
>>> from pyncm import apis
# 获取歌曲信息    
>>> apis.track.GetTrackAudio(29732235)
{'data': [{'id': 29732235, 'url': 'http://m701.music...
# 获取歌曲详情
>>> apis.track.GetTrackDetail(29732235)    
{'songs': [{'name': 'Supernova', 'id': 2...
# 获取歌曲评论
>>> apis.track.GetTrackComments(29732235)    
{'isMusician': False, 'userId': -1, 'topComments': [], 'moreHot': True, 'hotComments': [{'user': {'locationInfo': None, 'liveIn ...
```
- 多 Session 示例
```python
LoginViaEmail(...) 
# 利用全局 Session 完成该 API Call
session = CreateNewSession() # 建立新的 Session
with session: # 进入该 Session, 在 `with` 内的 API 将由该 Session 完成
    LoginViaCellPhone(...)
    result = GetTrackAudio(...)
# 离开 Session. 此后 API 将继续由全局 Session 管理
GetTrackComments(...)
```

同时,你也可以在 API Call 中 指定 Session
```python
await GetTrackComments(..., session=session)
```

详见 [Session 说明](https://github.com/mos9527/pyncm/blob/master/pyncm/__init__.py#L52)
## API 说明
大部分 API 函数已经详细注释,可读性较高。推荐参阅 [API 源码](https://github.com/mos9527/pyncm/tree/master/pyncm) 获得支持

## FAQ
- 为什么 `GetTrackAudio` 几乎拿不到音频 URL?

你需要[进行登陆](https://github.com/mos9527/pyncm/blob/master/pyncm/apis/login.py)。若身边没有合适的账号,也可选择匿名登陆:
```python
>>> from pyncm.apis.login import LoginViaAnonymousAccount
>>> LoginViaAnonymousAccount()
{'tick': 1662870122.1159196,
 'content': {'code': 200,
  'userId': 8023914528,
  'createTime': 1662868134354,
  'profile': {'nickname': 'Ano...
```
# 感谢
[Android逆向——网易云音乐排行榜api(上)](https://juejin.im/post/6844903586879520775)

[Binaryify/NeteaseCloudMusicApi](https://gitlab.com/Binaryify/neteasecloudmusicapi)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/greats3an/pyncm",
    "name": "pyncm",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "greats3an",
    "author_email": "greats3an@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/fa/99/b2cd860956473cece1e4821f5ccabfdb567a37db642fb85536bb5e1b2b5e/pyncm-1.7.1.tar.gz",
    "platform": null,
    "description": "![Logo](https://github.com/greats3an/pyncm/raw/master/demos/_logo.png)\r\n\r\n# PyNCM\r\n[![Windows Build](https://github.com/mos9527/pyncm/actions/workflows/build-and-publish.yml/badge.svg)](https://github.com/mos9527/pyncm/blob/master/.github/workflows/build-and-publish.yml) [![Releases](https://img.shields.io/github/downloads/mos9527/pyncm/total.svg)](https://GitHub.com/mos9527/pyncm/releases/) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) \r\n\r\n\u7b2c\u4e09\u65b9\u7f51\u6613\u4e91\u97f3\u4e50 Python API \u53ca\u4e2a\u4eba\u97f3\u4e50\u5e93\u79bb\u7ebf\u8f6c\u50a8\u5de5\u5177\r\n\r\n**\u6ce8\u610f** : \u5f02\u6b65\u4f7f\u7528\uff0c\u8bf7\u79fb\u6b65 [`async` \u5206\u652f](https://github.com/mos9527/pyncm/tree/async)\r\n\r\n# \u5b89\u88c5\r\n    pip install pyncm\r\n\u53ef\u9009 \uff08\u82e5\u4e0d\u8003\u8651\u4f7f\u7528CLI\u5219\u8bf7\u5ffd\u7565\uff09\r\n- `mutagen` : \u4e3a\u4e0b\u8f7d\u7684\u97f3\u4e50\u6253\u4e0a\u5c01\u9762\u7b49\r\n- `tqdm`    : \u663e\u793a\u5b9e\u65f6\u4e0b\u8f7d\u8fdb\u5ea6\r\n- `coloredlogs` : \u5f69\u8272\u65e5\u5fd7\u8f93\u51fa\r\n\r\n**Windows \u7528\u6237**: \u5728 [Releases](https://github.com/mos9527/pyncm/releases) \u53ef\u4e0b\u8f7d\u5df2\u6253\u5305 `.exe` \u7248\u672c (x86)\r\n# \u547d\u4ee4\u884c\u4f7f\u7528\r\n    positional arguments:\r\n    \u94fe\u63a5                    \u7f51\u6613\u4e91\u97f3\u4e50\u5206\u4eab\u94fe\u63a5\r\n\r\n    options:\r\n    -h, --help            show this help message and exit\r\n\r\n    \u4e0b\u8f7d:\r\n    --max-workers \u6700\u591a\u540c\u65f6\u4e0b\u8f7d\u4efb\u52a1\u6570, -m \u6700\u591a\u540c\u65f6\u4e0b\u8f7d\u4efb\u52a1\u6570\r\n    --output-name \u4fdd\u5b58\u6587\u4ef6\u540d\u6a21\u677f, --template \u4fdd\u5b58\u6587\u4ef6\u540d\u6a21\u677f, -t \u4fdd\u5b58\u6587\u4ef6\u540d\u6a21\u677f\r\n                            \u4fdd\u5b58\u6587\u4ef6\u540d\u6a21\u677f\r\n                                \u53c2\u6570\uff1a\r\n                                    id     - \u7f51\u6613\u4e91\u97f3\u4e50\u8d44\u6e90 ID\r\n                                    year   - \u51fa\u7248\u5e74\u4efd\r\n                                    no     - \u4e13\u8f91\u4e2d\u7f16\u53f7\r\n                                    album  - \u4e13\u8f91\u6807\u9898\r\n                                    track  - \u5355\u66f2\u6807\u9898\r\n                                    title  - \u5b8c\u6574\u6807\u9898\r\n                                    artists- \u827a\u672f\u5bb6\u540d\r\n                                \u4f8b\uff1a\r\n                                    {track} - {artists} \u7b49\u6548\u4e8e {title}\r\n    -o \u8f93\u51fa, --output \u8f93\u51fa    \u8f93\u51fa\u6587\u4ef6\u5939\r\n                                \u6ce8\uff1a\u8be5\u53c2\u6570\u4e5f\u53ef\u4f7f\u7528\u6a21\u677f\uff0c\u683c\u5f0f\u540c \u4fdd\u5b58\u6587\u4ef6\u540d\u6a21\u677f\r\n    --quality \u97f3\u8d28          \u97f3\u9891\u97f3\u8d28\uff08\u9ad8\u97f3\u8d28\u9700\u8981 CVIP\uff09\r\n                                \u53c2\u6570\uff1a\r\n                                    hires  - Hi-Res\r\n                                    lossless- \u201c\u65e0\u635f\u201d\r\n                                    exhigh  - \u8f83\u9ad8\r\n                                    standard- \u6807\u51c6\r\n    -dl, --use-download-api\r\n                            \u8c03\u7528\u4e0b\u8f7dAPI\uff0c\u800c\u975e\u64ad\u653eAPI\u8fdb\u884c\u4e0b\u8f7d\u3002\u5982\u6b64\u53ef\u80fd\u5141\u8bb8\u66f4\u9ad8\u9ad8\u97f3\u8d28\u97f3\u9891\u7684\u4e0b\u8f7d\u3002\r\n                            \u3010\u6ce8\u610f\u3011\u6b64API\u6709\u989d\u5ea6\u9650\u5236\uff0c\u53c2\u8003 https://music.163.com/member/downinfo\r\n    --no-overwrite        \u4e0d\u91cd\u590d\u4e0b\u8f7d\u5df2\u7ecf\u5b58\u5728\u7684\u97f3\u9891\u6587\u4ef6\r\n\r\n    \u6b4c\u8bcd:\r\n    --lyric-no \u8df3\u8fc7\u6b4c\u8bcd       \u8df3\u8fc7\u67d0\u4e9b\u6b4c\u8bcd\u7c7b\u578b\u7684\u4e0b\u8f7d\r\n                                \u53c2\u6570\uff1a\r\n                                    lrc    - \u6e90\u8bed\u8a00\u6b4c\u8bcd  (\u5408\u5e76\u5230 .lrc)\r\n                                    tlyric - \u7ffb\u8bd1\u540e\u6b4c\u8bcd  (\u5408\u5e76\u5230 .lrc)\r\n                                    romalrc- \u7f57\u9a6c\u97f3\u6b4c\u8bcd  (\u5408\u5e76\u5230 .lrc)\r\n                                    yrc    - \u9010\u8bcd\u6eda\u52a8\u6b4c\u8bcd (\u4fdd\u5b58\u5230 .ass)\r\n                                    none   - \u4e0b\u8f7d\u6240\u6709\u6b4c\u8bcd\r\n                                \u4f8b\uff1a\r\n                                    --lyric-no \"tlyric romalrc yrc\" \u5c06\u53ea\u4e0b\u8f7d\u6e90\u8bed\u8a00\u6b4c\u8bcd\r\n                                    --lyric-no none \u5c06\u4e0b\u8f7d\u6240\u6709\u6b4c\u8bcd\r\n                                \u6ce8\uff1a\r\n                                    \u9ed8\u8ba4\u4e0d\u4e0b\u8f7d *\u9010\u8bcd\u6eda\u52a8\u6b4c\u8bcd*\r\n\r\n\r\n    \u767b\u9646:\r\n    --phone \u624b\u673a            \u7f51\u6613\u8d26\u6237\u624b\u673a\u53f7\r\n    --cookie Cookie (MUSIC_U)\r\n                            \u7f51\u6613\u4e91\u97f3\u4e50 MUSIC_U Cookie (\u5f62\u5982 '00B2471D143...')\r\n    --pwd \u5bc6\u7801, --password \u5bc6\u7801\r\n                            \u7f51\u6613\u8d26\u6237\u5bc6\u7801\r\n    --save [\u4fdd\u5b58\u5230]          \u5199\u672c\u6b21\u767b\u5f55\u4fe1\u606f\u4e8e\u6587\u4ef6\r\n    --load [\u4fdd\u5b58\u7684\u767b\u9646\u4fe1\u606f\u6587\u4ef6]    \u4ece\u6587\u4ef6\u8bfb\u53d6\u767b\u5f55\u4fe1\u606f\u4f9b\u672c\u6b21\u767b\u9646\u4f7f\u7528\r\n    --http                \u4f18\u5148\u4f7f\u7528 HTTP\uff0c\u4e0d\u4fdd\u8bc1\u4e0d\u88ab\u5347\u7ea7\r\n    --deviceId \u8bbe\u5907ID       \u6307\u5b9a\u8bbe\u5907 ID\uff1b\u533f\u540d\u767b\u9646\u65f6\uff0c\u8bbe\u5907 ID \u65e2\u6307\u5b9a\u5bf9\u5e94\u8d26\u6237\r\n                            \u3010\u6ce8\u610f\u3011\u9ed8\u8ba4 ID \u4e0e\u5f53\u524d\u8bbe\u5907\u65e0\u5173\uff0c\u4e43\u4ece\u5185\u5d4c 256 \u53ef\u7528 ID \u4e2d\u968f\u673a\u9009\u53d6\uff1b\u6307\u5b9a\u81ea\u5b9a\u4e49 ID \u4e0d\u4e00\u5b9a\u80fd\u767b\u5f55\uff0c\u76f8\u5173\u6027\u6682\u65f6\u672a\u77e5\r\n    --log-level LOG_LEVEL\r\n                            \u65e5\u5fd7\u7b49\u7ea7\r\n\r\n    \u9650\u91cf\u53ca\u8fc7\u6ee4\uff08\u6ce8\uff1a\u53ea\u9002\u7528\u4e8e*\u6bcf\u5355\u4e2a*\u94fe\u63a5 / ID\uff09:\r\n    -n \u4e0b\u8f7d\u603b\u91cf, --count \u4e0b\u8f7d\u603b\u91cf\r\n                            \u9650\u5236\u4e0b\u8f7d\u6b4c\u66f2\u603b\u91cf\uff0cn=0\u5373\u4e0d\u9650\u5236\uff08\u6ce8\uff1a\u8fc7\u5927\u503c\u53ef\u80fd\u5bfc\u81f4\u9650\u6d41\uff09\r\n    --sort-by \u6b4c\u66f2\u6392\u5e8f        \u3010\u9650\u5236\u603b\u91cf\u65f6\u3011\u6b4c\u66f2\u6392\u5e8f\u65b9\u5f0f (default: \u9ed8\u8ba4\u6392\u5e8f hot: \u70ed\u5ea6\u9ad8\uff08\u76f8\u5bf9\u4e8e\u5176\u6240\u5728\u4e13\u8f91\uff09\u5728\u524d time: \u53d1\u884c\u65f6\u95f4\u65b0\u5728\u524d)\r\n    --reverse-sort        \u3010\u9650\u5236\u603b\u91cf\u65f6\u3011\u5012\u5e8f\u6392\u5e8f\u6b4c\u66f2\r\n    --user-bookmarks      \u3010\u4e0b\u8f7d\u7528\u6237\u6b4c\u5355\u65f6\u3011\u5728\u4e0b\u8f7d\u7528\u6237\u521b\u5efa\u7684\u6b4c\u5355\u7684\u540c\u65f6\uff0c\u4e5f\u4e0b\u8f7d\u5176\u6536\u85cf\u7684\u6b4c\u5355\r\n\r\n    \u5de5\u5177:\r\n    --save-m3u \u4fdd\u5b58M3U\u64ad\u653e\u5217\u8868\u6587\u4ef6\u540d\r\n                            \u5c06\u672c\u6b21\u4e0b\u8f7d\u7684\u6b4c\u66f2\u6587\u4ef6\u540d\u4f9d\u4e00\u5b9a\u987a\u5e8f\u4fdd\u5b58\u5728M3U\u6587\u4ef6\u4e2d\uff1b\u5199\u5165\u7684\u6587\u4ef6\u76ee\u5f55\u76f8\u5bf9\u4e8e\u8be5M3U\u6587\u4ef6\r\n                                    \u6587\u4ef6\u7f16\u7801\u4e3a UTF-8\r\n                                    \u987a\u5e8f\u4e3a\uff1a\u94fe\u63a5\u5148\u540e\u4f18\u5148\u2014\u2014\u6bcf\u4e2a\u94fe\u63a5\u7684\u6240\u6709\u6b4c\u66f2\u4f9d\u7167\u6b4c\u66f2\u6392\u5e8f\u8bbe\u5b9a \uff08--sort-by\uff09\u6392\u5e8f\r\n## \u73af\u5883\u53d8\u91cf\r\n|\u53d8\u91cf\u540d|\u8bf4\u660e|\r\n|-|-|\r\n|`PYNCM_DEBUG`|\u8c03\u8bd5\u65e5\u5fd7\u8f93\u51fa\u7b49\u7ea7,`'CRITICAL', 'DEBUG', 'ERROR','FATAL','INFO','WARNING'` \u4e4b\u4e00|\r\n### \u4f7f\u7528\u793a\u4f8b\r\n## \u8f6c\u50a8\u5355\u66f2\r\n[![asciicast](https://asciinema.org/a/4PEC5977rTcm4hp9jLuPFYUM1.svg)](https://asciinema.org/a/4PEC5977rTcm4hp9jLuPFYUM1)\r\n\r\nAPI\u4f7f\u7528\u8be6\u89c1 \r\n- [Demo](https://github.com/mos9527/pyncm/tree/master/demos)\r\n\r\n# API \u4f7f\u7528\u793a\u4f8b\r\n```python\r\n>>> from pyncm import apis\r\n# \u83b7\u53d6\u6b4c\u66f2\u4fe1\u606f    \r\n>>> apis.track.GetTrackAudio(29732235)\r\n{'data': [{'id': 29732235, 'url': 'http://m701.music...\r\n# \u83b7\u53d6\u6b4c\u66f2\u8be6\u60c5\r\n>>> apis.track.GetTrackDetail(29732235)    \r\n{'songs': [{'name': 'Supernova', 'id': 2...\r\n# \u83b7\u53d6\u6b4c\u66f2\u8bc4\u8bba\r\n>>> apis.track.GetTrackComments(29732235)    \r\n{'isMusician': False, 'userId': -1, 'topComments': [], 'moreHot': True, 'hotComments': [{'user': {'locationInfo': None, 'liveIn ...\r\n```\r\n- \u591a Session \u793a\u4f8b\r\n```python\r\nLoginViaEmail(...) \r\n# \u5229\u7528\u5168\u5c40 Session \u5b8c\u6210\u8be5 API Call\r\nsession = CreateNewSession() # \u5efa\u7acb\u65b0\u7684 Session\r\nwith session: # \u8fdb\u5165\u8be5 Session, \u5728 `with` \u5185\u7684 API \u5c06\u7531\u8be5 Session \u5b8c\u6210\r\n    LoginViaCellPhone(...)\r\n    result = GetTrackAudio(...)\r\n# \u79bb\u5f00 Session. \u6b64\u540e API \u5c06\u7ee7\u7eed\u7531\u5168\u5c40 Session \u7ba1\u7406\r\nGetTrackComments(...)\r\n```\r\n\r\n\u540c\u65f6\uff0c\u4f60\u4e5f\u53ef\u4ee5\u5728 API Call \u4e2d \u6307\u5b9a Session\r\n```python\r\nawait GetTrackComments(..., session=session)\r\n```\r\n\r\n\u8be6\u89c1 [Session \u8bf4\u660e](https://github.com/mos9527/pyncm/blob/master/pyncm/__init__.py#L52)\r\n## API \u8bf4\u660e\r\n\u5927\u90e8\u5206 API \u51fd\u6570\u5df2\u7ecf\u8be6\u7ec6\u6ce8\u91ca\uff0c\u53ef\u8bfb\u6027\u8f83\u9ad8\u3002\u63a8\u8350\u53c2\u9605 [API \u6e90\u7801](https://github.com/mos9527/pyncm/tree/master/pyncm) \u83b7\u5f97\u652f\u6301\r\n\r\n## FAQ\r\n- \u4e3a\u4ec0\u4e48 `GetTrackAudio` \u51e0\u4e4e\u62ff\u4e0d\u5230\u97f3\u9891 URL\uff1f\r\n\r\n\u4f60\u9700\u8981[\u8fdb\u884c\u767b\u9646](https://github.com/mos9527/pyncm/blob/master/pyncm/apis/login.py)\u3002\u82e5\u8eab\u8fb9\u6ca1\u6709\u5408\u9002\u7684\u8d26\u53f7\uff0c\u4e5f\u53ef\u9009\u62e9\u533f\u540d\u767b\u9646\uff1a\r\n```python\r\n>>> from pyncm.apis.login import LoginViaAnonymousAccount\r\n>>> LoginViaAnonymousAccount()\r\n{'tick': 1662870122.1159196,\r\n 'content': {'code': 200,\r\n  'userId': 8023914528,\r\n  'createTime': 1662868134354,\r\n  'profile': {'nickname': 'Ano...\r\n```\r\n# \u611f\u8c22\r\n[Android\u9006\u5411\u2014\u2014\u7f51\u6613\u4e91\u97f3\u4e50\u6392\u884c\u699capi(\u4e0a)](https://juejin.im/post/6844903586879520775)\r\n\r\n[Binaryify/NeteaseCloudMusicApi](https://gitlab.com/Binaryify/neteasecloudmusicapi)\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "NeteaseCloudMusic APIs for Python 3.x \u9002\u7528\u4e8e Python 3 \u7684\u7f51\u6613\u4e91\u97f3\u4e50 API",
    "version": "1.7.1",
    "project_urls": {
        "Homepage": "https://github.com/greats3an/pyncm"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "54d7af20b066c43ff60287c05993100b71f0cdf4cd53be009386e67d549de54a",
                "md5": "994e23953a947e2e473982560ec9a8bd",
                "sha256": "2a279846523f559d25edddc769c6ea4365474581d6964d2e5501f3d40e8a4eb6"
            },
            "downloads": -1,
            "filename": "pyncm-1.7.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "994e23953a947e2e473982560ec9a8bd",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 73487,
            "upload_time": "2024-11-24T11:27:52",
            "upload_time_iso_8601": "2024-11-24T11:27:52.615105Z",
            "url": "https://files.pythonhosted.org/packages/54/d7/af20b066c43ff60287c05993100b71f0cdf4cd53be009386e67d549de54a/pyncm-1.7.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fa99b2cd860956473cece1e4821f5ccabfdb567a37db642fb85536bb5e1b2b5e",
                "md5": "5ffd59992ad89bc0eceb7b3699531e07",
                "sha256": "0056761862d15dec3c29e506e903135b51d1d5521da7a46fc3cc0d2e97d9dce2"
            },
            "downloads": -1,
            "filename": "pyncm-1.7.1.tar.gz",
            "has_sig": false,
            "md5_digest": "5ffd59992ad89bc0eceb7b3699531e07",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 65078,
            "upload_time": "2024-11-24T11:27:54",
            "upload_time_iso_8601": "2024-11-24T11:27:54.855141Z",
            "url": "https://files.pythonhosted.org/packages/fa/99/b2cd860956473cece1e4821f5ccabfdb567a37db642fb85536bb5e1b2b5e/pyncm-1.7.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-24 11:27:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "greats3an",
    "github_project": "pyncm",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pyncm"
}
        
Elapsed time: 0.37978s