Skrypt sh nie nadpisuje pliku

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
darkmanek
Sędziwy Jeż
Sędziwy Jeż
Posty: 30
Rejestracja: 16 lis 2007, 17:10
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Warszawa

Skrypt sh nie nadpisuje pliku

Post autor: darkmanek »

Witam
Po kilkuletniej przerwie zainstalowałem linuksa, ubuntu trusty.
Po skonfigurowaniu conky dorzuciłem do drugiej instancji conky skrypt znaleziony na deviantart,
który wykorzystuje exiftool do wyciągania okładek płyt prosto z tagów id3.
Ogólnie rzecz biorąc skrypt wyciąga cover, zapisuje w ~.tmp a conky wyświetla i na tym się kończy.
Problem z tym, że skrypt nie nadpisuje tego pliku co skutkuje brakiem zmiany okładki wraz ze zmianą płyty/kapeli.
Trzeba usuwać z ~/tmp plik i uruchomić ponownie z terminala sam skrypt i tak w kółko, co mija się z celem. Chciałbym to jakoś obejść,
ale szczerze mówiąc nigdy nie byłem w tym dobry, a dawno nie grzebałem w skryptach i już nie pamiętam co się z czym je ;-)
Ktoś może pomóc?
Z góry dzięki
extract_cover.sh:

Kod: Zaznacz cały

#!/bin/sh

MPD_MUSIC_PATH="/var/lib/mpd/music"
TMP_COVER_PATH="/tmp/mpd-track-cover"

exiftool -b -Picture "$MPD_MUSIC_PATH/$(mpc --format "%file%" current)" > "$TMP_COVER_PATH"
conkyrc:

Kod: Zaznacz cały

background yes
update_interval 1

default_color EAEAEA

alignment top_right
gap_x 20
gap_y 50
minimum_size 0 0
maximum_width 400

draw_borders no
border_width 0
border_inner_margin 10

draw_shades yes
default_shade_color 000000

own_window yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_argb_visual no
own_window_argb_value 105
own_window_type normal
double_buffer yes

use_xft yes
xftfont Bahamas:size=10

imlib_cache_size 100

own_window_transparent yes
own_window_colour 000000
TEXT
${exec 15 /home/maly/.conky/scripts/extract_cover.sh}
${voffset -15}${image /tmp/mpd-track-cover -s 100x100}${offset 110}${mpd_status}
${offset 110}ARTIST: ${mpd_artist}
${offset 110}ALBUM: ${mpd_album}
${offset 110}TITLE:   ${mpd_title}
${offset 110}${mpd_bar}
${offset 110}${mpd_elapsed}/${mpd_length}
Awatar użytkownika
Canis Lupus
Sędziwy Jeż
Sędziwy Jeż
Posty: 37
Rejestracja: 18 mar 2008, 18:25
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86

Re: Skrypt sh nie nadpisuje pliku

Post autor: Canis Lupus »

Nie mam zielonego pojęcia jak to ma działać, ale może dodanie w 3-ciej linii

Kod: Zaznacz cały

`rm -rf $TMP_COVER_PATH`
pomoże, skoro jesteś pewny, że chodzi o problem z nadpisywaniem?
BTW: czemu

Kod: Zaznacz cały

exiftool -b -Picture "$MPD_MUSIC_PATH/$(mpc --format "%file%" current)" > "$TMP_COVER_PATH"
a nie

Kod: Zaznacz cały

exiftool -b -Picture "$MPD_MUSIC_PATH/$(mpc --format "%file%" current)" > $TMP_COVER_PATH
?
Awatar użytkownika
mario_7
Administrator
Administrator
Posty: 8594
Rejestracja: 30 sie 2006, 13:11
Płeć: Mężczyzna
Wersja Ubuntu: 20.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: Skrypt sh nie nadpisuje pliku

Post autor: mario_7 »

Zmienne w Bashu, które zawierają ścieżki warto podawać w cudzysłowie gdyż mogą zawierać spacje.
Awatar użytkownika
Canis Lupus
Sędziwy Jeż
Sędziwy Jeż
Posty: 37
Rejestracja: 18 mar 2008, 18:25
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86

Re: Skrypt sh nie nadpisuje pliku

Post autor: Canis Lupus »

Aaaa... Widzisz. Człowiek uczy się przez całe życie. Od teraz będę perfidnie wykorzystywał tę wiedzę o zmiennych ze ścieżkami w ciapkach, w skryptach sh, czy innych powłokach. Nie, to nie jest sarkazm. Dzięki mario_7 :clap:
Awatar użytkownika
darkmanek
Sędziwy Jeż
Sędziwy Jeż
Posty: 30
Rejestracja: 16 lis 2007, 17:10
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Warszawa

Re: Skrypt sh nie nadpisuje pliku

Post autor: darkmanek »

Dzięki za zainteresowanie.
Dodanie

Kod: Zaznacz cały

`rm -rf $TMP_COVER_PATH
lub

Kod: Zaznacz cały

${TMP_COVER_PATH} ]] && rm -f ${TMP_COVER_PATH}
nie przynosi żadnego efektu poza tym, że w ogóle nie wyświetla okładki, wcześniej wyświetlało jedną niezależnie od zmiany płyty.
Dopiero uruchomienie skryptu z palca po wcześniejszym usunięciu pliku tymczasowego skutkowało wygenerowaniem nowego pliku.
Póki co mogę użyć skryptu który ściąga okładki z last.fm, ale wolałbym tego uniknąć ze wzgl na limity transferu danych (LTE) i dopracować ten właśnie skrypt tym bardziej, że praktycznie cała moja kolekcja muzyki ma tagi id3 uzupełnione o okładki, więc ich ściąganie do samego wyświetlenia w conky jest zbyteczne. Jakiś jeszcze pomysł?
Awatar użytkownika
zet120
Wytworny Kaczor
Wytworny Kaczor
Posty: 280
Rejestracja: 31 maja 2008, 07:35
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Openbox
Architektura: x86_64

Re: Skrypt sh nie nadpisuje pliku

Post autor: zet120 »

W pliku konfiguracyjnym conky zmień exec na execi, czyli:

Kod: Zaznacz cały

${execi 15 /home/maly/.conky/scripts/extract_cover.sh}
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 9 gości