Üdv!
KuLuSz ismét adott egy ötletet, ezúttal a multimédia kereső optimalizálásához... most perpill az ENG és a HUN verzió is egyformán úgy működik, hogy 3 karakter beírása után mindig kiadja a find parancsot... namármost ha van 60'000 db fájlunk akkor ott igencsak kiakasztjuk vele a szkriptet és a find parancsot is.
Ennek kiküszöbölésére beraktam a keresést egy gomb szerepébe, amire elég 1x kattintanunk és ezt tegyük úgy, hogy kiválasztjuk a kívánt kiterjesztést .mp3 mondjuk, valamint a 3 csillagot a keresőmezőbe megadjuk: ***
Ezután rányomva a Keresés gombra az eddig megszokott módon mp3.txt fájlba kapjuk a találatokat.
A csavar az egészben az, hogy jelen állapotban létrejön egy mpxtemp.txt fájl a szkript indulásánál, és ebbe grepeljük bele az mp3.txt tartalmát, ahelyett, hogy mindig a find parancsokkal eröltetnénk a folyamatot.
Avagy
Megnyílik a szkript, beírjuk a *** -t a keresőmezőbe, kiválasztjuk a kiterjesztést, és megnyomjuk a Keresés gombot. Amíg az vissza nem huppan a normál kidomborodott állapotába, addig dolgozik a find parancs. Amint ez megtörtént, a *** helyére beírt kulcsszavak már a txt-ből grepelik ki a keresendő találatokat.
A 3 csillag csak a Keresés gombhoz javasolt, ott ugyanis muszáj 3 karakterig elmenni.
Utána viszont a grepelés, avagy a beírt keresendő kulcsszavak már lehetnek a txt-ben található mappanevek is, hiszen a grep mindenre keres nem csak kiterjesztésre.
Így tesztre itt bocsátom egyelőre a módosított szkriptet és egyelőre csak a magyar nyelvűt... íme:
Kód: Egész kijelölése
#!/bin/bash
###nocsak remake based on KuLuSz original idea on 2021.10.01. CEST
### multimédia fájl kereső és lejátszó és lejátszási lista generátor a találatokból
#kérlek figyelj a keresési mélységre és a találatok mennyiségére
### HASZNÁLAT ELŐTT TESZTELD !!! ###
###OLVASSEL###
#Első futtatásnál létrehoz néhány txt fájlt mint adazbázist
#a kereső mező és a kiválasztott forráskönyvtár alapján.
#3-nál több karakter begépelés után a kereső mezőben a kereső folyamat elindul
#függően a mélység és a fájlok mennyiségétől és a kiválasztott kiterjesztzéstől.
#A találati eredmények megjelennek a multimédia fa mezőben.
#Duplán kattintva a kiválaszott fájlra csak azt, az mp3.pls gombra kattintva
#kiexportálva és kovertálva a teljes listát menti a $HOME/mpp3/mp3.pls fájlba majd lejátszásra
#megnyitja a legördülőben kiválasztott lejátszóval.
# !!az ffplay nem kezel .pls fájlokat!!!
#Minden további más funkció felfedezhető könnyedén a használat során. Hajrá!
############
export OUTPUT_CHARSET=UTF-8
###export CURD=$(dirname $0)
if [[ ! -d "$HOME/mpp3" ]];then
mkdir -p "$HOME/mpp3"
fi
if [[ -f "$HOME/mpp3/mpxtemp.txt" ]];then
echo "1"
else
touch "$HOME/mpp3/mpxtemp.txt"
fi
if [[ -f "$HOME/mpp3/func.sh" ]];then
echo "1"
else
echo "#!/bin/bash
findcar(){
if [[ \"\$(echo -n \"\$SEARCH\" | wc -c)\" -ge 3 ]];then
if [[ \"\$PLAYER_EXT\" == \".all\" ]];then
find \"\$DIReR/\" -type f \( -iname \*\$SEARCH*.mp3 -o -iname \*\$SEARCH*.m4a -o -iname \*\$SEARCH*.ogg -o -iname \*\$SEARCH*.flac -o -iname \*\$SEARCH*.oga -o -iname \*\$SEARCH*.wav -o -iname \*\$SEARCH*.mp2 -o -iname \*\$SEARCH*.avi -o -iname \*\$SEARCH*.mpg -o -iname \*\$SEARCH*.mpeg -o -iname \*\$SEARCH*.mp4 -o -iname \*\$SEARCH*.mkv -o -iname \*\$SEARCH*.m4v -o -iname \*\$SEARCH*.ogv -o -iname \*\$SEARCH*.wma -o -iname \*\$SEARCH*.wmv -o -iname \*\$SEARCH*.midi -o -iname \*\$SEARCH*.webm \) > \"\$HOME/mpp3/mp3.txt\"
elif [[ \"\$PLAYER_EXT\" == \".allaudio\" ]];then
find \"\$DIReR/\" -type f \( -iname \*\$SEARCH*.mp3 -o -iname \*\$SEARCH*.m4a -o -iname \*\$SEARCH*.ogg -o -iname \*\$SEARCH*.flac -o -iname \*\$SEARCH*.oga -o -iname \*\$SEARCH*.wav -o -iname \*\$SEARCH*.mp2 -o -iname \*\$SEARCH*.wma \) > \"\$HOME/mpp3/mp3.txt\"
elif [[ \"\$PLAYER_EXT\" == \".allvideo\" ]];then
find \"\$DIReR/\" -type f \( -iname \*\$SEARCH*.avi -o -iname \*\$SEARCH*.mpg -o -iname \*\$SEARCH*.mpeg -o -iname \*\$SEARCH*.mp4 -o -iname \*\$SEARCH*.mkv -o -iname \*\$SEARCH*.m4v -o -iname \*\$SEARCH*.ogv -o -iname \*\$SEARCH*.wmv -o -iname \*\$SEARCH*.webm \) > \"\$HOME/mpp3/mp3.txt\"
else
if [[ \"\$PLAYER_EXT\" != \".all\" ]] || [[ \"\$PLAYER_EXT\" != \".allaudio\" ]] || [[ \"\$PLAYER_EXT\" != \".allvideo\" ]];then
[[ -z \"\$SEARCH\" ]]&& SEARCH=\".*\"
find \"\$DIReR/\" -iname \"*\$SEARCH*\$PLAYER_EXT\" > \"\$HOME/mpp3/mp3.txt\"
fi
fi
fi
}
lol(){
\$PLAYER_RPG \"\$plista\" \"\$@\" &
}
gok(){
sed -e 's/^/File1=file:\/\//' \"\$HOME/mpp3/mpxtemp.txt\" > \"\$HOME/mpp3/mp3temp.txt\" && while read line; do n=\$((++n)) && echo \"\$line\"|sed -e 's/[0-9]/'\$((\$n))'/' ; done < \"\$HOME/mpp3/mp3temp.txt\" > \"\$HOME/mpp3/mp3.pls\" && sed -i '1s/^/[playlist]\nVersion=2\n\n/' \"\$HOME/mpp3/mp3.pls\" && \$PLAYER_RPG \"\$HOME/mpp3/mp3.pls\" &
}
got(){
[ ! -z \"\$SEARCH\" ]&& grep \"\$SEARCH\" \"\$HOME/mpp3/mp3.txt\" > \"\$HOME/mpp3/mpxtemp.txt\"
}
if [[ \"\$1\" == \"a\" ]];then
findcar
elif [[ \"\$1\" == \"b\" ]];then
lol
elif [[ \"\$1\" == \"c\" ]];then
gok
elif [[ \"\$1\" == \"d\" ]];then
got
fi
" > "$HOME"/mpp3/func.sh && chmod +x "$HOME"/mpp3/func.sh &
fi
if [[ ! -f "$HOME/mpp3/mp3.txt" ]];then
touch $HOME/mpp3/mp3.txt
fi
for prog in defaultaudioplayer fofi8 ffplay defaultmediaplayer smplayer gnome-mplayer gmplayer gui_mpv vlc;do
[ $(which "$prog") ]&& DLG_PROGS=" $DLG_PROGS
<item>$prog</item>
"
done
export MD="<window title=\"$(gettext 'multimédia kereső')\" resizable=\"true\">
<vbox width-request=\"600\" height-request=\"500\">
<hbox homogeneous=\"true\"><frame Vezérlő>
<text label=\"Forrás útvonal:\"></text>
<entry space-expand=\"false\" space-fill=\"false\" fs-title=\"Válassz könyvtárat:\" fs-action=\"folder\">
<default>$HOME</default>
<variable>DIReR</variable>
</entry>
<button>
<label>Könyvtár</label>
<input file stock=\"gtk-open\"></input>
<action>fileselect:DIReR</action>
</button>
<button>
<label>Keresés</label>
<action>$HOME/mpp3/func.sh a</action>
</button>
<text><label>Grafikus Lejátszó:</label></text>
<combobox width-request=\"140\">
"$DLG_PROGS"
<variable>PLAYER_RPG</variable>
</combobox></frame>
</hbox>
<hbox homogeneous=\"false\"><text label=\"Keresés mindenre: ***\"></text>
<entry>
<variable>SEARCH</variable>
<action>$HOME/mpp3/func.sh d</action>
</entry>
<combobox width-request=\"140\">
<default>.mp3</default>
<item>.mp3</item>
<item>.m4a</item>
<item>.ogg</item>
<item>.flac</item>
<item>.oga</item>
<item>.wav</item>
<item>.mp2</item>
<item>.wma</item>
<item>.midi</item>
<item>.m3u*</item>
<item>.avi</item>
<item>.mpg</item>
<item>.mpeg</item>
<item>.mp4</item>
<item>.mkv</item>
<item>.m4v</item>
<item>.ogv</item>
<item>.wmv</item>
<item>.webm</item>
<item>.all</item>
<item>.allaudio</item>
<item>.allvideo</item>
<variable>PLAYER_EXT</variable>
</combobox>
<text label=\"$HOME/mpp3/\"></text>
<button>
<label>mp3.pls</label>
<action>$HOME/mpp3/func.sh c</action>
</button>
</hbox>
<tree auto-refresh=\"true\">
<label>multimédia</label>
<variable>plista</variable>
<input file>\"$HOME/mpp3/mpxtemp.txt\"</input>
<action>$HOME/mpp3/func.sh b</action>
</tree></vbox></window>"
gtkdialog -pc MD
if [[ -f "$HOME/mpp3/mp3temp.txt" ]] ;then
rm $HOME/mpp3/mp3temp.txt
fi

- Screenshot.jpg (45.13 KiB) Megtekintve 4106 alkalommal
Ja és továbbra is MX illetve antix Linux kompatibilis a szkript!