FUSE driver for your weeb needs.
This is a basic implementation of FUSE driver utilising MangaDex undocumented API. Manga information, chapters and individual pages are cached in memory so repeated requests don't accidently DDOS the server.
mangadex-fs
consists of 2 binaries, the client part mangadex-fsc
and the daemon part mangadex-fsd
.
cargo install mangadex-fs
(or clone this repo),mangadex-fsc --help
/ mangadex-fsd --help
(or cargo run --release --bin mangadex-fsc -- --help
) on how to use,Short example:
console
urmom@gay ~> mkdir ~/Manga
urmom@gay ~> mangadex-fsd ~/Manga
console
urmom@gay ~> mangadex-fsc login -u <username> -p <password>
OK
urmom@gay ~> mangadex-fsc search --author "Dowman Sayman" --include anthology supernatural
4261 Nickelodeon │ Dowman Sayman │ Not followed │ 2 mo ago
20563 Melancholia │ Dowman Sayman │ Not followed │ 2 mo ago
OK
urmom@gay ~> mangadex-fsc manga add 20563
Manga Melancholia has been added.
OK
modprobe fuse
.Since fetching only the chapter page image size no longer works (curl -I image_url
returns 405
), every time your system issues a readdir
call (basically ls
) on a chapter directory, every image gets fetched in its entirety. You can imagine it can take some time. Also MangaDex servers get buried in requests.
So if you're calling tree
on the mountpoint directory, you are basically asking for an IP ban.
The readdir
can also happen if you're using some fancy command line shells (fish
for example), even if you are not in the chapter directory, so be wary of this.
RUST_LOG
environment variable. More here.socket error: Address already in use (os error 98)
, it means the socket file is still present in the runtime directory, you can remove it with rm $XDG_RUNTIME_DIR/mangadex-fs/mangadex-fsd.sock
.$XDG_CONFIG_HOME/mangadex-fs/config.toml
. It can be only provided with the socket file path and mountpoint for now, so it's mostly useless:
toml
mountpoint = "/home/urmom/Manga/"
socket = "/run/user/1000/mangadex-fs/mangadex-fsd.sock"
sh
cd <mountpoint>/<manga>/<chapter>
feh --image-bg "black" -Z -. -d -S filename --version-sort
creates a good reader. Obviously you need to have feh
.
Your code is a dumpster fire
I bet! This is my first time using Rust for something more complicated than Hello world. If you have any guidelines or want to contribute go ahead, any help would be appreciated. With all these mutexes flying around I have no idea what I'm doing.