ASMRManager


NameASMRManager JSON
Version 2.3.0 PyPI version JSON
download
home_pageNone
Summarydownload, manage and play the voices on asmr.one
upload_time2024-12-05 15:37:30
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords asmr downloader music player manager cli tui commandline terminal
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ASMRManager

包含下载,管理,播放(命令行 TUI)的 <https://asmr.one> 的 CLI 管理工具。

## 功能介绍

### 下载

支持网站所支持的所有索引方式(关键词,标签,会社,价格,声优,日期,年龄分级等等)以及排序方式。
目前仅支持调用 IDM 或 aria2 下载。
支持根据根据文件名对下载的文件进行过滤,以及对音频文件的格式转换。

```
> asmr dl search --help
2024-02-27 16:54:42 - INFO - Run program with: dl search --help
Usage: asmr dl search [OPTIONS] [TEXT]

  search and download ASMR

  the [multiple] options means you can add multiple same option such as:

      --tags tag1 --tags tag2 --no-tags tag3

  for options like --rate, --sell, --price, you should give a interval like:

      --rate 3.9:4.7 --sell 1000: --price :200

  the interval a:b means a <= x < b, if a or b is not given i.e. a: or :b, it
  means no lower or upper limit

  --force will check the download RJ files again though it is already  in the
  database, it work just like update

  --replace option will first delte the original file, then add the new file
  to download queue(i.e. IDM or aria2)

  nsfw will only show the full age ASMRs

  for other --order values, you can refer to the website for explicit meaning

Options:
  -t, --tags TEXT                 tags to include[multiple]
  -nt, --no-tags TEXT             tags to exclude[multiple]
  -v, --vas TEXT                  voice actor(cv) to include[multiple]
  -nv, --no-vas TEXT              voice actor(cv) to exclude[multiple]
  -c, --circle TEXT               circle(社团) to include
  -nc, --no-circle TEXT           circle(社团) to exclude[multiple]
  -a, --age [general|r15|adult]   age limitation to include[multiple]
  -na, --no-age [general|r15|adult]
                                  age limitation to exclude[multiple]
  -r, --rate TEXT                 rating interval
  -s, --sell TEXT                 selling interval
  -pr, --price TEXT               pirce interval
  --all / --select                download all RJs  [default: select]
  -p, --page INTEGER              page of the search result  [default: 1]
  --subtitle / --no-subtitle      if the ASMR has subtitle(中文字幕)  [default:
                                  no-subtitle]
  -o, --order [create_date|rating|release|dl_count|price|rate_average_2dp|review_count|id|nsfw|random]
                                  ordering of the search result  [default:
                                  release]
  --asc / --desc                  ascending or descending
  --force / --check-db            force download even if the RJ id exists in
                                  database,or by default, RJ already in the
                                  database will be skipped
  --replace / --no-replace        replace the file if it exists  [default: no-
                                  replace]
  --check-name / --ignore-name    check and filter out asmr by filenames,
                                  rules are in the config file  [default:
                                  check-name]
  --check-tag / --ignore-tag      check and filter out asmr by tags, rules are
                                  in the config file  [default: check-tag]
  -h, --help                      Show this message and exit.
```

### 管理

可以对作品进行评分,评论。也支持用关键词进行搜索(但需要一点 sql 基础,仓库提供了一些模板,例如 [search.sql](./asmrmanager/filemanager/resources/sqls.example/search.sql))

### 播放

非常简陋的终端播放界面,支持歌词显示,按照歌词信息快进,切换歌曲,支持以pygame(sdl)或mpd做为后端,可以预见的将来应该会完善一下(但感觉够用了应该不会再加啥功能了)。
![tui-screenshot](./assets/tui-screenshot.png)

## 使用方法

本工具支持 `python >= 3.10`, 安装方法如下:

```shell
pip install ASMRManager[依赖]
```

可选则的依赖项有 `idm`, `aria2`, `tui`,`pygame`,`mpd`, `all`,多个依赖使用逗号分隔,其中`all`为安装所有依赖。例如 `pip install ASMRManager[idm,tui]`

