ASMRManager 2.3.1__tar.gz → 2.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/PKG-INFO +10 -3
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/README.md +9 -2
- asmrmanager-2.3.2/asmrmanager/_version.py +1 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/core.py +1 -1
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/pl.py +1 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/play.py +1 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/utils.py +10 -1
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/rj_parse.py +1 -1
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/manager.py +12 -8
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/lrcplayer/lrcparse.py +1 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/pyproject.toml +1 -1
- asmrmanager-2.3.1/asmrmanager/_version.py +0 -1
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/LICENSE +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/__init__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/__main__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/dl.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/file.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/hold.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/info.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/main.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/query.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/review.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/sql.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/view.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/cli/which.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/__init__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/browse_params.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/download_params.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/fileconverter.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/output.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/parse_filter.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/select.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/types.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/common/vtt2lrc.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/config.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/__init__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/database.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/engine.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/manage.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/orm_type.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/q_func.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/utils/__init__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/utils/add2db.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/database/utils/uuid_sqlite.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/__init__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/appdirs_.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/exceptions.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/file_zipper.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/config.example.toml +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/circle_name.sql +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/score.sql +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/search.sql +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/tags.sql +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/test.sql +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/vas.sql +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/utils.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/logger/__init__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/lrcplayer/__init__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/lrcplayer/main.css +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/lrcplayer/main.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/lrcplayer/player/base.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/lrcplayer/player/mpdplayer.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/lrcplayer/player/pygameplayer.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/spider/__init__.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/spider/asmrapi.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/spider/downloader.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/spider/interface.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/spider/playlist.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/spider/utils/IDMHelper.py +0 -0
- {asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/spider/utils/aria2_downloader.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ASMRManager
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.2
|
|
4
4
|
Summary: download, manage and play the voices on asmr.one
|
|
5
5
|
Keywords: asmr,downloader,music,player,manager,cli,tui,commandline,terminal
|
|
6
6
|
Author-Email: SLQY <sqiyel@gmail.com>
|
|
@@ -170,7 +170,7 @@ pip install ASMRManager[依赖]
|
|
|
170
170
|
另外本工具提供基于 `trogon` 的可视化命令行界面,在安装`tui`依赖后使用 `asmr tui` 即可打开。
|
|
171
171
|
|
|
172
172
|
## 命令行补全
|
|
173
|
-
|
|
173
|
+
仅支持 Bash/Fish/Zsh,详情可参考[官方文档](https://click.palletsprojects.com/en/8.1.x/shell-completion)。
|
|
174
174
|
```shell
|
|
175
175
|
# fish
|
|
176
176
|
_ASMR_COMPLETE=fish_source asmr > ~/.config/fish/completions/asmr.fish
|
|
@@ -213,7 +213,7 @@ asmr dl get 300015443 # 本项目存储VJ与BJ所使用的ID("3" + 8位VJ号
|
|
|
213
213
|
检查下载目录下文件是否下载完全(只验证文件存在,不保证文件完整性)
|
|
214
214
|
```shell
|
|
215
215
|
asmr file check
|
|
216
|
-
asmr file check --list | xargs asmr dl get --force # 重新下载所有不完整的文件,以
|
|
216
|
+
asmr file check --list | xargs asmr dl get --force # 重新下载所有不完整的文件,以bash shell为例
|
|
217
217
|
```
|
|
218
218
|
|
|
219
219
|
将下载的文件转移到存储目录(STORAGE_PATH),并执行相应文件格式转换(详情见config.toml的before_store字段)
|
|
@@ -239,6 +239,13 @@ asmr query 治愈 --limit 3 --raw | jq .[].id | xargs -n1 asmr info # 输出为j
|
|
|
239
239
|
1. 获取下载文件后:检查文件的名称和路径,如果不符合filename_filters里指定的规则,则跳过下载。可以通过`--ignore-name`来强制下载。
|
|
240
240
|
1. 添加下载任务时:如果检测到本地有同名文件,则跳过该文件的下载。可以通过`--replace`来强制覆盖存在的文件。
|
|
241
241
|
|
|
242
|
+
## 多线程下载相关
|
|
243
|
+
由于网站对下载并无相关限制,因此没必要设置过高的线程数,一般来说单文件1~2即可。
|
|
244
|
+
对于 `IDM` 设置方法如下:
|
|
245
|
+

|
|
246
|
+
|
|
247
|
+
对于 `aria2` 修改配置 `max-connection-per-server = 2` 即可:
|
|
248
|
+
|
|
242
249
|
## 其他
|
|
243
250
|
|
|
244
251
|
感谢 <https://asmr.one>丰富了我的夜生活。
|
|
@@ -128,7 +128,7 @@ pip install ASMRManager[依赖]
|
|
|
128
128
|
另外本工具提供基于 `trogon` 的可视化命令行界面,在安装`tui`依赖后使用 `asmr tui` 即可打开。
|
|
129
129
|
|
|
130
130
|
## 命令行补全
|
|
131
|
-
|
|
131
|
+
仅支持 Bash/Fish/Zsh,详情可参考[官方文档](https://click.palletsprojects.com/en/8.1.x/shell-completion)。
|
|
132
132
|
```shell
|
|
133
133
|
# fish
|
|
134
134
|
_ASMR_COMPLETE=fish_source asmr > ~/.config/fish/completions/asmr.fish
|
|
@@ -171,7 +171,7 @@ asmr dl get 300015443 # 本项目存储VJ与BJ所使用的ID("3" + 8位VJ号
|
|
|
171
171
|
检查下载目录下文件是否下载完全(只验证文件存在,不保证文件完整性)
|
|
172
172
|
```shell
|
|
173
173
|
asmr file check
|
|
174
|
-
asmr file check --list | xargs asmr dl get --force # 重新下载所有不完整的文件,以
|
|
174
|
+
asmr file check --list | xargs asmr dl get --force # 重新下载所有不完整的文件,以bash shell为例
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
将下载的文件转移到存储目录(STORAGE_PATH),并执行相应文件格式转换(详情见config.toml的before_store字段)
|
|
@@ -197,6 +197,13 @@ asmr query 治愈 --limit 3 --raw | jq .[].id | xargs -n1 asmr info # 输出为j
|
|
|
197
197
|
1. 获取下载文件后:检查文件的名称和路径,如果不符合filename_filters里指定的规则,则跳过下载。可以通过`--ignore-name`来强制下载。
|
|
198
198
|
1. 添加下载任务时:如果检测到本地有同名文件,则跳过该文件的下载。可以通过`--replace`来强制覆盖存在的文件。
|
|
199
199
|
|
|
200
|
+
## 多线程下载相关
|
|
201
|
+
由于网站对下载并无相关限制,因此没必要设置过高的线程数,一般来说单文件1~2即可。
|
|
202
|
+
对于 `IDM` 设置方法如下:
|
|
203
|
+

|
|
204
|
+
|
|
205
|
+
对于 `aria2` 修改配置 `max-connection-per-server = 2` 即可:
|
|
206
|
+
|
|
200
207
|
## 其他
|
|
201
208
|
|
|
202
209
|
感谢 <https://asmr.one>丰富了我的夜生活。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.3.2"
|
|
@@ -155,7 +155,7 @@ def browse_param_options(f):
|
|
|
155
155
|
)
|
|
156
156
|
wrapper_common_options.__doc__ += """
|
|
157
157
|
|
|
158
|
-
nsfw will only show the full age ASMRs
|
|
158
|
+
--order=nsfw will only show the full age ASMRs
|
|
159
159
|
|
|
160
160
|
for other --order values, you can refer to the website for
|
|
161
161
|
explicit meaning
|
|
@@ -9,6 +9,7 @@ from asmrmanager.logger import logger
|
|
|
9
9
|
@click.pass_context
|
|
10
10
|
@rj_argument("local")
|
|
11
11
|
def play(ctx: click.Context, source_id: LocalSourceID):
|
|
12
|
+
"""play asmr with a simple TUI"""
|
|
12
13
|
from asmrmanager.filemanager.utils import folder_chooser
|
|
13
14
|
|
|
14
15
|
"""play an asmr in the terminal"""
|
|
@@ -63,13 +63,22 @@ def convert(
|
|
|
63
63
|
or vtt_path.with_suffix("").with_suffix(".lrc").exists()
|
|
64
64
|
)
|
|
65
65
|
vtt_path.unlink()
|
|
66
|
-
elif mode
|
|
66
|
+
elif mode == "flac":
|
|
67
67
|
from asmrmanager.common.fileconverter import convert_audio_format
|
|
68
68
|
|
|
69
69
|
for wav_path in path.rglob("*.wav"):
|
|
70
70
|
convert_audio_format(wav_path, mode)
|
|
71
71
|
assert wav_path.with_suffix(f".{mode}").exists()
|
|
72
72
|
wav_path.unlink()
|
|
73
|
+
elif mode == "mp3":
|
|
74
|
+
from asmrmanager.common.fileconverter import convert_audio_format
|
|
75
|
+
|
|
76
|
+
for src_path in path.rglob("*.*"):
|
|
77
|
+
if src_path.is_dir() or src_path.suffix not in [".flac", ".wav"]:
|
|
78
|
+
continue
|
|
79
|
+
convert_audio_format(src_path, mode)
|
|
80
|
+
assert src_path.with_suffix(f".{mode}").exists()
|
|
81
|
+
src_path.unlink()
|
|
73
82
|
|
|
74
83
|
|
|
75
84
|
utils.add_command(migrate)
|
|
@@ -8,13 +8,15 @@ from typing import (
|
|
|
8
8
|
Literal,
|
|
9
9
|
NamedTuple,
|
|
10
10
|
Set,
|
|
11
|
-
Tuple,
|
|
12
|
-
overload,
|
|
13
11
|
)
|
|
14
12
|
|
|
15
13
|
import toml
|
|
16
14
|
|
|
17
|
-
from asmrmanager.common.rj_parse import
|
|
15
|
+
from asmrmanager.common.rj_parse import (
|
|
16
|
+
id2source_name,
|
|
17
|
+
source_name2id,
|
|
18
|
+
source2id,
|
|
19
|
+
)
|
|
18
20
|
from asmrmanager.common.types import (
|
|
19
21
|
LocalSourceID,
|
|
20
22
|
PlayListItem,
|
|
@@ -210,10 +212,12 @@ class FileManager:
|
|
|
210
212
|
self, replace=True, hook: Callable[[Path], None] | None = None
|
|
211
213
|
):
|
|
212
214
|
for file in os.listdir(self.download_path):
|
|
213
|
-
|
|
214
|
-
|
|
215
|
+
if not (self.download_path / file).is_dir():
|
|
216
|
+
continue
|
|
217
|
+
if source2id(file) is None:
|
|
215
218
|
logger.warning(f"Ignore invalid file {file} in download path")
|
|
216
219
|
continue
|
|
220
|
+
source_id = source_name2id(SourceName(file))
|
|
217
221
|
self.store(source_id, replace=replace, hook=hook)
|
|
218
222
|
|
|
219
223
|
def could_view(self):
|
|
@@ -279,11 +283,11 @@ class FileManager:
|
|
|
279
283
|
logger.error("Invalid path")
|
|
280
284
|
return []
|
|
281
285
|
|
|
282
|
-
for
|
|
283
|
-
rj_id =
|
|
286
|
+
for item in p.iterdir():
|
|
287
|
+
rj_id = source2id(item.name)
|
|
284
288
|
if rj_id is None:
|
|
285
289
|
continue
|
|
286
|
-
yield rj_id
|
|
290
|
+
yield LocalSourceID(rj_id)
|
|
287
291
|
|
|
288
292
|
def zip_file(self, src: Path, dst: Path):
|
|
289
293
|
from asmrmanager.filemanager.file_zipper import zip_chosen_folder
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.3.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/config.example.toml
RENAMED
|
File without changes
|
|
File without changes
|
{asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/score.sql
RENAMED
|
File without changes
|
{asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/search.sql
RENAMED
|
File without changes
|
{asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/tags.sql
RENAMED
|
File without changes
|
{asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/test.sql
RENAMED
|
File without changes
|
{asmrmanager-2.3.1 → asmrmanager-2.3.2}/asmrmanager/filemanager/resources/sqls.example/vas.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|