Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
11056e5c73 | ||
|
1e8e84d545 | ||
|
76c2be3c41 | ||
|
9df5176420 | ||
|
5f1a6a6fe0 | ||
|
ff230f3189 | ||
|
adf13b18f8 | ||
|
82b02b3555 | ||
|
eadd02a4af | ||
|
306ce0d37b | ||
|
36a0833358 | ||
|
4a258026fd | ||
|
3a6cba29fd |
136
src/shorter
136
src/shorter
@@ -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
|
||||
|
Reference in New Issue
Block a user