52 Commits
v1.0 ... master

Author SHA1 Message Date
1650372857 update debian version info 2022-09-14 03:34:54 +02:00
be219b7522 Update 'README.md' 2022-09-14 01:23:37 +00:00
e2bc45d4c6 Changelog for v2.1 2022-09-14 02:59:34 +02:00
6701d0b642 Format Markdown 2022-09-14 02:59:14 +02:00
5a3718d2bb Migrate from egrep to grep (#31)
fix "egrep: warning: egrep is obsolescent; using grep -E"

Reviewed-on: #31
2022-09-14 00:54:26 +00:00
d39ba38574 Add rmTrailingZero func (#30)
before:
```
search_pattern: more Staffel canditates: 1 01
search_pattern: more Episode canditates: 3 03
select_patern: USER Input needed
```
after: no input needed

Reviewed-on: #30
2022-09-14 00:52:29 +00:00
1fe2898fe3 Merge branch 'add-changelog' of markus/shorter into master 2019-09-20 09:56:00 +00:00
dc63e8d6b7 Changelog start with big char 2019-09-20 11:55:40 +02:00
ccb4b5d39b add Changelog 2019-09-20 11:53:39 +02:00
d4b932266b update shield also 2019-09-20 01:57:11 +02:00
bca0d76a9c add shields to README 2019-09-20 01:44:21 +02:00
a98e92ab51 Merge branch 'release_2.0' of markus/shorter into master 2019-09-19 23:38:35 +00:00
75eab0cc26 set corret version (2.0) 2019-09-20 01:07:02 +02:00
a2ed4f2c3b Merge branch 'found-document' of markus/shorter into master 2019-09-19 22:22:49 +00:00
e09b5e986e found-document 2019-07-08 21:13:54 +02:00
Markus
c72e03e902 add simple -h to hide '*muss nicht umbenannt werden*' 2019-05-29 20:07:32 +02:00
Markus
d62a260b71 add config line 2019-03-12 16:22:08 +01:00
Markus
044608be0d fix error 2019-03-12 16:17:49 +01:00
Markus
4d6c0ec88b add to init saver version 2019-03-12 15:14:21 +01:00
Markus
bff082e078 fix error with - 2019-03-12 14:56:06 +01:00
Markus
ce8f0c5e3a fix read texts 2019-03-11 19:02:23 +01:00
Markus
239413dd5a fix: wenn error in echo_Frotschritt=> rufe echoerr auf und dann wieder echo Fortschrit==> loop 2019-03-11 13:56:08 +01:00
Markus
01d58331d0 fix missing counter in undo+ fix no testing id divisor==0 in echo_Fortschritt 2019-03-10 20:28:59 +01:00
Markus
7d23f80b2a Merge branch 'fortschrittsangabe' into release_2.0
löst issue #14
2019-03-10 20:02:25 +01:00
Markus
6414efac19 ready for merge 2019-03-10 20:02:04 +01:00
Markus
b4e4282623 add Fortschritt-Anzeige 2019-03-10 19:59:26 +01:00
Markus
13da0372ff add clearline before output of echoerr and debug 2019-03-10 18:48:42 +01:00
Markus
3a624f7657 replace every info echo to echoerr 2019-03-10 18:39:30 +01:00
Markus
34b8c740f5 fix error if dir is empty with rm * 2019-03-10 17:56:59 +01:00
Markus
0badeb5752 variable scöner 2019-03-10 17:50:01 +01:00
Markus
e2b881823b bug fiexes: "" -> ${} 2019-03-10 17:32:06 +01:00
Markus
13ae47a82c Merge branch 'mv_overriting_files_to_cache' into release_2.0 2019-03-10 16:41:45 +01:00
Markus
c1adc5c95c füge die function tocache in rename manager hinzu
+ fehlerbehebung in undo wegen dem ändern von ^ zu > + fix wrong path in tochache : missing: */Log/*
2019-03-10 16:41:07 +01:00
Markus
33eed57195 füge function tocache hinzu 2019-03-10 16:23:27 +01:00
Markus
0c525af8fe 2*\n between functions 2019-03-10 14:49:06 +01:00
Markus
dc63c13d6b Merge branch 'add_start_and_end_default' into release_2.0 2019-03-10 14:39:49 +01:00
Markus
db7f7a0f66 ad default option: start_string and End_string 2019-03-10 14:38:43 +01:00
Markus
308e320427 add exit at end 2019-03-10 14:24:31 +01:00
Markus
fc0b6174d0 fix : remove dubug echo 2019-03-10 14:18:46 +01:00
Markus
8fb1538f8f Merge branch 'convert_couter_with_-e' into release_2.0
add -e
fix Normalize_SuE function: use global var no param
fix search_pattern: search int only
2019-03-10 14:11:04 +01:00
Markus
777ebf4514 add -e + fix searching for int only + fix Normalize_SuE which use global var not param 2019-03-10 14:08:03 +01:00
Markus
de24c41e67 Merge branch 'release_2.0' of https://git.altinsystems.de/markus/shorter 2019-03-10 11:42:54 +01:00
6543
8227ff3f66 Merge branch 'bugfix-1.1' into release_2.0 2019-03-09 21:25:16 +01:00
6543
db51a6a46c Merge branch 'bugfix-1.1'
-> set Version
2019-03-09 21:23:51 +01:00
6543
8a9d0eafde set Version 1.1 2019-03-09 21:23:35 +01:00
6543
e562ead9ca Merge branch 'bugfix-1.1' 2019-03-09 21:22:39 +01:00
6543
a77ab44a4f bugfix 1.1 2019-03-09 21:22:17 +01:00
6543
0c08359082 Merge branch 'narmalisiere-array' into release_2.0 2019-03-09 21:19:11 +01:00
6543
f8a85ab1a6 ready 2019-03-09 21:18:31 +01:00
6543
325918d7da resolv #21 2019-03-09 21:13:31 +01:00
Markus
a71b3bed94 Merge tag 'release_1.0'
set version ...
2019-03-09 20:48:06 +01:00
Markus
ad2c0ba9fc update version 2019-03-09 20:39:29 +01:00
6 changed files with 298 additions and 96 deletions

34
Changelog.md Normal file
View File

@@ -0,0 +1,34 @@
# Changelog
## v2.1
* Migrate from egrep to grep (#31)
* Add rmTrailingZero func (#30)
## v2.0
* Progress indicator (#14)
* Undo with Overides (#15)
* Array fix (#21)
* Convert counter to season function (#22)
* Additional string operators (#23)
## v1.1
* Add bugfix
## v1.0
* Default configuration changeable for each user (#1)
* Undo function (#3)
* Advanced pattern recognition (#5)
* Counter and serial case detection
* Help menu (#8)
* Version info (#20)
* Init user config if not there (#13)
## before
* Handle different formats (#4)
* Basic functions Functioning
* Replaces the old shorter

View File

@@ -1,6 +1,6 @@
Package: shorter
Source: shorter
Version: 0.4
Version: 2.1
Architecture: all
Maintainer: markus <markus@obermui.de>, 6543 <6543@obermui.de>
Installed-Size: <SIZE>

View File

@@ -1,3 +1,9 @@
# shorter
Bennent Serien in einheitliches Format um
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Release](https://img.shields.io/badge/Release-2.1-brightgreen)](https://code.obermui.de/markus/shorter/releases)
rename series to unified format
how to install:
- archlinux [aur](https://aur.archlinux.org/packages/shorter)

BIN
doc/found.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -21,3 +21,7 @@ date="$2"
[ -f "DEBIAN/control" ] && {
sed -i "/Version:\ /c\Version:\ $version_sed" "DEBIAN/control"
}
[ -f README.md ] && {
sed -i "s/\[\!\[Release\].*/\[\!\[Release\]\(https:\/\/img\.shields\.io\/badge\/Release-$version_sed-brightgreen\)\]\(https:\/\/code\.obermui\.de\/markus\/shorter\/releases\)/g" README.md
}

View File

@@ -1,12 +1,11 @@
#!/bin/bash
#@date 2019-03-09
#@version 0.4
#@date 2022-09-14
#@version 2.1
#@author markus@obermui.de, 6543@obermui.de
arg1="$1"
[ "$arg1" == "--help" ] &&
{
[ "$arg1" == "--help" ] && {
#help menue ...
echo 'Aufruf: shorter'
echo ' oder: shorter -u'
@@ -43,7 +42,7 @@ arg1="$1"
exit 0
}
[ "$arg1" == "--version" ] && {
echo "shorter, Version 0.4"
echo "shorter, Version 2.1"
exit 0
}
@@ -56,6 +55,10 @@ mod_silence="false"
ep4se="" # "Anzahl Ep S1","Anzahl Ep S2","Anzahl Ep S3", ...
formats="mp4" # "all, mp4, ..."
DEBUG="false"
JobCounter="0"
AllJobs="0"
Start_String=""
End_String_bevore_Ext=""
#load user default config
[ -f "$HOME/.config/shorter/defaults.conf" ] && source "$HOME/.config/shorter/defaults.conf"
@@ -63,11 +66,11 @@ DEBUG="false"
#Define Global Const
readonly NL=$'\n'
while getopts "d:e:sup:ft:Vv" arg; do
while getopts "d:e:sup:ft:Vvh" arg; do
case $arg in
d)
#ceck if is number
if [ -n "$(echo "$file_name" | egrep ^[[:digit:]]+$)" ]; then
if [ -n "$(echo "$OPTARG" | grep -E ^[[:digit:]]+$)" ]; then
search_depth="$OPTARG"
else
echo "[-d]: Ungültige Suchtiefe: \"$OPTARG\": Ganzzahliger Ausdruck erwartet"
@@ -76,8 +79,7 @@ while getopts "d:e:sup:ft:Vv" arg; do
;;
e)
tmp="${OPTARG//,/}"
echo $tmp
if [ -n "$(echo "$tmp" | egrep ^[[:digit:]]+$)" ]; then
if [ -n "$(echo "$tmp" | grep -E ^[[:digit:]]+$)" ]; then
echo "mit komma getrennte episoden pro staffel: $OPTARG"
ep4se="$OPTARG"
else
@@ -110,20 +112,22 @@ while getopts "d:e:sup:ft:Vv" arg; do
[ -n "$OPTARG" ] && formats="$OPTARG"
;;
V)
echo "shorter, Version 0.4"
echo "shorter, Version 2.1"
exit 0
;;
v)
echo "Verbose Mode: ENABLED"
DEBUG="true"
;;
h)
hide="true"
;;
*)
echo "--help for more information"
;;
esac
done
#select_files [path] [deph] -> pathliste
function select_files() {
local Path="$1"
@@ -140,6 +144,12 @@ function select_files() {
fi
}
#rmTrailingZero [string] -> stdout
# löscht alle forangehenden 0
function rmTrailingZero() {
echo $1 | sed -e 's/^[0]*//'
}
#search_int_nextto_string [full_string_string_string] [search_pattern] -> stdout (each nl)
# finde alle zusammenhängenden zahlen hinter string
function search_int_nextto_string() {
@@ -170,11 +180,11 @@ function search_int_nextto_string() {
for i in $char; do
[[ "$i" = [0-9] ]] && return_int=""$return_int""$i""
[[ "$i" = [0-9] ]] && return_int="$return_int$i"
[[ "$i" = [0-9] ]] || break
done
echo "$return_int" | egrep -v '^\s*$'
rmTrailingZero $(echo "$return_int" | grep -v -E '^\s*$')
done
@@ -190,8 +200,8 @@ function search_pattern() {
local Episode=""
local diff_elem="false" ## used to check arrays if there are different integers in it
local mode="season"
declare -a Array_S
declare -a Array_E
declare -a Array_S=()
declare -a Array_E=()
#handle file extention
file_name="$(echo "$file_name" | rev | cut -d "." -f 2- | rev )"
@@ -224,37 +234,48 @@ function search_pattern() {
}
file_name="${file_name// /_}" #leerzeichen ersetzen
file_name="${file_name//-/_}" #minus ersetzen
file_name="$(echo "$file_name" | tr "[A-Z]" "[a-z]")"
debug "search_pattern: file_name = $file_name"
#analysieren > modus -> 3modis: Staffel&Epis|Count|Other
#sondefall numbers only -> wechsle zu counter
[ -n "$(echo "$file_name" | grep -E ^[[:digit:]]+$)" ] && {
Array_E[0]="$file_name"
debug "Name is only a Number: \"$file_name\" => Counter mode"
}
#default.conf:
debug "Add \"$Start_String\" at the Front of $file_name"
debug "Add \"$End_String_bevore_Ext\" at the End of $file_name"
file_name="$Start_String"$file_name"$End_String_bevore_Ext"
debug "new filename: with end and start var: $file_name"
#check if config files exist
[ -f "$HOME/.config/shorter/pattern-season.conf" ] || { echoerr "search_pattern: Error: pattern-season.conf not exist"; exit 5; }
[ -f "$HOME/.config/shorter/pattern-episode.conf" ] || { echoerr "search_pattern: Error: pattern-episode.conf not exist"; exit 5; }
#für alle staffeln-muster -> ints in array
Array_S=($(cat "$HOME/.config/shorter/pattern-season.conf" | tr "[A-Z]" "[a-z]" | grep -v "^$" | while read line; do
Array_S+=($(cat "$HOME/.config/shorter/pattern-season.conf" | grep -v "#" | tr "[A-Z]" "[a-z]" | grep -v "^$" | while read line; do
debug "search_pattern: season-pattern: $line"
search_int_nextto_string "$file_name" "$line"
done | tr '\n' ' '))
debug "search_pattern: Array_S(${#Array_S[@]}): ${Array_S[@]}"
#sondefall numbers only -> wechsle zu counter
[ -n "$(echo "$file_name" | egrep ^[[:digit:]]+$)" ] && {
Array_E[0]="$file_name"
debug "Name is only a Number => Counter mode"
}
#für alle episoden-muster -> ints in array
Array_E=($(cat "$HOME/.config/shorter/pattern-episode.conf" | tr "[A-Z]" "[a-z]" | grep -v "^$" | while read line; do
Array_E+=($(cat "$HOME/.config/shorter/pattern-episode.conf" | grep -v "#" | tr "[A-Z]" "[a-z]" | grep -v "^$" | while read line; do
debug "search_pattern: season-episode: $line"
search_int_nextto_string "$file_name" "$line"
done | tr '\n' ' '))
debug "search_pattern: Array_E(${#Array_E[@]}): ${Array_E[@]}"
#lösche alle führenden "0" in arrays
Array_E=($(for i in "${Array_E[@]}"; do echo "$i" | sed 's/^[0]*//'; done))
Array_S=($(for i in "${Array_S[@]}"; do echo "$i" | sed 's/^[0]*//'; done))
#wenn keien episode gefunden -> user input
[ "${#Array_E[@]}" -gt 0 ] && {
@@ -324,13 +345,17 @@ function search_pattern() {
}
fi
debug "Countermode: Episode: $Episode"
#return number only if ep4se is not set
echo "$Episode$file_ext" | sed 's/^[0]*//'
return
#else
# calc S??E??
#
if [ -z "$ep4se" ]; then
#return number only if ep4se is not set
echo "$Episode$file_ext" | sed 's/^[0]*//'
debug "search_pattern: No -e"
else
#return output od denumber function
debug "search_pattern: use -e"
decounter "$Episode" "$file_ext"
fi
return
fi
}
@@ -340,13 +365,62 @@ function search_pattern() {
## 2Do Ask USER
echoerr "select_patern: USER Input needed"
echoerr "Current Name: \"$file_name_no_smal\""
echoerr -n "Use only Return to skip it: New Name > "
echo -en "\033[2KUse only Return to skip it: New Name > " >&2
local New_Name=""
read New_Name < /dev/tty
[ -n "$New_Name" ] && echo "$New_Name$file_ext"
}
#Normalize_SuE [season] [episode] (extention) -> S??E??.ext | S??E??
function Normalize_SuE() {
local S="$1"
local E="$2"
local F="$3"
[ -z "$S" ] && {
echoerr "No Season Param!"
return
}
[ -z "$E" ] && {
echoerr "No Episode Param!"
return
}
E="$(echo ${E} | sed 's/^[0]*//')"
S="$(echo ${S} | sed 's/^[0]*//')"
[ "${E}" -le 9 ] && E="0${E}"
[ "${S}" -le 9 ] && S="0${S}"
echo "S${S}E${E}${F}"
}
#destaffler [Folge] [Format]
function decounter() {
local Folge="$1"
local Staffel="1"
local Format="$2"
local Result_found="false"
for i in `echo ${ep4se//,/ }`; do
if [ "$Folge" -gt "$i" ]; then
Folge="$(("$Folge"-"$i"))"
Staffel="$(($Staffel+1))"
else
debug "destaffler: param for Normalize_SuE: (S:) $Staffel (E:) $Folge (Format:) $Format"
Result_found="true"
break
fi
done
if [ "$Result_found" == "true" ]; then
Normalize_SuE "$Staffel" "$Folge" "$Format"
else
echoerr "Invalied Input: -e or Invalied Episode: \"$1\""
fi
}
#rename_manager [Vorher_Path_file] [new name]
function rename_manager() {
@@ -354,24 +428,24 @@ function rename_manager() {
local New_Name="$2"
[ -f "$Vorher_File" ] || {
echo "rename_manager: ERROR: File: \"$Vorher_File\" doesnt exist anymore!"
echoerr "rename_manager: ERROR: File: \"$Vorher_File\" doesnt exist anymore!"
return
}
[ -z "$New_Name" ] && {
echo "rename_manager: ERROR: New Name is Null"
echoerr "rename_manager: ERROR: New Name is Null"
return
}
local New_File_Path=""`echo "$Vorher_File" | rev | cut -d "/" -f 2- | rev`"/$New_Name"
[ -z "$New_File_Path" ] && {
echo "rename_manager: ERROR: GetPath from Oldfile and add NewFileName failed!"
echoerr "rename_manager: ERROR: GetPath from Oldfile and add NewFileName failed!"
return
}
[ "$New_File_Path" == "$Vorher_File" ] && {
echo "rename_manager: INFO: Die Datei \"$New_File_Path\" muss nicht umbenannt werden!"
[ "$hide" == "" ] && echoerr "rename_manager: INFO: Die Datei \"$New_File_Path\" muss nicht umbenannt werden!"
return
}
@@ -379,7 +453,7 @@ function rename_manager() {
#wenn bereits eine Datei vorhanden ist:
[ -e "$New_File_Path" ] && {
echo "Es exestiert bereits das File \"$New_File_Path\""
echoerr "Es exestiert bereits das File \"$New_File_Path\""
#wenn nich überschrieben werden soll
[ "$mod_force" != "true" ] && {
@@ -387,62 +461,88 @@ function rename_manager() {
#wenn (nicht nicht) gefragt werden soll
if [ "$mod_silence" != "true" ]; then
read -p"Soll die Datei überschrieben werden? (y/N)? " yN </dev/tty # </dev/tty wegen dem while read line, weil da schon read ist
echo -ne "\033[2KSoll die Datei überschrieben werden? (y/N)? " >&2
read yN </dev/tty # </dev/tty wegen dem while read line, weil da schon read ist
#wenn yN nicht y ist
[ "$yN" != "y" ] && {
echo "Wird übersprungen!"
echoerr "Wird übersprungen!"
return
}
else
echo "Wird übersprungen!"
echoerr "Wird übersprungen!"
return
fi
}
echo "Datei wird überschrieben!: $New_File_Path"
rm "$New_File_Path"
echoerr "Datei wird überschrieben!: $New_File_Path"
tocache "$New_File_Path"
}
echo "Die Datei \"$Vorher_File\" wird zu \"$New_Name\" umbenannt"
echoerr "Die Datei \"$Vorher_File\" wird zu \"$New_Name\" umbenannt"
echo ""$Vorher_File"^"$New_File_Path"" >> $HOME/.cache/shorter/Log.txt
echo "$Vorher_File>$New_File_Path" >> $HOME/.cache/shorter/Log.txt
mv "$Vorher_File" "$New_File_Path"
}
#tocache [path_to_file]
function tocache() {
local Path_to_File="$1"
local File_Name="$(echo "$Path_to_File" | rev | cut -d "/" -f 1 | rev)"
local New_File_Path="$HOME/.cache/shorter/Log/$File_Name"
[ -e "$Path_to_File" ] || {
echoerr "tocache: File doesn't exist: $Path_to_File!"
return
}
debug "tocache: filename: $File_Name"
while [ -e "${New_File_Path}" ]; do
New_File_Path+="_"
done
debug "tocache: Filepath in .cache: $New_File_Path"
debug "tocache: mv $Path_to_File -> $New_File_Path"
echo "$Path_to_File>$New_File_Path" >> $HOME/.cache/shorter/Log.txt
mv "$Path_to_File" "$New_File_Path"
}
#undo
function undo() {
local File="`tac $HOME/.cache/shorter/Log.txt | sed "/^$/d"`"
[ -z "$File" ] && {
echo "Nichts zu tun!"
echoerr "Nichts zu tun!"
return
}
AllJobs="$(echo -n "$File" | grep -c '^')"
echo "$File" | while read line; do
JobCounter="$(($JobCounter+1))"
#Vorher == Name befor das File umbenannt wurde (1 Teil im Log)
#Jetzt == Name der exestiert (2 Teil im Log)
local Vorher="`echo "$line" | cut -d "^" -f 1`"
local Jetzt="`echo "$line" | cut -d "^" -f 2`"
local Vorher="`echo "$line" | cut -d ">" -f 1`"
local Jetzt="`echo "$line" | cut -d ">" -f 2`"
[ "$Vorher" == "$Jetzt" ] && {
echo "undo: [Error] Die Datei wurde nicht umbenannt: $Vorher"
echoerr "undo: [Error] Die Datei wurde nicht umbenannt: $Vorher"
continue
}
[ -f "$Jetzt" ] || {
echo "undo: [Error] Datei existiert nicht mehr: $Jetzt"
echo "undo: [Error] Fehlgeschlagene Dateien können mit einem erneuten Vorgang umbenannt werden!"
echoerr "undo: [Error] Datei existiert nicht mehr: $Jetzt"
echoerr " ==> Fehlgeschlagene Dateien können mit einem erneuten Vorgang umbenannt werden!"
continue
}
#wenn bereits eine Datei mit dem Namen vorhanden ist:
[ -e "$Vorher" ] && {
echo "[info] Es exestiert bereits das File \"$Vorher\""
echoerr "[info] Es exestiert bereits das File \"$Vorher\""
#wenn nich überschrieben werden soll
[ "$mod_force" != "true" ] && {
@@ -450,28 +550,29 @@ function undo() {
#wenn (nicht nicht) gefragt werden soll
if [ "$mod_silence" != "true" ]; then
read -p "Soll die Datei überschrieben werden? (y/N)? " yN </dev/tty # </dev/tty wegen dem while read line, weil da schon read ist
echo -ne "\033[2KSoll die Datei überschrieben werden? (y/N)? " >&2
read yN </dev/tty # </dev/tty wegen dem while read line, weil da schon read ist
#wenn yN nicht y ist
[ "$yN" != "y" ] && {
echo "Überspringe Datei"
echo "[info] Fehlgeschlagene Dateien können mit einem erneuten Vorgang umbenannt werden!"
echoerr "Überspringe Datei"
echoerr "[info] Fehlgeschlagene Dateien können mit einem erneuten Vorgang umbenannt werden!"
continue
}
else
echo "mod_silence=true ==> Überpringe Datei"
echo "[info] Fehlgeschlagene Dateien können mit einem erneuten Vorgang umbenannt werden!"
echoerr "mod_silence=true ==> Überpringe Datei"
echoerr "[info] Fehlgeschlagene Dateien können mit einem erneuten Vorgang umbenannt werden!"
continue
fi
}
echo "Datei wird überschrieben!: $Vorher"
echoerr "Datei wird überschrieben!: $Vorher"
}
echo "undo: [main] Verschiebe: \"$Jetzt\" nach \"$Vorher\""
echoerr "undo: [main] Verschiebe: \"$Jetzt\" nach \"$Vorher\""
#entferne erfolgreicge vorgänge aus log
echo "`cat $HOME/.cache/shorter/Log.txt | grep -v "$Vorher^$Jetzt" | grep -v "^$"`" > $HOME/.cache/shorter/Log.txt
echo "`cat $HOME/.cache/shorter/Log.txt |grep -v "$Vorher>$Jetzt" | grep -v "^$"`" > $HOME/.cache/shorter/Log.txt
mv "$Jetzt" "$Vorher"
@@ -480,6 +581,41 @@ function undo() {
}
function echo_Fortschritt() {
[ "$AllJobs" == "0" ] || [ -z "$AllJobs" ] && {
return
}
local Prozent="$((($JobCounter*100)/$AllJobs))"
local Hashtek=""
[ -z "$Prozent" ] && Prozent="0"
Hashtek="--------------------"
[ "$Prozent" -gt "4" ] && Hashtek="#-------------------"
[ "$Prozent" -gt "9" ] && Hashtek="##------------------"
[ "$Prozent" -gt "14" ] && Hashtek="###-----------------"
[ "$Prozent" -gt "19" ] && Hashtek="####----------------"
[ "$Prozent" -gt "24" ] && Hashtek="#####---------------"
[ "$Prozent" -gt "29" ] && Hashtek="######--------------"
[ "$Prozent" -gt "34" ] && Hashtek="#######-------------"
[ "$Prozent" -gt "39" ] && Hashtek="########------------"
[ "$Prozent" -gt "44" ] && Hashtek="#########-----------"
[ "$Prozent" -gt "49" ] && Hashtek="##########----------"
[ "$Prozent" -gt "54" ] && Hashtek="###########---------"
[ "$Prozent" -gt "59" ] && Hashtek="############--------"
[ "$Prozent" -gt "64" ] && Hashtek="#############-------"
[ "$Prozent" -gt "69" ] && Hashtek="##############------"
[ "$Prozent" -gt "74" ] && Hashtek="###############-----"
[ "$Prozent" -gt "79" ] && Hashtek="################----"
[ "$Prozent" -gt "84" ] && Hashtek="#################---"
[ "$Prozent" -gt "89" ] && Hashtek="##################--"
[ "$Prozent" -gt "94" ] && Hashtek="###################-"
[ "$Prozent" -gt "99" ] && Hashtek="####################"
############################################################################
echo -ne "${Hashtek}(${Prozent}%) \r" >&2
}
function main() {
local Files="`select_files "$path" "$search_depth"`"
[ -z "$Files" ] && {
@@ -487,7 +623,12 @@ function main() {
return
}
AllJobs="$(echo -n "$Files" | grep -c '^')"
debug "Lines: $AllJobs"
echo "$Files" | while read line; do
JobCounter="$(($JobCounter+1))"
#get filename on
local job="`echo "$line" | rev | cut -d "/" -f 1 | rev `"
@@ -505,91 +646,105 @@ function main() {
}
## subfunctions
#echoerr [msg]
function echoerr() {
echo $@ >&2
echo -e "\033[2K$@" >&2
echo_Fortschritt
}
#log_clear
function log_clear() {
echo "" > $HOME/.cache/shorter/Log.txt
[ -z "$(find "$HOME/.cache/shorter/Log/" -type d -empty)" ] && rm -r "$HOME/.cache/shorter/Log/"*
}
function debug() {
[ "$DEBUG" == "true" ] && echo "DEBUG: $@" >&2
}
#Normalize_SuE [season] [episode] (extention) -> S??E??.ext | S??E??
function Normalize_SuE() {
local S="$1"
local E="$2"
local F="$3"
[ -z "$S" ] && [ -z "$E" ] && {
echoerr "Normalize_SuE: Error: not all param exist: \"$@\""
}
E="$(echo ${E} | sed 's/^[0]*//')"
S="$(echo ${S} | sed 's/^[0]*//')"
[ "${E}" -le 9 ] && E="0${E}"
[ "${S}" -le 9 ] && S="0${S}"
echo "S${S}E${E}${file_ext}"
[ "$DEBUG" == "true" ] && echo -e "\033[2KDEBUG: $@" >&2
echo_Fortschritt
}
#init
function init() {
# wenn noch nie gelaufen creat cache and ..
[ -d "$HOME/.cache/shorter/" ] || mkdir -p "$HOME/.cache/shorter/"
[ -d "$HOME/.config/shorter/" ] || mkdir -p "$HOME/.config/shorter/"
[ -d "$HOME/.cache/shorter/Log" ] || { echoerr "init: create Path ~/.cache/shorter/Log/"; mkdir -p "$HOME/.cache/shorter/Log"; }
[ -d "$HOME/.config/shorter/" ] || { echoerr "init: create Path ~/.config/shorter/"; mkdir -p "$HOME/.config/shorter/"; }
[ -f "$HOME/.config/shorter/replaces.conf" ] || {
echoerr "init: create replaces.conf ..."
echo "#Don't use - ! Use _! " >> "$HOME/.config/shorter/replaces.conf"
echo "IV=S04" >> "$HOME/.config/shorter/replaces.conf"
echo "III=S03" >> "$HOME/.config/shorter/replaces.conf"
echo "II=S02" >> "$HOME/.config/shorter/replaces.conf"
echo "480p=_" >> "$HOME/.config/shorter/replaces.conf"
echo "720p=_" >> "$HOME/.config/shorter/replaces.conf"
echo "#geht nicht 2 =S02" >> "$HOME/.config/shorter/replaces.conf"
}
[ -f "$HOME/.config/shorter/pattern-season.conf" ] || {
echoerr "init: create pattern-season.conf ..."
echo "#Don't use - ! Use _! " >> "$HOME/.config/shorter/pattern-season.conf"
echo "S" >> "$HOME/.config/shorter/pattern-season.conf"
echo "Season_" >> "$HOME/.config/shorter/pattern-season.conf"
echo "Season." >> "$HOME/.config/shorter/pattern-season.conf"
echo "S_" >> "$HOME/.config/shorter/pattern-season.conf"
echo "" >> "$HOME/.config/shorter/pattern-season.conf"
echo "#.S" >> "$HOME/.config/shorter/pattern-season.conf"
echo "#_S" >> "$HOME/.config/shorter/pattern-season.conf"
echo "Staffel_" >> "$HOME/.config/shorter/pattern-season.conf"
}
[ -f "$HOME/.config/shorter/pattern-episode.conf" ] || {
echoerr "init: create pattern-episode.conf ..." ;
echo "E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Episode" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Episode_" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Ep." >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Ep_" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "_" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#Don't use - ! Use _! " >> "$HOME/.config/shorter/pattern-episode.conf"
echo "E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Episode" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Episode_" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Ep." >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Ep_" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "Folge_" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#0E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#1E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#2E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#3E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#4E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#5E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#6E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#7E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#8E" >> "$HOME/.config/shorter/pattern-episode.conf"
echo "#9E" >> "$HOME/.config/shorter/pattern-episode.conf"
}
[ -f "$HOME/.config/shorter/defaults.conf" ] || {
echoerr "init: create defaults.conf ..." ;
echo '#Deflaut configs for shorter:' >> "$HOME/.config/shorter/defaults.conf"
echo 'search_depth=1' >> "$HOME/.config/shorter/defaults.conf"
echo 'path="`pwd`"' >> "$HOME/.config/shorter/defaults.conf"
echo 'mod_force="false"' >> "$HOME/.config/shorter/defaults.conf"
echo 'mod_silence="false"' >> "$HOME/.config/shorter/defaults.conf"
echo '#formats: mp4,avi,... | all'>> "$HOME/.config/shorter/defaults.conf"
echo 'formats="mp4"' >> "$HOME/.config/shorter/defaults.conf"
echo 'DEBUG="false"' >> "$HOME/.config/shorter/defaults.conf"
echo '#Deflaut configs for shorter:'>> "$HOME/.config/shorter/defaults.conf"
echo 'search_depth=1' >> "$HOME/.config/shorter/defaults.conf"
echo 'path="`pwd`"' >> "$HOME/.config/shorter/defaults.conf"
echo 'mod_force="false"' >> "$HOME/.config/shorter/defaults.conf"
echo 'mod_silence="false"' >> "$HOME/.config/shorter/defaults.conf"
echo '#formats: mp4,avi,... | all' >> "$HOME/.config/shorter/defaults.conf"
echo 'formats="mp4"' >> "$HOME/.config/shorter/defaults.conf"
echo 'DEBUG="false"' >> "$HOME/.config/shorter/defaults.conf"
echo '#Start_String="E"' >> "$HOME/.config/shorter/defaults.conf"
echo 'Start_String=""' >> "$HOME/.config/shorter/defaults.conf"
echo 'End_String_bevore_Ext=""' >> "$HOME/.config/shorter/defaults.conf"
echo '' >> "$HOME/.config/shorter/defaults.conf"
echo '#Start_String="_"' >> "$HOME/.config/shorter/defaults.conf"
}
}
####################### Programm start ###############################
init
@@ -601,5 +756,8 @@ else
undo
fi
echo -e "\033[2K"
exit
#Globales ToDo: alle info & Error ausgaben nach stderr