-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnds-rename.sh
executable file
·109 lines (107 loc) · 2.64 KB
/
nds-rename.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
#!/usr/bin/env bash
function conv_date
{
local DATE="$1" day month year
echo "$DATE"|tr -d '.'|while read -r day month year; do
case $month in
Jan*)
month="Jan"
;;
Feb*)
month="Feb"
;;
Mär*|Mar*)
month="Mar"
;;
Apr*)
month="Apr"
;;
Ma[iy]*)
month="May"
;;
Jun[ie])
month="Jun"
;;
Jul[iy])
month="Jul"
;;
Aug*)
month="Aug"
;;
Sep*)
month="Sep"
;;
O[ck]t*)
month="Oct"
;;
Nov*)
month="Nov"
;;
De[cz]*)
month="Dec"
;;
esac
DATE=$(date --date="$day $month $year" +%Y-%m-%d)
(($? == 0)) || return 1
echo "$DATE"
done
return 0
}
for i in *.pdf; do
if rga --quiet 'NachDenkSeiten' "$i" > /dev/null 2>&1; then
SNIPPET=$(rga --color never -UIH 'NachDenkSeiten - ([^\|]+)\|\s+?Veröffentlicht am:\s+?([^\|]+)\|' -r '$1|$2' \
"$i"| \
grep ':Page 1:'| \
cut -d : -f 3-| \
tr -d '\n'| \
awk '{$1=$1;print}'| \
sed -e 's|:|:|g; s|\?|?|g; s|/|⧸|g'| \
rg '^([^|]+)\|\s*?(\d+\.\s+?\w+\s+?\d+)\s+?1' -r '$1:$2'| \
awk -F : '{$1=$1;$2=$2;printf "TITLE=\"%s\"; DATE=\"%s\";", $1, $2}'| \
sed -e 's|[ \t]*";|";|g;s|="[ \t]*|="|g' \
)
if [[ -z "$SNIPPET" ]]; then
SNIPPET=$(rga --color never -UIH '(?:NachDenkSeiten - )?([^\|]+)\|\s+?Veröffentlicht am:\s+?([^\|]+)\|' -r '$1|$2' "$i"| \
grep ':Page 1:'| \
cut -d : -f 3-| \
tr -d '\n'| \
awk '{$1=$1;print}'| \
sed -e 's|:|:|g; s|\?|?|g; s|/|⧸|g'| \
rg -o '^([^|]+)\|\s*?(\d+\.\s+?\w+\s+?\d+)\s+?1' -r '$1:$2'| \
awk -F : '{$1=$1;$2=$2;printf "TITLE=\"%s\"; DATE=\"%s\";", $1, $2}'| \
sed -e 's|[ \t]*";|";|g;s|="[ \t]*|="|g' \
)
fi
if [[ -z "$SNIPPET" ]]; then
SNIPPET=$(rga -A 4 -UIH 'NachDenkSeiten\s+?-\s+?(\w+[^\|]+)\|.+?Veröffentlicht' -o "$i"| \
rg -B 4 -- '[\-:]Page 1:\s*?$'| \
sed -e 's|-Page 1:|:|g'| \
cut -d : -f 2-| \
tr -d '\n'| \
awk '{$1=$1;print}'| \
rg 'NachDenkSeiten\s+?-\s+?([^\|]+)\|.+?Veröffentlicht\s+?am:\s+?([^\|]+)\|' -r '$1|$2'| \
sed -e 's|:|:|g; s|\?|?|g; s|/|⧸|g'| \
rg -o '^([^|]+)\|\s*?(\d+\.\s+?\w+\s+?\d+)\s+?1' -r '$1:$2'| \
awk -F : '{$1=$1;$2=$2;printf "TITLE=\"%s\"; DATE=\"%s\";", $1, $2}'| \
sed -e 's|[ \t]*";|";|g;s|="[ \t]*|="|g' \
)
fi
if [[ -n "$SNIPPET" ]]; then
echo "$i"
eval "$SNIPPET"
if [[ -n "$TITLE" && -n "$DATE" ]]; then
DATE=$(conv_date "$DATE")
if [[ $? -ne 0 ]]; then
echo "WARNING: skipping $i"
continue
fi
NEWNAME="$DATE $TITLE.${i##*.}"
if [[ "$NEWNAME" != "$i" ]]; then
( set -x; mv "$i" "$NEWNAME" )
fi
fi
else
echo "INFO: kein Titel?: $i"
fi
fi
done