13 Commits
v0.2 ... v0.3

Author SHA1 Message Date
6543
11056e5c73 Merge branch 'release_v0.3' 2019-03-09 03:59:05 +01:00
6543
1e8e84d545 redy vor release
smal bug for S0 but who cres!
2019-03-09 03:56:18 +01:00
6543
76c2be3c41 stage 2 ready for take of 2019-03-09 03:30:54 +01:00
6543
9df5176420 add pattern-search
(stage 2)
2019-03-09 03:08:41 +01:00
6543
5f1a6a6fe0 Merge branch 'search_int_with_string_optimize' into func_search_pattern 2019-03-09 02:46:44 +01:00
6543
ff230f3189 done 2019-03-09 02:46:01 +01:00
6543
adf13b18f8 workimg preprocessor
while read line exec new bash instance -> local far problem (out of scope) FIXED
2019-03-09 02:13:00 +01:00
6543
82b02b3555 Merge branch 'add_debugg_func' into func_search_pattern 2019-03-09 01:44:54 +01:00
6543
eadd02a4af Merge branch 'add_debugg_func' 2019-03-09 01:44:31 +01:00
6543
306ce0d37b add debug funct 2019-03-09 01:44:16 +01:00
6543
36a0833358 set vars to work with
+ preäprozessor ("/home/maddl/.config/shorter/replaces.conf")
2019-03-09 01:38:07 +01:00
6543
4a258026fd remove 2Do note, is done ... 2019-03-08 23:41:46 +01:00
6543
3a6cba29fd draft 2019-03-08 23:31:46 +01:00

View File

@@ -1,6 +1,6 @@
#!/bin/bash
#@date
#@date
#@version 0.2
#@author markus@obermui.de, 6543@obermui.de
@@ -23,6 +23,7 @@ formats="mp4" # "all, mp4, ..."
#Define Global Const
readonly NL=$'\n'
readonly DEBUG="false"
while getopts "d:e:sup:ft:" arg; do
case $arg in
@@ -95,46 +96,38 @@ function select_files() {
fi
}
#search_int_with_string [full_string] [search_pattern]
#search_int_nextto_string [full_string_string_string] [search_pattern] -> stdout (each nl)
# finde alle zusammenhängenden zahlen hinter string
function search_int_with_string() {
[ -z "$1" ] && {
echoerr "search_int_with_string: Error no Name"
function search_int_nextto_string() {
local full_string="$1"
local search_pattern="$2"
[ -z "$full_string" ] && {
echoerr "search_int_nextto_string: Error no Name"
return
}
[ -z "$2" ] && {
echoerr "search_int_with_string: Error no Search string"
[ -z "$search_pattern" ] && {
echoerr "search_int_nextto_string: Error no Search string"
return
}
local Full="$1"
local Single="$2"
#ersetze search_pattern mit newline+search_pattern
full_string=${full_string//$search_pattern/${NL}$search_pattern}
local full_string="`echo "$Full" | sed "s/$Single/\n$Single/g"`"
echo "$full_string" | while read line; do
local return_int=""
[ -z "`echo "$line" | grep "$Single"`" ] && {
#echoerr "Nicht wichtig: $line"
echo "$full_string" | grep -v "^$" | while read line; do
[ -z "`echo "$line" | grep "$search_pattern"`" ] && {
#wenn searchpatrn in zeile nicht enthalten
continue
}
char="`echo "$line" | sed "s/$Single//g" | sed "s/**/\n/g" | grep -v "^$"`"
local return_int=""
local char="`echo "$line" | sed "s/$search_pattern//g" | sed "s/**/\n/g" | grep -v "^$"`"
# echo "char:>$char.<"
for i in $char; do
# echo "in for: $i"
[[ "$i" = [0-9] ]] &&
{
return_int=""$return_int""$i""
# echo "Int:$i"
}
[[ "$i" = [0-9] ]] || {
# echo "break"
break
}
[[ "$i" = [0-9] ]] && return_int=""$return_int""$i""
[[ "$i" = [0-9] ]] || break
done
echo "$return_int" | egrep -v '^\s*$'
@@ -143,14 +136,73 @@ function search_int_with_string() {
}
#search_pattern [file_name] -> S??E??
#search_pattern [file_name] -> S??E??.ext
function search_pattern() {
#rewrite -> 3modis: Serie&Epis|Count|Other
#Vars Devinieren
local file_name="$1"
local file_ext="$(echo "$file_name" | rev | cut -d "." -f 1 | rev )"
file_name="$(echo "$file_name" | rev | cut -d "." -f 2- | rev )"
declare -a Array_S
declare -a Array_E
#handle file extention
if [ "$file_name" == "$file_ext" ]; then
file_ext=""
else
[ "${#file_ext}" -gt 4 ] && { file_name+="$file_ext"; file_ext=""; }
fi
#name normalisieren
file_name="${file_name// /_}" #leerzeichen ersetzen
file_name="$(echo "$file_name" | tr "[A-Z]" "[a-z]")"
#preprocess
[ -f "$HOME/.config/shorter/replaces.conf" ] && {
file_name="$(cat "$HOME/.config/shorter/replaces.conf" | grep -v "#" | grep -v "^$" | tr "[A-Z]" "[a-z]" | while read line; do
local from="$(echo "$line" | cut -d "=" -f 1)"
local to="$(echo "$line" | cut -d "=" -f 2)"
[ -n "$from" ] && [ -n "$to" ] && {
echo "${file_name//$from/$to}"
file_name="${file_name//$from/$to}"
debug "search_pattern: patern $from -> $to = $file_name"
}
done | tail -n1)"
}
debug "search_pattern: file_name = $file_name"
#analysieren > modus -> 3modis: Serie&Epis|Count|Other
#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
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[@]}"
#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
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[@]}"
#für version 0.3
[ "${#Array_E[@]}" -ge 1 ] && [ "${#Array_S[@]}" -ge 1 ] && {
Array_E[0]="$(echo ${Array_E[0]} | sed 's/^[0]*//')"
Array_S[0]="$(echo ${Array_S[0]} | sed 's/^[0]*//')"
[ "${Array_E[0]}" -le 9 ] && Array_E[0]="0${Array_E[0]}"
[ "${Array_S[0]}" -le 9 ] && Array_S[0]="0${Array_S[0]}"
echo "S${Array_S[0]}E${Array_E[0]}.${file_ext}"
}
}
#rename_manager [Vorher_Path_file] [new name]
function rename_manager() { #2Do use local var!!
function rename_manager() {
local Vorher_File="$1"
local New_Name="$2"
@@ -300,28 +352,36 @@ function main() {
local NewName="$(search_pattern "$job")"
rename_manager "$line" "$NewName"
[ -n "$NewName" ] && rename_manager "$line" "$NewName"
done
}
#clear cache #2Do -> mov in func log_clear
[ -d "$HOME/.cache/shorter/" ] || {
mkdir -p "$HOME/.cache/shorter/"
}
## subfunctions
#echoerr [msg]
function echoerr() {
echo $@ >&2
}
#log_clear
function log_clear() {
echo "" > $HOME/.cache/shorter/Log.txt
}
function debug() {
[ "$DEBUG" == "true" ] && echo "DEBUG: $@" >&2
}
####################### Programm start ###############################
# wenn noch nie gelaufen
[ -d "$HOME/.cache/shorter/" ] || {
mkdir -p "$HOME/.cache/shorter/"
}
if [ "$undo_set" == "false" ]; then
echo "" > $HOME/.cache/shorter/Log.txt #2Do -> mov in func log_clear
log_clear
main
else
undo