Portál AbcLinuxu, 3. listopadu 2025 08:54
Koupil jsem si nový mobil (SonyEricsson K300i) s vestavěným "foťáčkem". Abych si mohl to, co z něj leze, prohlídnout v plném rozlišení, tak to chce dostat fotky z mobilu do počítače.
Koupil jsem si sériový kabel (350 Kč; na počítači nemám IRDA a funkčnost periferií na "sérii" je pravděpodobnější než USB), nainstaloval balíček obexftp a začal jsem zkoušet:
$ obexftp -t /dev/ttyS0 -l Custom transport set to 'Siemens/Ericsson' Connecting...done Receiving (null)... <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"> <!-- XML Coder, May 24 2005, 21:06:32, (C) 2001 Sony Ericsson Mobile Communications AB --> <folder-listing version="1.0"><folder name="ObrĂĄzky"/> <folder name="Zvuky"/> <folder name="SchĂŠmata"/> <folder name="Videosoubory"/> <folder name="JinĂŠ"/> </folder-listing> done Disconnecting...done(Telefon posílá data v utf-8 a já mám prosté cs_CZ. Přesto příkazy fungují)
Pro stažení souboru lze použít příkaz:
obexftp -t /dev/ttyS0 -c cesta/k/souboru -g souborrespektive pro stažení a vymazání souboru:
obexftp -t /dev/ttyS0 -c cesta/k/souboru -G soubor
Telefon neumí žádné wildcards, takže to chce stahovat po jednom. Na to jsem si napsal skriptík. "Fotky" jsou v adresáři Obrázky/camera_semc a jmenují se Obrázek(číslo).jpg, skript si vytvoří v daném umístění adresář pojmenovaný podle aktuálního data a tam obrázky stáhne. Dlužno podotknout, že se dost často vyskytují chyby, proto přenos trvá dlouho. Stažení 40 obrázků (Většina v 640x480) bylo asi na hodinu přestože vlastní stažení jednoho snímku trvá do 10 vteřin. Skript proto (velmi primitivně
) kontroluje úspěšnost přenosu - pokud se z jakéhokoliv důvodu fotka, tak nepřeskočí na další.
Skriptík je tady:
#!/bin/bash
# Simple scipt for downloading pictures from cell-phone
TODAY=`date +%Y%m%d`
PWD=`pwd`
PHOTO_DIR=~/data/fotky/mobil
COUNT=$(($1+1))
cd $PHOTO_DIR
if [ ! -d $TODAY ]; then
mkdir $TODAY
fi
cd $TODAY
# If not told # of pics, do nothing
if [ "$1" == "" ]; then
echo "Usage: $0 nr_of_pics"
cd $PWD
exit 2
fi
I=1
while [ $I -lt $COUNT ]; do
PIC="Obrázek($I).jpg"
obexftp -t /dev/ttyS0 -c Obrázky/camera_semc -g $PIC
[ $? == "0" ] && I=$(($I+1))
done
cd $PWD
exit 0
Nedostatky jsou tyto:
Tiskni
Sdílej:
#!/bin/bash
USAGE=$( basename $(which $0)) DESTINATION_DIR [-delete]
DEST="${1:?$USAGE}"
DEV=
ADRESAR=
DELETE=${2:-}
[[ -d "$DEST" ]] || mkdir "$DEST" || { echo KO; exit 1; }
cd "$DEST" || { echo KO; exit 1; }
obexftp -d $DEV -l "$ADRESAR" | sed -ne 's/^.*name="\([^"]*jpg\)".*/\1/p' | while read foto
do
printf "stahuju foto $foto..."
obexftp -d $DEV -g "$ADRESAR/$foto" &>/dev/null || { echo KO; exit 1; }
echo OK
if [[ -n "$DELETE" ]]; then
printf "mazu foto $foto..."
obexftp -d $DEV -k "$ADRESAR/$foto" &>/dev/null || { echo KO; exit 1; }
echo OK
fi
done
exit 0
uplne za to nerucim - vetsinu jsem napsal ted bez vyzkouseni, ale jadro je vzaty z myho skriptu na stahovani fotek z S55ky a to fungovalo...
if [[ -f "$foto" ]]; then echo "Soubor $foto uz existuje..." exit 1 fina zacatek toho cyklu (za radek "do")
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.