Portál AbcLinuxu, 1. května 2025 14:02
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 0Nedostatky 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 0uplne 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.