- 下载:`idm` 或 `aria2` 二选一,`idm` 为 windows 平台专用,`aria2` 为跨平台。
- 播放:`pygame` 或 `mpd` 二选一。
- 其他:`tui` 为可视化命令行界面。

> 此处也可以选择使用 `pipx` 来替代 `pip`,避免污染全局环境。
> 安装方法:`pip install pipx`

---

之后再运行 `asmr` 命令,会生成示例的配置文件和 sql 文件,此处以 windows 举例:

```
2023-10-22 14:36:21 - INFO - First time to run, copy default sqls to C:\Users\slqy\AppData\Local\asmrmanager\asmrmanager\sqls
2023-10-22 14:36:21 - INFO - An example config file has been copied to C:\Users\slqy\AppData\Local\asmrmanager\asmrmanager\config.toml, please modify it and run this command again
```

之后按照说明修改 `config.toml` 文件,如果使用 sql 的话,也可以对 sql 文件夹进行修改。

若有不明白的地方可使用 sqlite 数据库工具查看目录下的 data.db 文件。

完成后使用 `asmr -h` 查看各命令的使用说明,对于子命令不清楚的同样可以查看帮助,例如 `asmr dl -h`。
常用的命令有:
- `dl search` 搜索并下载。
- `info` 搜索某个 RJID 的具体信息
- `file check` 检查下载目录下的文件是否按照规则被正确下载 
- `file store` 将下载文件转移到存储目录(STORAGE_PATH),并执行相应文件格式转换(详情见config.toml的before_store字段)
- `view` 将选择文件并移动到 VIEW_PATH
- `pl add` 将某个音声添加到用户的云端播放列表(配合 `pl create` 使用)
- `review` 为某个作品评分并评论(本地)

