-
Notifications
You must be signed in to change notification settings - Fork 0
/
extract.sh
executable file
·167 lines (139 loc) · 6.38 KB
/
extract.sh
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#!/bin/bash
# | Popis!
# | Tento skript se připojuje k serveru reMarkable přes SSH.
#
# * Vyhledává nejnovější soubory a složky na základě zadaných kritérií.
# * Stahuje je do domovského adresáře reMarkable.
# | Použití!
# | Skript lze spustit bez parametrů.
# * Pokud je zadané ID souboru v reMarkable, bude hledat složku začínající tímto ID a stáhne nejnovější soubor.
# * Jinak hledá nejnovější soubor ve složkách bez tečky v názvu.
# * echo je ve scriptu rozdělené na několik částí (info, error, variables).
# ** info - slouží jako informace
# ** error - chyba ve scriptu (script se ukončí)
# ** variables - pro použití v apple zkratkách (jako proměnné)
# | Konfigurace!
# | Najdete v reMarkable.
# * reMarkable_File_ID: ID souboru (nepovinné).
# * reMarkable_Path: Cesta k adresáři souborů.
# ************************************************************************************************
# ___ _ _ _ __ __ _ _ _
# / __| ___| |_| |_(_)_ _ __ _ ___ ___ _ _ ___| \/ |__ _ _ _| |____ _| |__| |___
# \__ \/ -_) _| _| | ' \/ _` (_-< |___| | '_/ -_) |\/| / _` | '_| / / _` | '_ \ / -_)
# |___/\___|\__|\__|_|_||_\__, /__/ |_| \___|_| |_\__,_|_| |_\_\__,_|_.__/_\___|
# |___/
# ID souboru, například eaf3f838 (nepovinný)
reMarkable_File_ID="${1:-}"
# Cesta k souborům
reMarkable_Path="/home/root/.local/share/remarkable/xochitl/"
WGET="wget"
# ___ _ _
# | __| _ _ _ __| |_(_)___ _ _
# | _| || | ' \/ _| _| / _ \ ' \
# |_| \_,_|_||_\__|\__|_\___/_||_|
#
# Pro stahování souborů v reMarkable.
# reMarkable má staré wget, které nepodporuje STL, toto chybu opraví.
upgrade_WGET () {
wget_path=/home/root/.local/share/@Wajsar_Josef/wget
wget_remote=http://toltec-dev.org/thirdparty/bin/wget-v1.21.1-1
wget_checksum=c258140f059d16d24503c62c1fdf747ca843fe4ba8fcd464a6e6bda8c3bbb6b5
# Tato část skriptu kontroluje, zda je soubor wget na specifikované cestě ($wget_path) a zda má správný kontrolní součet.
# Pokud kontrolní součet nesouhlasí, soubor se smaže.
if [ -f "$wget_path" ] && ! sha256sum -c <(echo "$wget_checksum $wget_path") > /dev/null 2>&1; then
rm "$wget_path"
fi
# Tato část skriptu kontroluje, zda je soubor wget na specifikované cestě ($wget_path).
# Pokud ne, soubor se stáhne.
if ! [ -f "$wget_path" ]; then
echo "Info: Načítání zabezpečeného wget"
# Stáhněte si a porovnejte s hash
mkdir -p "$(dirname "$wget_path")"
if ! wget -cq "$wget_remote" --output-document "$wget_path"; then
echo "Error: Nelze načíst wget, ujistěte se, že máte stabilní připojení Wi-Fi"
exit 1
fi
fi
# Tento úsek skriptu kontroluje integritu staženého souboru wget pomocí jeho SHA-256 kontrolního součtu.
if ! sha256sum -c <(echo "$wget_checksum $wget_path") > /dev/null 2>&1; then
echo "Error: Neplatný kontrolní součet pro místní binární soubor wget"
exit 1
fi
chmod 755 "$wget_path"
WGET="$wget_path"
}
# Funkce pro nalezení nejnovějšího souboru
find_Latest_File() {
local search_path="$1"
local search_pattern="$2"
find "$search_path" -type f -name "$search_pattern" -print | while read -r file; do
echo "$(stat -c '%Y' "$file") $file"
done | sort -n | tail -1 | awk '{print $2}'
}
# Funkce pro nalezení nejnovější složky bez tečky na konci
find_Latest_Directory() {
local search_path="$1"
local search_pattern="$2"
find "$search_path" -maxdepth 1 -type d -name "$search_pattern" ! -name '*.*' ! -name 'xochitl' -print | while read -r dir; do
echo "$(stat -c '%Y' "$dir") $dir"
done | sort -n | tail -1 | awk '{print $2}'
}
# Funkce pro zpracování nalezeného souboru
process_Latest_File() {
local latest_file="$1"
local latest_directory="$2"
if [ -n "$latest_file" ]; then
# Získání názvu souboru bez cesty
file_name=$(basename "$latest_file")
# Získání názvu souboru bez koncovky
file_name_no_ext="${file_name%.*}"
echo "Info: Nejnověji upravený soubor: $file_name"
echo "Info: Nejnověji upravený soubor bez koncovky: $file_name_no_ext"
# Volání funkce pro stažení souboru (s parametry)
download_File "$latest_file" "$file_name_no_ext"
else
echo "Error: Ve složce '$latest_directory' nejsou žádné soubory."
exit 1
fi
}
# Funkce pro stažení souboru
download_File() {
upgrade_WGET
local file_path="$1"
local file_name="$2"
# Vrátí název souboru jako výstup pro další použití v Apple Shortcuts
echo "Variables: $file_name_no_ext"
# Kopírování souboru do aktuální složky
cp "$file_path" .
}
# __ __ _ __ _ _ _
# | \/ |__ _(_)_ _ / _|_ _ _ _ | |____| |_(_)___ _ _
# | |\/| / _` | | ' \ | _| || | ' \| / / _| _| / _ \ ' \
# |_| |_\__,_|_|_||_| |_| \_,_|_||_|_\_\__|\__|_\___/_||_|
#
# Hlavní část skriptu
if [ -z "$reMarkable_File_ID" ]; then
# Pokud je reMarkable_File_ID prázdný, najdi nejnovější složku bez tečky v názvu
latest_directory=$(find_Latest_Directory "$reMarkable_Path" "*")
if [ -n "$latest_directory" ] && [ "$latest_directory" != "$reMarkable_Path" ]; then
# Nalezení nejnovějšího souboru v nalezené složce
latest_file=$(find_Latest_File "$latest_directory" "*")
# Volání funkce pro zpracování nalezeného souboru
process_Latest_File "$latest_file" "$latest_directory"
else
echo "Error: Složka nebyla nalezena."
exit 1
fi
else
# Pokud je reMarkable_File_ID neprázdný, vyhledej složku podle prefixu
latest_directory=$(find_Latest_Directory "$reMarkable_Path" "${reMarkable_File_ID}*")
if [ -n "$latest_directory" ]; then
# Nalezení nejnovějšího souboru v nalezené složce
latest_file=$(find_Latest_File "$latest_directory" "*")
# Volání funkce pro zpracování nalezeného souboru
process_Latest_File "$latest_file" "$latest_directory"
else
echo "Error: Složka podle prefixu '$reMarkable_File_ID' nebyla nalezena."
exit 1
fi
fi