mxw a co konkretnie? Podaj dokladna specyfikacje zadania
a ja odpowiem kilkoma linijkami shella
[FotoLoader] ściąganie zdjęć do komputera
Zwiń
X
-
-
a nie, konkretnie nie ułatwię ci zadania ;-)Zamieszczone przez muflonmxw a co konkretnie? Podaj dokladna specyfikacje zadania
a ja odpowiem kilkoma linijkami shella 
odpowiem - przepraszam za wyrażenie - humanistycznie:
no, panie, chodzi o to, żeby fotki przegrać z karty canona do komputera i w trakcie tej operacji zmienić numery 4-cyfrowe (stosowane na karcie, np. IMG_4456.JPG) na właściwe 5-cyfrowe (np. IMG_04456.JPG albo IMG_24456.JPG), tak, aby nazwy plików w kompie nie powtarzały się co 10000 zdjęć.
da się? :wink:
da się w 10 linijek?pozdro.,
m.
__________________
Komentarz
-
-
max długość linijki: 80 znakówZamieszczone przez Tomasz Golinskida się w jedną, tylko odpowiednio długą
pozdro.,
m.
__________________
Komentarz
-
Pisane zupelnie 'od czapki', 2 min. klepania, nawet nie wiem czy dzialaZamieszczone przez mxwda się w 10 linijek?
ale ideologia chyba jasna:
Przy czym pierwsze 5 linijek najprawdopodobniej da sie zamknac w jakichs 2 ale to wymaga troche wiecej niz 2 min. myslenia (powiedzmy 10 - ale to by byla sztuka dla sztuki).Kod:[b]#!/bin/sh SEQ=${HOME}/.downloader.seq if [ ! -f ${SEQ} ]; then echo "0" >${SEQ}; fi N=`cat ${SEQ}` N=$(( ${N} + 1 )) echo ${N} >${SEQ} cp /gdzie/karta/dcim/*canon/img_* . rename img_ img_`printf "%04d" ${N}` img_????.???[/b]
W tej postaci skrypt pozwala zgrac pierwsze 9999 kart, potem nazwy sie troche rozjada (dlugosc) - kwestia poprawienie %04d w printfie.
PS. mi nie chodzi o to, zeby 'Joe Average' zmuszac do pisania takich buraczkow
To tylko odpowiedz na 'da sie?' 
Edit: i juz nawet poprawilem pierwszego buga (w rename, tak jak poprzednio by dzialalo, ale nazwy plikow bylyby nie do konca takie jak zalozone)Komentarz
-
ok, ładny skrypcik, miło popatrzeć, ale ... chyba nie o to lotoZamieszczone przez muflonW tej postaci skrypt pozwala zgrac pierwsze 9999 kart, potem nazwy sie troche rozjada (dlugosc) - kwestia poprawienie %04d w printfie.Kod:[b]#!/bin/sh SEQ=${HOME}/.downloader.seq if [ ! -f ${SEQ} ]; then echo "0" >${SEQ}; fi N=`cat ${SEQ}` N=$(( ${N} + 1 )) echo ${N} >${SEQ} cp /gdzie/karta/dcim/*canon/img_* . rename img_ img_`printf "%04d" ${N}` img_????.???[/b]
generalnie numerujesz nawet nie karty, tylko operacje kopiowania.
poza tym nie chodzi o nadanie (dodanie) własnej sekwencji numerów (to też rozwiązanie, ale inne), tylko właściwe przenumerowanie zdjęć z karty (te 4 cyfry z karty nie mogą być zmienione).pozdro.,
m.
__________________
Komentarz
-
Spełnia założeniaZamieszczone przez mxwok, ładny skrypcik, miło popatrzeć, ale ... chyba nie o to loto
Myślisz dlaczego prosiłem o dokładną specyfikację?
A jak numerować karty w obrębie sesji? Zerowanie licznika na początku i prompt "włóż kartę numer 3"? No problem, jedna pętelkaZamieszczone przez mxwgeneralnie numerujesz nawet nie karty, tylko operacje kopiowania.
No i nie sąZamieszczone przez mxwpoza tym nie chodzi o nadanie (dodanie) własnej sekwencji numerów (to też rozwiązanie, ale inne), tylko właściwe przenumerowanie zdjęć z karty (te 4 cyfry z karty nie mogą być zmienione).
Dokładnie tak jest: IMG_3847.JPG zostanie zmieniony na IMG_00013847.JPG (albo IMG_13847 jak dać %01d w printfie).
Komentarz
-
he, he, i to najbardziej lubimy u programistów ;-)Zamieszczone przez muflonSpełnia założenia
Myślisz dlaczego prosiłem o dokładną specyfikację?
ale jedną kartą też można zrobić ponad 9999 zdjęć.Zamieszczone przez muflonA jak numerować karty w obrębie sesji? Zerowanie licznika na początku i prompt "włóż kartę numer 3"? No problem, jedna pętelka
no i to jest sedno sprawy: skąd wiesz, że IMG_3847.JPG to zdjęcie nr 13847? a może 23847 albo 33847? 8)Zamieszczone przez muflonNo i nie są
Dokładnie tak jest: IMG_3847.JPG zostanie zmieniony na IMG_00013847.JPG (albo IMG_13847 jak dać %01d w printfie).pozdro.,
m.
__________________
Komentarz
-
Eee, no moment.. nie łapię... zrozumiałem, że chodziło Ci po prostu o dodanie jednocyfrowych prefiksów do zgrywanych zdjęć z karty: '1' do pierwszej, '2' do drugiej, '3' do trzeciej itp. Jeśli masz na myśli totalne przenumerowywanie w stylu: "jeśli pierwszy obrazek na pierwszej karcie to IMG_9485, zmień mu nazwę na IMG_00001" itp., to było mówić
Wtedy bym trochę inaczej kombinował - jakiś bardziej zakręcony find, powinno być nawet krócej ;-)
No ale nie. Napisałeś:Nie wiem co to '5-cyfrowy standard Canon', ale ja to tak odebrałem...Zamieszczone przez mxwautomatycznie przenumerowywać zdjęcia z numerów 4-cyfrowych do 5-cyfrowych wg standardu Canon, np. IMG_5470.CR2 zamieni na IMG_15470.CR2, jeżeli to było zdjęcie 15470-te, lub IMG_25470.CR2, jeżeli 25470-te itd.,Komentarz
-
A, chyba rozumiem skąd nieporozumienie. Spójrz dokładnie na dwie ostatnie linijki, tam jest taki trick w 'rename' ;-) Nie powiem jaki, żeby nie psuć zabawy ;-)Zamieszczone przez mxwno i to jest sedno sprawy: skąd wiesz, że IMG_3847.JPG to zdjęcie nr 13847? a może 23847 albo 33847? 8)Komentarz
-
nie, nie, nie. możemy założyć, że w ogóle mamy tylko jedną kartę, za pomocą której zrobimy 100.000 zdjęć, a aparat ma ustawione numerowanie ciągłe.Zamieszczone przez muflonEee, no moment.. nie łapię... zrozumiałem, że chodziło Ci po prostu o dodanie jednocyfrowych prefiksów do zgrywanych zdjęć z karty: '1' do pierwszej, '2' do drugiej, '3' do trzeciej itp.
nie, nie, to byłaby porażka...Zamieszczone przez muflonJeśli masz na myśli totalne przenumerowywanie w stylu: "jeśli pierwszy obrazek na pierwszej karcie to IMG_9485, zmień mu nazwę na IMG_00001" itp., to było mówić
standard canona jest 4-cyfrowy i jest opisany w instrukcji każdego cyfrowego bodyZamieszczone przez muflonNie wiem co to '5-cyfrowy standard Canon', ale ja to tak odebrałem...
a my chcemy go zamienić na format 5-cyfrowy - z nim zgodny.
no co jest, mam dać hinta? :wink:pozdro.,
m.
__________________
Komentarz
-
-
OK, chyba rozumiem. Przy takich założeniach rzeczywiście, raczej nie do napisania w 5 minut (trzeba wykrywać 'overflow' przy zgrywaniu z karty). Pogrzebię w wolnej chwili. Aczkolwiek ciągle nie rozumiem na jakiej zasadzie program ma wykrywać 'początek sesji' - czyli kiedy pierwszą cyferką ma być zero. Czy to jest na zasadzie: "odpalamy program - zaczynamy sesję od zera - lecimy z naszymi 50 kartami, w pewnym momencie licznik się przekręca na 1, potem na 2..." i przy 50 kartach pełnych JPEGów 'fine' ma szanse dojść co najwyżej tu :-D (licząc 400 obrazków/kartę)? Czy też raczej licznik 'historyczny', taki jak w skrypcie, który podałem wyżej? (chyba bardziej logiczne).Zamieszczone przez mxwnie, nie, nie. możemy założyć, że w ogóle mamy tylko jedną kartę, za pomocą której zrobimy 100.000 zdjęć, a aparat ma ustawione numerowanie ciągłe.
Zresztą... odpuśćmy sobie te kłótnie
bo to chyba OT, a różnice to naprawdę szczegóły.
Baj de łej: takie zgrywanie do sekwencji 00001, 00002 itp. wbrew pozorom takie głupie nie jest. Ja gdy wracam z airshow mam typowo właśnie taki problem: databank z tysiącami fotek do zrzucenia na kompa. I tak naprawdę to to, jak się te fotki nazywają w jego środku jest mało istotne - przenumerować je sobie moge chocby i do numerków heksadecymalnych (just kidding :-D ), byle tylko było to spójne i do odtworzenia w razie np. padu dysku w laptopie.Komentarz
-
-
A fakt.. ja nawet nigdy nie zwróciłem uwagi na to, jak są numerowane katalogiZamieszczone przez Tomasz GolinskiPrzecież ta cyferka pochodzi z numeru katalogu.
No to robi się prościej niż myślałem. Aczkolwiek w takiej sytuacji krócej byłoby w perlu (idealne zadanie na regexpy ;-) )
Komentarz
Komentarz