blob: e6a5fe1fa59d7693a25bf34a3447b2faf1adadfc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
#!/bin/bash
# set -e
### REQUIREMENTS
# gallery-dl
# yt-dlp
# mloader (pip or AUR)
file_browser="thunar"
LINK="$1"
DIRFLAG="$2"
# 0 = do nothing, 1 = store location in dirlist, 2 = open dirlist, 3 = 2+1
TYPE=""
# everything below this comment is horrible
[[ "$LINK" == "2" ]] && DIRFLAG=2 && LINK="show_files"
[[ ! "$DIRFLAG" =~ ^[0-3]$ ]] && DIRFLAG=3
[[ -z "$LINK" || -z "$DIRFLAG" ]] && echo "ERROR: NOT ENOUGH ARGUMENTS" && exit 1
declare -A TYPES=( ["weebcentral\.com"]="manga" ["mangadex\.org"]="manga" ["youtube\.com\/@.*\/videos"]="yt_playlist" ["youtube\.com\/playlist\?list"]="yt_playlist" ["youtube\.com"]="yt_clip" ["pixiv\.net"]="art" ["skeb\.jp"]="art" ["(danbooru\.)?donmai\.us"]="art" ["deviantart\.com"]="art" ["kemono\.su"]="art" ["twitter\.com"]="art" ["x\.com"]="art" ["bsky\.app"]="art" ["baraag\.net"]="art" ["nhentai\.net"]="ecchi" ["e.hentai\.org"]="ecchi" )
declare -A LOCATIONS=( ["show_files"]="show_files" ["manga"]="$HOME/Downloads/Read or Die" ["art"]="$HOME/Tempsktop/gallery-dl" ["yt_clip"]="$HOME/Downloads/yt-dlp" ["yt_playlist"]="$HOME/Downloads/yt-dlp" ["ecchi"]="$HOME/Tempsktop/gallery-dl")
if [[ "$LINK" == "show_files" ]]; then
TYPE="$LINK"
else
longest_match=""
for expr in "${!TYPES[@]}"; do
[[ $LINK =~ ^http(s)?\:\/\/(www\.)?${expr}.*$ && ${#expr} -gt ${#longest_match} ]] && longest_match="$expr" && TYPE="${TYPES[$longest_match]}"
done
fi
[[ -z "$TYPE" ]] && echo "ERROR: LINK NOT PROPERLY PARSED" && exit 1
LOCATION="${LOCATIONS[$TYPE]}"
echo "LINK : $LINK, TYPE: $TYPE, LOCATION: $LOCATION"
case "$TYPE" in
"manga")
MANGA="$( gallery-dl `curl -Ls -o /dev/null -w %{url_effective} $LINK` --destination "$LOCATION" --ugoira-conv 2>&1 )"
# echo $?
# echo $MANGA
if [[ $? -ne 0 ]]; then
MANGA_URL="$( echo $MANGA | grep -o -E "https://mangaplus\.shueisha\.co\.jp/viewer/[0-9]+" )"
echo $MANGA_URL
[[ -n "$MANGA_URL" ]] && mloader --out "$LOCATION/mangaplus" --raw --chapter-title --chapter-subdir `curl -Ls -o /dev/null -w %{url_effective} $MANGA_URL`
fi
;;
"art")
# gallery-dl `curl -Ls -o /dev/null -w %{url_effective} $LINK` --directory "$LOCATION" --ugoira-conv
gallery-dl `curl -Ls -o /dev/null -w %{url_effective} $LINK` --directory "$LOCATION" --ugoira-conv -o extractor.twitter.tweet-endpoint=restid -o extractor.twitter.conversations=false
;;
"yt_clip")
yt-dlp `curl -Ls -o /dev/null -w %{url_effective} $LINK` --paths "$LOCATION" --no-playlist
;;
"yt_playlist")
title="$(yt-dlp `curl -Ls -o /dev/null -w %{url_effective} $LINK` --skip-download --flat-playlist --dump-single-json --no-warnings | jq -r .title)"
mkdir -p ${LOCATION}/${title} || { echo "ERROR: FAILED TO CREATE PLAYLIST SUBFOLDER" ; exit -1 ; }
yt-dlp `curl -Ls -o /dev/null -w %{url_effective} $LINK` --paths "${LOCATION}/${title}" -o "%(playlist_index)s. %(title)s.%(ext)s"
;;
"ecchi")
# gallery-dl `curl -Ls -o /dev/null -w %{url_effective} $LINK` --destination "$LOCATION"
gallery-dl `curl -Ls -o /dev/null -w %{url_effective} $LINK` --destination "$LOCATION" -o extractor.twitter.tweet-endpoint=restid -o extractor.twitter.conversations=false
for file in ${LOCATION}/nhentai/*/*webp; do newfile="${file//nhentai_*_0/}" ; newfile="${newfile%%webp}png" ; magick "$file" "$newfile" && rm -f "$file" ; done
for file in ${LOCATION}/exhentai/*/*webp; do newfile="${file//[0-9][0-9][0-9][0-9][0-9][0-9][0-9]_*_*_/}" ; newfile="${newfile%%webp}png" ; magick "$file" "$newfile" && rm -f "$file" ; done
;;
"show_files")
;;
*)
echo -n "ERROR: UNKNOWN TYPE"
exit 1
;;
esac
[[ "$DIRFLAG" -eq 0 ]] && exit
[[ "$DIRFLAG" -eq 1 || "$DIRFLAG" -eq 3 ]] && echo "$LOCATION" >> "/tmp/dirlist.txt"
if [[ "$DIRFLAG" -eq 2 || "$DIRFLAG" -eq 3 ]]; then
dirs=$( cat "/tmp/dirlist.txt" | sort | uniq )
# "$file_browser"
IFS=$'\n'
for dir in $dirs; do
"$file_browser" "$dir"
# wid=( $( xdotool search --desktop $( xdotool get_desktop ) --class "$file_browser" ) )
# lastwid=${wid[*]: -1}
# [[ -n "$lastwid" ]] && xdotool windowactivate --sync "$lastwid" key ctrl+t ctrl+l && xdotool type -delay 0 "$dir" && xdotool key Return || echo "ERROR: UNABLE TO OPEN FILE BROWSER"
done
unset IFS
rm -f "/tmp/dirlist.txt"
fi
|