61 lines
1.9 KiB
Markdown
61 lines
1.9 KiB
Markdown
|
|
Playwright fetch helper
|
||
|
|
|
||
|
|
This helper uses Playwright to drive a browser to click the download button on a Vimm detail page and save the resulting file to disk.
|
||
|
|
|
||
|
|
Usage examples
|
||
|
|
|
||
|
|
Programmatic usage
|
||
|
|
|
||
|
|
- Basic example (Python):
|
||
|
|
|
||
|
|
```py
|
||
|
|
from tool.playwright import PlaywrightTool
|
||
|
|
|
||
|
|
tool = PlaywrightTool({})
|
||
|
|
result = tool.download_file("https://vimm.net/vault/48075", selector="form#dl_form button[type=submit]", out_dir=None, timeout_sec=60)
|
||
|
|
if result.ok:
|
||
|
|
print(result.path)
|
||
|
|
else:
|
||
|
|
print("Download failed:", result.error)
|
||
|
|
```
|
||
|
|
|
||
|
|
- Shell one-liners (PowerShell / Unix compatible):
|
||
|
|
|
||
|
|
- PowerShell:
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
python - <<'PY'
|
||
|
|
from tool.playwright import PlaywrightTool
|
||
|
|
r = PlaywrightTool().download_file("https://vimm.net/vault/48075")
|
||
|
|
print(r.to_dict())
|
||
|
|
PY
|
||
|
|
```
|
||
|
|
|
||
|
|
- Unix shell:
|
||
|
|
|
||
|
|
```sh
|
||
|
|
python -c "from tool.playwright import PlaywrightTool; import json; r=PlaywrightTool().download_file('https://vimm.net/vault/48075'); print(json.dumps(r.to_dict()))"
|
||
|
|
```
|
||
|
|
|
||
|
|
- Download to a specific directory:
|
||
|
|
|
||
|
|
```py
|
||
|
|
tool.download_file("https://vimm.net/vault/48075", out_dir="C:\\tmp")
|
||
|
|
```
|
||
|
|
|
||
|
|
- Pipe the result into `add-file`:
|
||
|
|
|
||
|
|
Use one of the shell one-liners above and extract the `path` field from the returned JSON to pass to `CLI.py add-file`. For example, in Unix:
|
||
|
|
|
||
|
|
```sh
|
||
|
|
python -c "from tool.playwright import PlaywrightTool, json; r=PlaywrightTool().download_file('https://vimm.net/vault/48075'); print(r.to_dict())" | jq -r .path | xargs -I{} python CLI.py add-file -store default -path "{}"
|
||
|
|
```
|
||
|
|
|
||
|
|
Notes
|
||
|
|
|
||
|
|
- The script prints a single JSON line to stdout on completion. On success, `ok` is true and `path` contains the saved file path.
|
||
|
|
- Provider `Provider.vimm` will use Playwright when HTTP GET fails (4xx/5xx) or on network errors. Playwright is a required runtime dependency for these flows.
|
||
|
|
|
||
|
|
|
||
|
|
- Playwright must be available in the current Python environment; install with `pip install playwright && playwright install`.
|