更多使用示例可参考[这一小节](#使用示例)。

> 使用命令时,如果不输入 RJID ,将会自动使用上一次命令的RJID。

另外本工具提供基于 `trogon` 的可视化命令行界面,在安装`tui`依赖后使用 `asmr tui` 即可打开。

## 命令行补全
仅适用于Linux,详情可参考[官方文档](https://click.palletsprojects.com/en/8.1.x/shell-completion)。
```shell
# fish
_ASMR_COMPLETE=fish_source asmr > ~/.config/fish/completions/asmr.fish

# bash
_ASMR_COMPLETE=bash_source asmr > ~/.asmr-complete.bash
echo '. ~/.asmr-complete.bash' >> ~/.bashrc

# zsh
_ASMR_COMPLETE=zsh_source asmr > ~/.asmr-complete.zsh
echo '. ~/.asmr-complete.zsh' >> ~/.zshrc
```

## 使用示例
搜索最近更新的40个(一页)作品并下载:
```shell
asmr dl search -o release --desc  # 选择并下载
asmr dl search -o release --desc --all  # 下载全部
```

下载`治愈`标签下销量大于等于5000的全部的作品:
```shell
asmr dl search --tags 治愈 --sell 5000: --page 0 --all  # --page 0 会遍历下载所有页,否则默认只会下载第一页
```

下载某个社团下的全年龄并包含中文字幕的作品:
```shell
asmr dl search --circle Yostar --age general --subtitle
```

根据RJ/VJ/BJ号下载(下述输入格式适用于一切需要输入单个或多个ID的场合):
```shell
asmr dl get RJ299717
asmr dl get 299717  # RJ可以省略;对于8位RJ号,第一位的0也可以省略
asmr dl get VJ015443
asmr dl get 100000029  # 对于BJ与VJ,网站为了兼容RJ所使用的特殊ID
asmr dl get 300015443  # 本项目存储VJ与BJ所使用的ID("3" + 8位VJ号,BJ则为"4" + 8位BJ号)
```

检查下载目录下文件是否下载完全(只验证文件存在,不保证文件完整性)
```shell
asmr file check
asmr file check --list | xargs asmr dl get --force   # 重新下载所有不完整的文件,以linux shell为例
```

将下载的文件转移到存储目录(STORAGE_PATH),并执行相应文件格式转换(详情见config.toml的before_store字段)
```shell
asmr file store --all
```

比较本地文件与服务器文件的差异:

![diff](./assets/diff.png)

简单的关键词搜索(本地数据库):
```shell
asmr query 治愈 --limit 3  # 搜索字段有:标题,社团名和标签名
asmr query 治愈 --limit 3 --raw | jq .[].id | xargs -n1 asmr info # 输出为json格式,获取详细信息
```


## 关于`dl search/get`的使用
命令执行过程中会进行如下的检查与过滤操作:
1. 开始下载前:检查RJ号是否应该下载,如果本地文件不存在或者数据库无记录都会执行下载操作。可以通过 `--force` 强制执行下载。
1. 获取音声信息后:检查音声的tags,如果包含tag_filters里指定的tag,则跳过下载。可以通过 `--ignore-tag` 来强制下载。
1. 获取下载文件后:检查文件的名称和路径,如果不符合filename_filters里指定的规则,则跳过下载。可以通过`--ignore-name`来强制下载。
1. 添加下载任务时:如果检测到本地有同名文件,则跳过该文件的下载。可以通过`--replace`来强制覆盖存在的文件。

## 其他

感谢 <https://asmr.one>丰富了我的夜生活。
另外网站运营不易,请合理使用本工具。

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ASMRManager",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "asmr, downloader, music, player, manager, cli, tui, commandline, terminal",
    "author": null,
    "author_email": "SLQY <sqiyel@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/45/2d/25e3a5773080c8805d7e4ae88becb11bc4fd6af33572ce46df9ce77b2426/asmrmanager-2.3.0.tar.gz",
    "platform": null,
    "description": "# ASMRManager\n\n\u5305\u542b\u4e0b\u8f7d\uff0c\u7ba1\u7406\uff0c\u64ad\u653e(\u547d\u4ee4\u884c TUI)\u7684 <https://asmr.one> \u7684 CLI \u7ba1\u7406\u5de5\u5177\u3002\n\n## \u529f\u80fd\u4ecb\u7ecd\n\n### \u4e0b\u8f7d\n\n\u652f\u6301\u7f51\u7ad9\u6240\u652f\u6301\u7684\u6240\u6709\u7d22\u5f15\u65b9\u5f0f(\u5173\u952e\u8bcd\uff0c\u6807\u7b7e\uff0c\u4f1a\u793e\uff0c\u4ef7\u683c\uff0c\u58f0\u4f18\uff0c\u65e5\u671f\uff0c\u5e74\u9f84\u5206\u7ea7\u7b49\u7b49)\u4ee5\u53ca\u6392\u5e8f\u65b9\u5f0f\u3002\n\u76ee\u524d\u4ec5\u652f\u6301\u8c03\u7528 IDM \u6216 aria2 \u4e0b\u8f7d\u3002\n\u652f\u6301\u6839\u636e\u6839\u636e\u6587\u4ef6\u540d\u5bf9\u4e0b\u8f7d\u7684\u6587\u4ef6\u8fdb\u884c\u8fc7\u6ee4\uff0c\u4ee5\u53ca\u5bf9\u97f3\u9891\u6587\u4ef6\u7684\u683c\u5f0f\u8f6c\u6362\u3002\n\n```\n> asmr dl search --help\n2024-02-27 16:54:42 - INFO - Run program with: dl search --help\nUsage: asmr dl search [OPTIONS] [TEXT]\n\n  search and download ASMR\n\n  the [multiple] options means you can add multiple same option such as:\n\n      --tags tag1 --tags tag2 --no-tags tag3\n\n  for options like --rate, --sell, --price, you should give a interval like:\n\n      --rate 3.9:4.7 --sell 1000: --price :200\n\n  the interval a:b means a <= x < b, if a or b is not given i.e. a: or :b, it\n  means no lower or upper limit\n\n  --force will check the download RJ files again though it is already  in the\n  database, it work just like update\n\n  --replace option will first delte the original file, then add the new file\n  to download queue(i.e. IDM or aria2)\n\n  nsfw will only show the full age ASMRs\n\n  for other --order values, you can refer to the website for explicit meaning\n\nOptions:\n  -t, --tags TEXT                 tags to include[multiple]\n  -nt, --no-tags TEXT             tags to exclude[multiple]\n  -v, --vas TEXT                  voice actor(cv) to include[multiple]\n  -nv, --no-vas TEXT              voice actor(cv) to exclude[multiple]\n  -c, --circle TEXT               circle(\u793e\u56e2) to include\n  -nc, --no-circle TEXT           circle(\u793e\u56e2) to exclude[multiple]\n  -a, --age [general|r15|adult]   age limitation to include[multiple]\n  -na, --no-age [general|r15|adult]\n                                  age limitation to exclude[multiple]\n  -r, --rate TEXT                 rating interval\n  -s, --sell TEXT                 selling interval\n  -pr, --price TEXT               pirce interval\n  --all / --select                download all RJs  [default: select]\n  -p, --page INTEGER              page of the search result  [default: 1]\n  --subtitle / --no-subtitle      if the ASMR has subtitle(\u4e2d\u6587\u5b57\u5e55)  [default:\n                                  no-subtitle]\n  -o, --order [create_date|rating|release|dl_count|price|rate_average_2dp|review_count|id|nsfw|random]\n                                  ordering of the search result  [default:\n                                  release]\n  --asc / --desc                  ascending or descending\n  --force / --check-db            force download even if the RJ id exists in\n                                  database,or by default, RJ already in the\n                                  database will be skipped\n  --replace / --no-replace        replace the file if it exists  [default: no-\n                                  replace]\n  --check-name / --ignore-name    check and filter out asmr by filenames,\n                                  rules are in the config file  [default:\n                                  check-name]\n  --check-tag / --ignore-tag      check and filter out asmr by tags, rules are\n                                  in the config file  [default: check-tag]\n  -h, --help                      Show this message and exit.\n```\n\n### \u7ba1\u7406\n\n\u53ef\u4ee5\u5bf9\u4f5c\u54c1\u8fdb\u884c\u8bc4\u5206\uff0c\u8bc4\u8bba\u3002\u4e5f\u652f\u6301\u7528\u5173\u952e\u8bcd\u8fdb\u884c\u641c\u7d22(\u4f46\u9700\u8981\u4e00\u70b9 sql \u57fa\u7840\uff0c\u4ed3\u5e93\u63d0\u4f9b\u4e86\u4e00\u4e9b\u6a21\u677f\uff0c\u4f8b\u5982 [search.sql](./asmrmanager/filemanager/resources/sqls.example/search.sql))\n\n### \u64ad\u653e\n\n\u975e\u5e38\u7b80\u964b\u7684\u7ec8\u7aef\u64ad\u653e\u754c\u9762\uff0c\u652f\u6301\u6b4c\u8bcd\u663e\u793a\uff0c\u6309\u7167\u6b4c\u8bcd\u4fe1\u606f\u5feb\u8fdb\uff0c\u5207\u6362\u6b4c\u66f2\uff0c\u652f\u6301\u4ee5pygame(sdl)\u6216mpd\u505a\u4e3a\u540e\u7aef\uff0c\u53ef\u4ee5\u9884\u89c1\u7684\u5c06\u6765\u5e94\u8be5\u4f1a\u5b8c\u5584\u4e00\u4e0b(\u4f46\u611f\u89c9\u591f\u7528\u4e86\u5e94\u8be5\u4e0d\u4f1a\u518d\u52a0\u5565\u529f\u80fd\u4e86)\u3002\n![tui-screenshot](./assets/tui-screenshot.png)\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n\u672c\u5de5\u5177\u652f\u6301 `python >= 3.10`, \u5b89\u88c5\u65b9\u6cd5\u5982\u4e0b\uff1a\n\n```shell\npip install ASMRManager[\u4f9d\u8d56]\n```\n\n\u53ef\u9009\u5219\u7684\u4f9d\u8d56\u9879\u6709 `idm`, `aria2`, `tui`\uff0c`pygame`,`mpd`, `all`\uff0c\u591a\u4e2a\u4f9d\u8d56\u4f7f\u7528\u9017\u53f7\u5206\u9694\uff0c\u5176\u4e2d`all`\u4e3a\u5b89\u88c5\u6240\u6709\u4f9d\u8d56\u3002\u4f8b\u5982 `pip install ASMRManager[idm,tui]`\n\n- \u4e0b\u8f7d\uff1a`idm` \u6216 `aria2` \u4e8c\u9009\u4e00\uff0c`idm` \u4e3a windows \u5e73\u53f0\u4e13\u7528\uff0c`aria2` \u4e3a\u8de8\u5e73\u53f0\u3002\n- \u64ad\u653e\uff1a`pygame` \u6216 `mpd` \u4e8c\u9009\u4e00\u3002\n- \u5176\u4ed6\uff1a`tui` \u4e3a\u53ef\u89c6\u5316\u547d\u4ee4\u884c\u754c\u9762\u3002\n\n> \u6b64\u5904\u4e5f\u53ef\u4ee5\u9009\u62e9\u4f7f\u7528 `pipx` \u6765\u66ff\u4ee3 `pip`\uff0c\u907f\u514d\u6c61\u67d3\u5168\u5c40\u73af\u5883\u3002\n> \u5b89\u88c5\u65b9\u6cd5\uff1a`pip install pipx`\n\n---\n\n\u4e4b\u540e\u518d\u8fd0\u884c `asmr` \u547d\u4ee4\uff0c\u4f1a\u751f\u6210\u793a\u4f8b\u7684\u914d\u7f6e\u6587\u4ef6\u548c sql \u6587\u4ef6\uff0c\u6b64\u5904\u4ee5 windows \u4e3e\u4f8b\uff1a\n\n```\n2023-10-22 14:36:21 - INFO - First time to run, copy default sqls to C:\\Users\\slqy\\AppData\\Local\\asmrmanager\\asmrmanager\\sqls\n2023-10-22 14:36:21 - INFO - An example config file has been copied to C:\\Users\\slqy\\AppData\\Local\\asmrmanager\\asmrmanager\\config.toml, please modify it and run this command again\n```\n\n\u4e4b\u540e\u6309\u7167\u8bf4\u660e\u4fee\u6539 `config.toml` \u6587\u4ef6\uff0c\u5982\u679c\u4f7f\u7528 sql \u7684\u8bdd\uff0c\u4e5f\u53ef\u4ee5\u5bf9 sql \u6587\u4ef6\u5939\u8fdb\u884c\u4fee\u6539\u3002\n\n\u82e5\u6709\u4e0d\u660e\u767d\u7684\u5730\u65b9\u53ef\u4f7f\u7528 sqlite \u6570\u636e\u5e93\u5de5\u5177\u67e5\u770b\u76ee\u5f55\u4e0b\u7684 data.db \u6587\u4ef6\u3002\n\n\u5b8c\u6210\u540e\u4f7f\u7528 `asmr -h` \u67e5\u770b\u5404\u547d\u4ee4\u7684\u4f7f\u7528\u8bf4\u660e\uff0c\u5bf9\u4e8e\u5b50\u547d\u4ee4\u4e0d\u6e05\u695a\u7684\u540c\u6837\u53ef\u4ee5\u67e5\u770b\u5e2e\u52a9\uff0c\u4f8b\u5982 `asmr dl -h`\u3002\n\u5e38\u7528\u7684\u547d\u4ee4\u6709\uff1a\n- `dl search` \u641c\u7d22\u5e76\u4e0b\u8f7d\u3002\n- `info` \u641c\u7d22\u67d0\u4e2a RJID \u7684\u5177\u4f53\u4fe1\u606f\n- `file check` \u68c0\u67e5\u4e0b\u8f7d\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u662f\u5426\u6309\u7167\u89c4\u5219\u88ab\u6b63\u786e\u4e0b\u8f7d \n- `file store` \u5c06\u4e0b\u8f7d\u6587\u4ef6\u8f6c\u79fb\u5230\u5b58\u50a8\u76ee\u5f55(STORAGE_PATH)\uff0c\u5e76\u6267\u884c\u76f8\u5e94\u6587\u4ef6\u683c\u5f0f\u8f6c\u6362(\u8be6\u60c5\u89c1config.toml\u7684before_store\u5b57\u6bb5)\n- `view` \u5c06\u9009\u62e9\u6587\u4ef6\u5e76\u79fb\u52a8\u5230 VIEW_PATH\n- `pl add` \u5c06\u67d0\u4e2a\u97f3\u58f0\u6dfb\u52a0\u5230\u7528\u6237\u7684\u4e91\u7aef\u64ad\u653e\u5217\u8868(\u914d\u5408 `pl create` \u4f7f\u7528)\n- `review` \u4e3a\u67d0\u4e2a\u4f5c\u54c1\u8bc4\u5206\u5e76\u8bc4\u8bba(\u672c\u5730)\n\n\u66f4\u591a\u4f7f\u7528\u793a\u4f8b\u53ef\u53c2\u8003[\u8fd9\u4e00\u5c0f\u8282](#\u4f7f\u7528\u793a\u4f8b)\u3002\n\n> \u4f7f\u7528\u547d\u4ee4\u65f6\uff0c\u5982\u679c\u4e0d\u8f93\u5165 RJID \uff0c\u5c06\u4f1a\u81ea\u52a8\u4f7f\u7528\u4e0a\u4e00\u6b21\u547d\u4ee4\u7684RJID\u3002\n\n\u53e6\u5916\u672c\u5de5\u5177\u63d0\u4f9b\u57fa\u4e8e `trogon` \u7684\u53ef\u89c6\u5316\u547d\u4ee4\u884c\u754c\u9762\uff0c\u5728\u5b89\u88c5`tui`\u4f9d\u8d56\u540e\u4f7f\u7528 `asmr tui` \u5373\u53ef\u6253\u5f00\u3002\n\n## \u547d\u4ee4\u884c\u8865\u5168\n\u4ec5\u9002\u7528\u4e8eLinux\uff0c\u8be6\u60c5\u53ef\u53c2\u8003[\u5b98\u65b9\u6587\u6863](https://click.palletsprojects.com/en/8.1.x/shell-completion)\u3002\n```shell\n# fish\n_ASMR_COMPLETE=fish_source asmr > ~/.config/fish/completions/asmr.fish\n\n# bash\n_ASMR_COMPLETE=bash_source asmr > ~/.asmr-complete.bash\necho '. ~/.asmr-complete.bash' >> ~/.bashrc\n\n# zsh\n_ASMR_COMPLETE=zsh_source asmr > ~/.asmr-complete.zsh\necho '. ~/.asmr-complete.zsh' >> ~/.zshrc\n```\n\n## \u4f7f\u7528\u793a\u4f8b\n\u641c\u7d22\u6700\u8fd1\u66f4\u65b0\u768440\u4e2a(\u4e00\u9875)\u4f5c\u54c1\u5e76\u4e0b\u8f7d\uff1a\n```shell\nasmr dl search -o release --desc  # \u9009\u62e9\u5e76\u4e0b\u8f7d\nasmr dl search -o release --desc --all  # \u4e0b\u8f7d\u5168\u90e8\n```\n\n\u4e0b\u8f7d`\u6cbb\u6108`\u6807\u7b7e\u4e0b\u9500\u91cf\u5927\u4e8e\u7b49\u4e8e5000\u7684\u5168\u90e8\u7684\u4f5c\u54c1\uff1a\n```shell\nasmr dl search --tags \u6cbb\u6108 --sell 5000: --page 0 --all  # --page 0 \u4f1a\u904d\u5386\u4e0b\u8f7d\u6240\u6709\u9875\uff0c\u5426\u5219\u9ed8\u8ba4\u53ea\u4f1a\u4e0b\u8f7d\u7b2c\u4e00\u9875\n```\n\n\u4e0b\u8f7d\u67d0\u4e2a\u793e\u56e2\u4e0b\u7684\u5168\u5e74\u9f84\u5e76\u5305\u542b\u4e2d\u6587\u5b57\u5e55\u7684\u4f5c\u54c1\uff1a\n```shell\nasmr dl search --circle Yostar --age general --subtitle\n```\n\n\u6839\u636eRJ/VJ/BJ\u53f7\u4e0b\u8f7d\uff08\u4e0b\u8ff0\u8f93\u5165\u683c\u5f0f\u9002\u7528\u4e8e\u4e00\u5207\u9700\u8981\u8f93\u5165\u5355\u4e2a\u6216\u591a\u4e2aID\u7684\u573a\u5408\uff09\uff1a\n```shell\nasmr dl get RJ299717\nasmr dl get 299717  # RJ\u53ef\u4ee5\u7701\u7565\uff1b\u5bf9\u4e8e8\u4f4dRJ\u53f7\uff0c\u7b2c\u4e00\u4f4d\u76840\u4e5f\u53ef\u4ee5\u7701\u7565\nasmr dl get VJ015443\nasmr dl get 100000029  # \u5bf9\u4e8eBJ\u4e0eVJ\uff0c\u7f51\u7ad9\u4e3a\u4e86\u517c\u5bb9RJ\u6240\u4f7f\u7528\u7684\u7279\u6b8aID\nasmr dl get 300015443  # \u672c\u9879\u76ee\u5b58\u50a8VJ\u4e0eBJ\u6240\u4f7f\u7528\u7684ID\uff08\"3\" + 8\u4f4dVJ\u53f7\uff0cBJ\u5219\u4e3a\"4\" + 8\u4f4dBJ\u53f7\uff09\n```\n\n\u68c0\u67e5\u4e0b\u8f7d\u76ee\u5f55\u4e0b\u6587\u4ef6\u662f\u5426\u4e0b\u8f7d\u5b8c\u5168\uff08\u53ea\u9a8c\u8bc1\u6587\u4ef6\u5b58\u5728\uff0c\u4e0d\u4fdd\u8bc1\u6587\u4ef6\u5b8c\u6574\u6027\uff09\n```shell\nasmr file check\nasmr file check --list | xargs asmr dl get --force   # \u91cd\u65b0\u4e0b\u8f7d\u6240\u6709\u4e0d\u5b8c\u6574\u7684\u6587\u4ef6\uff0c\u4ee5linux shell\u4e3a\u4f8b\n```\n\n\u5c06\u4e0b\u8f7d\u7684\u6587\u4ef6\u8f6c\u79fb\u5230\u5b58\u50a8\u76ee\u5f55(STORAGE_PATH)\uff0c\u5e76\u6267\u884c\u76f8\u5e94\u6587\u4ef6\u683c\u5f0f\u8f6c\u6362(\u8be6\u60c5\u89c1config.toml\u7684before_store\u5b57\u6bb5)\n```shell\nasmr file store --all\n```\n\n\u6bd4\u8f83\u672c\u5730\u6587\u4ef6\u4e0e\u670d\u52a1\u5668\u6587\u4ef6\u7684\u5dee\u5f02\uff1a\n\n![diff](./assets/diff.png)\n\n\u7b80\u5355\u7684\u5173\u952e\u8bcd\u641c\u7d22\uff08\u672c\u5730\u6570\u636e\u5e93\uff09\uff1a\n```shell\nasmr query \u6cbb\u6108 --limit 3  # \u641c\u7d22\u5b57\u6bb5\u6709\uff1a\u6807\u9898\uff0c\u793e\u56e2\u540d\u548c\u6807\u7b7e\u540d\nasmr query \u6cbb\u6108 --limit 3 --raw | jq .[].id | xargs -n1 asmr info # \u8f93\u51fa\u4e3ajson\u683c\u5f0f\uff0c\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\n```\n\n\n## \u5173\u4e8e`dl search/get`\u7684\u4f7f\u7528\n\u547d\u4ee4\u6267\u884c\u8fc7\u7a0b\u4e2d\u4f1a\u8fdb\u884c\u5982\u4e0b\u7684\u68c0\u67e5\u4e0e\u8fc7\u6ee4\u64cd\u4f5c\uff1a\n1. \u5f00\u59cb\u4e0b\u8f7d\u524d\uff1a\u68c0\u67e5RJ\u53f7\u662f\u5426\u5e94\u8be5\u4e0b\u8f7d\uff0c\u5982\u679c\u672c\u5730\u6587\u4ef6\u4e0d\u5b58\u5728\u6216\u8005\u6570\u636e\u5e93\u65e0\u8bb0\u5f55\u90fd\u4f1a\u6267\u884c\u4e0b\u8f7d\u64cd\u4f5c\u3002\u53ef\u4ee5\u901a\u8fc7 `--force` \u5f3a\u5236\u6267\u884c\u4e0b\u8f7d\u3002\n1. \u83b7\u53d6\u97f3\u58f0\u4fe1\u606f\u540e\uff1a\u68c0\u67e5\u97f3\u58f0\u7684tags\uff0c\u5982\u679c\u5305\u542btag_filters\u91cc\u6307\u5b9a\u7684tag\uff0c\u5219\u8df3\u8fc7\u4e0b\u8f7d\u3002\u53ef\u4ee5\u901a\u8fc7 `--ignore-tag` \u6765\u5f3a\u5236\u4e0b\u8f7d\u3002\n1. \u83b7\u53d6\u4e0b\u8f7d\u6587\u4ef6\u540e\uff1a\u68c0\u67e5\u6587\u4ef6\u7684\u540d\u79f0\u548c\u8def\u5f84\uff0c\u5982\u679c\u4e0d\u7b26\u5408filename_filters\u91cc\u6307\u5b9a\u7684\u89c4\u5219\uff0c\u5219\u8df3\u8fc7\u4e0b\u8f7d\u3002\u53ef\u4ee5\u901a\u8fc7`--ignore-name`\u6765\u5f3a\u5236\u4e0b\u8f7d\u3002\n1. \u6dfb\u52a0\u4e0b\u8f7d\u4efb\u52a1\u65f6\uff1a\u5982\u679c\u68c0\u6d4b\u5230\u672c\u5730\u6709\u540c\u540d\u6587\u4ef6\uff0c\u5219\u8df3\u8fc7\u8be5\u6587\u4ef6\u7684\u4e0b\u8f7d\u3002\u53ef\u4ee5\u901a\u8fc7`--replace`\u6765\u5f3a\u5236\u8986\u76d6\u5b58\u5728\u7684\u6587\u4ef6\u3002\n\n## \u5176\u4ed6\n\n\u611f\u8c22 <https://asmr.one>\u4e30\u5bcc\u4e86\u6211\u7684\u591c\u751f\u6d3b\u3002\n\u53e6\u5916\u7f51\u7ad9\u8fd0\u8425\u4e0d\u6613\uff0c\u8bf7\u5408\u7406\u4f7f\u7528\u672c\u5de5\u5177\u3002\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "download, manage and play the voices on asmr.one",
    "version": "2.3.0",
    "project_urls": {
        "repository": "https://github.com/slqy123/ASMRManager"
    },
    "split_keywords": [
        "asmr",
        " downloader",
        " music",
        " player",
        " manager",
        " cli",
        " tui",
        " commandline",
        " terminal"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "71d82d39890400b948574d78bd5877fd1f3555ad4ebe3b5db4847b183b9ec112",
                "md5": "8350d009e0c4b6f536400f632c643036",
                "sha256": "fd5d18e6f38590931a85839421f6c247263b7b6e3541b92999d5f01d59810e3b"
            },
            "downloads": -1,
            "filename": "asmrmanager-2.3.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8350d009e0c4b6f536400f632c643036",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 69620,
            "upload_time": "2024-12-05T15:37:28",
            "upload_time_iso_8601": "2024-12-05T15:37:28.130967Z",
            "url": "https://files.pythonhosted.org/packages/71/d8/2d39890400b948574d78bd5877fd1f3555ad4ebe3b5db4847b183b9ec112/asmrmanager-2.3.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "452d25e3a5773080c8805d7e4ae88becb11bc4fd6af33572ce46df9ce77b2426",
                "md5": "4db92306e1cf31b0581ff4676791aebe",
                "sha256": "15d753aa9ca204b29d35f696938c402cfa596bba70b2ea9ed8ca60978e36c269"
            },
            "downloads": -1,
            "filename": "asmrmanager-2.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "4db92306e1cf31b0581ff4676791aebe",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 54741,
            "upload_time": "2024-12-05T15:37:30",
            "upload_time_iso_8601": "2024-12-05T15:37:30.250323Z",
            "url": "https://files.pythonhosted.org/packages/45/2d/25e3a5773080c8805d7e4ae88becb11bc4fd6af33572ce46df9ce77b2426/asmrmanager-2.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-05 15:37:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "slqy123",
    "github_project": "ASMRManager",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "asmrmanager"
}
        
Elapsed time: 0.40826s