xsget
Console tools to download online novel and convert to text file.
Installation
Stable version From PyPI using uv:
uv tool install xsget
uv tool install playwright
playwright install
Upgrade to latest stable version:
uv tool upgrade xsget
Latest development version from GitHub:
python3 -m pip install -e git+https://github.com/kianmeng/xsget.git
playwright install
xsget
xsget -h
usage: xsget [-q] [-e] [-d] [-h] [-V] [-l CSS_PATH] [-P URL_PARAM]
[-g [FILENAME] | -c [FILENAME]] [-r] [-t] [-b] [-bs SESSION]
[-bd DELAY] [--tor] [-cc CONCURRENCY] [--retries RETRIES]
[-od OUTPUT_DIR]
[URL]
xsget is a console app that crawl and download online novel.
website: https://github.com/kianmeng/xsget
changelog: https://github.com/kianmeng/xsget/blob/master/CHANGELOG.md
issues: https://github.com/kianmeng/xsget/issues
positional arguments:
URL set url of the index page to crawl
options:
-q, --quiet
suppress all logging
-e, --env
print environment information for bug reporting
-d, --debug
show debugging log and stacktrace
-h, --help
show this help message and exit
-V, --version
show program's version number and exit
-l CSS_PATH, --link-css-path CSS_PATH
set css path of the link to a chapter (default: 'a')
-P URL_PARAM, --url-param-as-filename URL_PARAM
use url param key as filename (default: '')
-g [FILENAME], --generate-config-file [FILENAME]
generate config file from options (default: 'xsget.toml')
-c [FILENAME], --config-file [FILENAME]
load config from file (default: 'xsget.toml')
-r, --refresh
refresh the index page
-t, --test
show extracted urls without crawling
-b, --browser
crawl by actual browser (default: 'False')
-bs SESSION, --browser-session SESSION
set the number of browser session (default: 5)
-bd DELAY, --browser-delay DELAY
set the millisecond to wait for page to load in browser (default: 0)
--tor
routes http requests through Tor SOCKS5 proxy at socks5://127.0.0.1:9150 (default: 'False')
-cc CONCURRENCY, --concurrency CONCURRENCY
set the maximum number of concurrent downloads (default: 5)
--retries RETRIES
set the number of retries for transient download failures (default: 3)
-od OUTPUT_DIR, --output-dir OUTPUT_DIR
set default output folder (default: 'output')
examples:
xsget http://localhost
xsget http://localhost/page[1-100].html
xsget -g -l "a" -p "id" http://localhost
xstxt
xstxt -h
usage: xstxt [-q] [-e] [-d] [-h] [-V] [-pt CSS_PATH] [-pb CSS_PATH]
[-la LANGUAGE] [-ps SEPARATOR] [-rh REGEX REGEX]
[-rt REGEX REGEX] [-bt TITLE] [-ba AUTHOR] [-ic INDENT_CHARS]
[-fw] [-oi] [-ow] [-i GLOB_PATTERN] [-x GLOB_PATTERN]
[-l TOTAL_FILES] [-w WIDTH] [-o FILENAME] [-od OUTPUT_DIR]
[-cc CONCURRENCY] [-y] [-p] [-g [FILENAME] | -c [FILENAME]] [-m]
xstxt is a console app that extract content from HTML to text file.
website: https://github.com/kianmeng/xsget
changelog: https://github.com/kianmeng/xsget/blob/master/CHANGELOG.md
issues: https://github.com/kianmeng/xsget/issues
options:
-q, --quiet
suppress all logging
-e, --env
print environment information for bug reporting
-d, --debug
show debugging log and stacktrace
-h, --help
show this help message and exit
-V, --version
show program's version number and exit
-pt CSS_PATH, --title-css-path CSS_PATH
set css path of chapter title (default: 'title')
-pb CSS_PATH, --body-css-path CSS_PATH
set css path of chapter body (default: 'body')
-la LANGUAGE, --language LANGUAGE
language of the ebook (default: 'zh')
-ps SEPARATOR, --paragraph-separator SEPARATOR
set paragraph separator (default: '\n\n')
-rh REGEX REGEX, --html-replace REGEX REGEX
set regex to replace word or phrase in html file
-rt REGEX REGEX, --txt-replace REGEX REGEX
set regex to replace word or phrase in txt file
-bt TITLE, --book-title TITLE
set title of the novel (default: '不详')
-ba AUTHOR, --book-author AUTHOR
set author of the novel (default: '不详')
-ic INDENT_CHARS, --indent-chars INDENT_CHARS
set indent characters for a paragraph (default: '')
-fw, --fullwidth
convert ASCII character from halfwidth to fullwidth (default: 'False')
-oi, --output-individual-file
convert each html file into own txt file
-ow, --overwrite
overwrite output file
-i GLOB_PATTERN, --input GLOB_PATTERN
set glob pattern of html files to process (default: '['./*.html']')
-x GLOB_PATTERN, --exclude GLOB_PATTERN
set glob pattern of html files to exclude (default: '[]')
-l TOTAL_FILES, --limit TOTAL_FILES
set number of html files to process (default: '3')
-w WIDTH, --width WIDTH
set the line width for wrapping (default: 0, 0 to disable)
-o FILENAME, --output FILENAME
set output txt file name (default: 'book.txt')
-od OUTPUT_DIR, --output-dir OUTPUT_DIR
set output directory (default: 'output')
-cc CONCURRENCY, --concurrency CONCURRENCY
set the maximum number of concurrent file processing (default: 5)
-y, --yes
yes to prompt
-p, --purge
remove extracted files specified by --output-dir option (default: 'False')
-g [FILENAME], --generate-config-file [FILENAME]
generate config file from options (default: 'xstxt.toml')
-c [FILENAME], --config-file [FILENAME]
load config from file (default: 'xstxt.toml')
-m, --monitor
monitor config file changes and re-run when needed
examples:
xsget -g
xstxt --input *.html
xstxt --output-individual-file --input *.html
xstxt --config --monitor
Copyright and License
Copyright (C) 2021,2022,2023,2024,2025,2026 Kian-Meng Ang
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Metadata
Release files for xsget 0.1.113
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| xsget-0.1.113.tar.gz | 63.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xsget-0.1.113-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 109.2 kB
Release files / xsget-0.1.113.tar.gz
| Download URL | xsget-0.1.113.tar.gz |
|---|---|
| Size | 63.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cd85a696ab6c8f4e12d6e1e0505f9321496718efff356c6d8c58b6cabe524fa2
|
|
BLAKE2b-256 checksum How to use checksums |
115c05c185a2408a84e6cdaf410972c12e06b1dbc70ad1194e3e892fb13a6072
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.10","id":"stonking","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / xsget-0.1.113-py3-none-any.whl
| Download URL | xsget-0.1.113-py3-none-any.whl |
|---|---|
| Size | 45.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
45e76e8942fe4df8236663d0622cb3e68b9f3e1c45527896c1760b5a5b5439db
|
|
BLAKE2b-256 checksum How to use checksums |
ebc746c8281c26d5159648230e823b6e10ad92996e5f065baead338024218399
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.10","id":"stonking","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for xsget 0.1.113
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.