Получение файлов из камер с поддержкой Wi-Fi

Правила форума
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Версия ОС вместе с разрядностью. Пример: LM 18.1 x64, LM Sarah x32 2. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 3. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 4. Суть. Желательно с выводом консоли, логами. 5. Скрин. Просьба указывать 1, 2 и 3 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
В сети
Аватара пользователя

Автор темы
Bill Williamson
Сообщения: 831
Зарегистрирован: 31 авг 2016, 10:38
Решено: 33
Благодарил (а): 273 раза
Поблагодарили: 205 раз

Получение файлов из камер с поддержкой Wi-Fi

Сообщение Bill Williamson » 19 сен 2016, 08:47

Доброго времени суток. Появилась надобность получать снимки и видеозаписи из фотоаппарата Nikon COOLPIX S6500 посредством Wi-Fi. Производитель вроде бы выпускает только приложение WirelessMobileUtility. Есть какой-нибудь способ в LM18 расшарить фотоаппарат через Wi-Fi?

Решение Bill Williamson » 01 июн 2017, 13:10

Перейти к ответу ➙
Изображение

Аватара пользователя

Dja
Сообщения: 4764
Зарегистрирован: 27 авг 2016, 17:03
Решено: 15
Откуда: Voskresensk
Благодарил (а): 645 раз
Поблагодарили: 493 раза

Re: Получение файлов из камер с поддержкой Wi-Fi

Сообщение Dja » 06 окт 2016, 12:59

я, кстати, вроде тоже что-то подобное делал. С телефона управлял камерой... Но как-то о том, чтобы это делать с ПК даже мысли не было ))

В сети
Аватара пользователя

Автор темы
Bill Williamson
Сообщения: 831
Зарегистрирован: 31 авг 2016, 10:38
Решено: 33
Благодарил (а): 273 раза
Поблагодарили: 205 раз

Получение файлов из камер с поддержкой Wi-Fi

Сообщение Bill Williamson » 01 июн 2017, 13:10

Изображение


demonlibra
Сообщения: 49
Зарегистрирован: 12 авг 2017, 06:09
Поблагодарили: 11 раз

Получение файлов из камер с поддержкой Wi-Fi

Сообщение demonlibra » 13 окт 2018, 10:44

Для NIKON COOLPIX P340 использую Airnef и скрипт, привязанный к горячим клавишам:

Код: Выделить всё

adapter="wlp2s0"					#Имя wifi адаптера
nikonssid="NikonP34040005585"				#SSID точки доступа NIKON
pathairnef="/home/demonlibra/.airnef/airnefcmd.py"	#Путь к программе AIRNEF
pathout="/mnt/data/Airnef"				#Путь для копирования файлов из NIKON

#Включаем wifi, если выключен
if [[ `nmcli radio wifi` = "disabled" ]]
	then
		yad --width=300 --form --timeout=5 --timeout-indicator=bottom --title="Wi-Fi выключен" --text="Включить Wi-Fi?"
		bbb=$?
		if [ $bbb = 0 ] || [ $bbb = 70 ]; then nmcli radio wifi on;	fi
		sleep 3
	fi

timeout=60

#Сканируем сеть и подключаемся к NIKON
if [[ `nmcli radio wifi` = "enabled" ]] && [[ `iwgetid $adapter -r` != $nikonssid ]]; then
	(for ((i=$timeout; i>1; i--)); do
		nmcli device wifi rescan ifname $adapter
		sleep 1
		if [[ `iwgetid $adapter -r` != $nikonssid ]]; then nmcli dev wifi connect $nikonssid; fi
		echo $(($i*99/$timeout))
		echo "# Осталось $i секунд"

		if [[ `iwgetid $adapter -r` = $nikonssid ]]; then i=0; fi

	done)|zenity --progress --title="Ожидание подключения к NIKON" --auto-close --auto-kill --width=300						
fi

#Запускаем airnef и копируем файлы из NIKON в каталог pathout
if [[ `nmcli radio wifi` = "enabled" ]] && [[ `iwgetid $adapter -r` = $nikonssid ]]
	then
		sleep 3
		gnome-terminal --wait --geometry 90x25 -t $nikonssid --hide-menubar -- bash -c "python $pathairnef --outputdir $pathout; echo; echo --------------------------------; echo; echo \"Скачивание завершено\"; echo; read -p \"Нажмите ENTER чтобы закрыть окно\""
		
		#Выключаем wifi, если питание от аккумулятора
		if [[ `acpi -a` != "Adapter 0: on-line" ]]; then nmcli radio wifi off; fi
fi
Включаю фотик и активирую в нем точку доступа, нажимаю горячие клавиши и получаю в каталоге "pathout" ранее не скачанные фото и видео файлы.

В сети
Аватара пользователя

Автор темы
Bill Williamson
Сообщения: 831
Зарегистрирован: 31 авг 2016, 10:38
Решено: 33
Благодарил (а): 273 раза
Поблагодарили: 205 раз

Получение файлов из камер с поддержкой Wi-Fi

Сообщение Bill Williamson » 13 окт 2018, 12:02

demonlibra писал(а):
13 окт 2018, 10:44
и скрипт
Кстати, можно доработать таким скриптом:

Код: Выделить всё

#!/bin/bash
# Скрипт раскладывает фотографии по каталогам вида гггг/мм, изменяет разрешение и качество в
# соответствии с заданными параметрами, а так же переименовывает изображения в формат
# гггг-мм-дд_чч-мм-сс.jpg
# На пример: /mnt/DCIM/IMG-20131014112354.jpg -> $HOME/Photo/2013/10/2013-10-14_11-23-54.jpg
#
# Данные о дате снимка ищутся в следующем порядке:
# 1) Exif данные (Exif.Photo.DateTimeOriginal и Exif.Image.DateTime)
# 2) В названии фотографии. Распознает различные варианты написания даты
# 3) Из даты создания файла
#
# При запуске без аргументов обрабатывает текущий каталог и все его подкаталоги. В качестве аргумента
# можно указать другой рабочий каталог-источник.
# НЕ удаляет оригиналы изображений!
# НЕ увеличивает разрешение
# Для работы необходим пакет exiv2 (sudo apt-get install exiv2)
##################################

src_dir=${1-`pwd`} # По умолчанию используется текущий каталог
dst_dir=$HOME/Photo # Каталог в который будут скопированны обработанные фотографии
quality=80  # Качество JPG изображения
resize=1600x900 # Размер после конвертации

# Ищем JPG файлы в указанной папке
#find "$src_dir" -iname "*.jpg" -print0 | sort | while IFS= read -r -d $'\0' file ; do

# Ищем JPG файлы в указанной папке и всех подпапках!
find "$src_dir" -iname "*.jpg" | sort | while IFS= read -r file ; do

  # Пробуем взять дату из Exif.Photo.DateTimeOriginal или Exif.Image.DateTime
  for photo_date in "Exif.Photo.DateTimeOriginal" "Exif.Image.DateTime" ; do
    photo_date=$(exiv2 -g "$photo_date" -Pv "$file")
    if [ -n "$photo_date" ] ; then  # Если дата найдена, прекращаем перебор
      break
    fi
  done

  if [ -z "$photo_date" ] ; then # Если в exif дата не найдена ищем в названии файла

    # Ищем дату в названии файла и приводим её к виду ггггммддччммсс
    photo_date=$(basename "$file" ".jpg" | egrep -o -m1 [0-9]\{4\}\([-_:\ ]?[0-9]\)\{10\})
      if [ -n "$photo_date" ] ; then

# Приводим дату к виду гггг:мм:дд чч:мм:сс для корректного добавляения в exif
photo_date=$(echo "$photo_date" | tr -d "\_\-\:\ " | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1:\2:\3 \4:\5:/')

# Добавляем дату из названия файла в exif
exiv2 -M"add Exif.Image.DateTime Ascii "$photo_date"" "$file"

      else # Если даты в названии не нашли, берем дату изменения (создания) файла
photo_date=$(date +"%Y:%m:%d %T" -r "$file")
#exiv2 -M"add Exif.Image.DateTime Ascii $photo_date" "$file"
      fi
  fi

  # Приводим различные вариации даты к единому виду гггг мм дд чч мм сс
  photo_date=$(echo "$photo_date" | egrep -o -m1 [0-9]\{4\}\([-_:\ ]?[0-9]\)\{10\} | tr -d "\_\-\:\ " | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \2 \3 \4 \5 /')

  # Разбиваем полученную дату (гггг мм дд чч мм сс) на фрагменты
  # $1 - Год, $2 - Месяц, $3 - День, $4 - Час, $5 - Минута, $6 - Секунда
  set -- $photo_date

  mkdir -p "$dst_dir/$1/$2" # Создаем структуру папок гггг/мм

  dest_file="$dst_dir/$1/$2/$1-$2-$3_$4-$5-$6.jpg" # Конечное имя файла
  
  a=0;  
  while [ -f "$dest_file" ] ; do
   md5src=$(md5sum "$file")
   md5src=${md5src% *}
   md5dst=$(md5sum "$dest_file")
   md5dst=${md5dst% *}
   if [ "$md5src" != "$md5dst" ] ; then
    dest_file="$dst_dir/$1/$2/$1-$2-$3_$4-$5-$6_$a.jpg"
    let "a+=1"
   else
    echo "Файл $dest_file уже существует";
    break
   fi 
  done
  
  # Копируем фотографию, только если исходный файл новее существующего или отсутствует. 
  # При копировании сохраняется дата создания фотографии
  cp -uvp "$file" "$dest_file"

  # Изменяем качество и размер фотографий, переименовываем и копируем в папку назначения
  # convert -quality "$quality" -resize "$resize"\> -verbose "$file" "$dest_file"

  # Устанавливаем дату создания файла такую же как и дата в exif
  # touch -t "$1$2$3$4$5.$6" "$dest_file"
  
done

exit 0
https://kubuntu.ru/node/11852#comment-138045
чтобы и сортировка была.
Изображение


demonlibra
Сообщения: 49
Зарегистрирован: 12 авг 2017, 06:09
Поблагодарили: 11 раз

Получение файлов из камер с поддержкой Wi-Fi

Сообщение demonlibra » 13 окт 2018, 15:38

Bill Williamson писал(а):
13 окт 2018, 12:02
Кстати, можно доработать таким скриптом:
Полезно, если надо разобрать много фотографий за длительный период времени.
У меня задачи другие, но ваш код натолкнул на путь автоматизации сжатия после копирования фото. Так же убрал zenity и yad. Они там явно лишние.

Код: Выделить всё

#!/bin/bash

# Скрипт подключается к фотоаппарату через wifi и скачивает фото из видео из фотоаппарата программой airnef

adapter="wlp2s0"						# Имя wifi адаптера
nikonssid="NikonP34040005585"					# SSID точки доступа NIKON
pathairnef="/home/demonlibra/.airnef/airnefcmd.py"		# Путь к программе AIRNEF
pathout="/mnt/data/Airnef"					# Путь для копирования файлов из NIKON
quality=85							# Процент сжатия фото

# Включаем wifi, если выключен
if [[ `nmcli radio wifi` = "disabled" ]]
	then
		echo "Включаем Wi-Fi"
		nmcli radio wifi on
		sleep 3
	fi
nmcli -p radio wifi
echo --------------------------------

timeout=60

# Сканируем сеть и подключаемся к NIKON
if [[ `nmcli radio wifi` = "enabled" ]] && [[ `iwgetid $adapter -r` != $nikonssid ]]; then
	for ((i=$timeout; i>1; i--))
		do
			nmcli device wifi rescan ifname $adapter
			sleep 1
			if [[ `iwgetid $adapter -r` != $nikonssid ]]; then nmcli dev wifi connect $nikonssid; fi
			echo "# Осталось секунд: $i"
			if [[ `iwgetid $adapter -r` = $nikonssid ]]; then i=0; fi
	done					
fi

# Запускаем airnef и копируем файлы из NIKON в каталог pathout
if [[ `nmcli radio wifi` = "enabled" ]] && [[ `iwgetid $adapter -r` = $nikonssid ]]
	then
		sleep 3
		python $pathairnef --outputdir $pathout
fi

# Сжатие новых фотографий
find "$pathout" -iname "*.JPG" | sort | while IFS= read -r file
	do
		date_change=$(date +"%Y%m%d%H%M%S" -r "$file")				# дата изменения файла
		
		date_photo=$(exiv2 -g "Exif.Photo.DateTimeOriginal" -Pv "$file") 	# дата создания фото
		date_photo=`echo $date_photo | sed 's/\(:\| \)//g'`			# дата создания фото без двоеточий и пробелов

		difference=$(($date_change - $date_photo))

		# Сравнение даты создания фото и даты изменения для определения была ли фотография сжата ранее
		if [[ $difference < 3 ]]
			then 
				# Сжимаем фото
				convert -quality "$quality" -verbose "$file" "$file"
		fi
done
echo; echo --------------------------------; echo; echo "Скачивание завершено"; echo; read -p "Нажмите ENTER чтобы закрыть окно"

#Выключаем wifi, если питание от аккумулятора
if [[ `acpi -a` != "Adapter 0: on-line" ]]
	then
		nmcli radio wifi off
fi

exit 0


demonlibra
Сообщения: 49
Зарегистрирован: 12 авг 2017, 06:09
Поблагодарили: 11 раз

Получение файлов из камер с поддержкой Wi-Fi

Сообщение demonlibra » 13 окт 2018, 19:11

Еще причесал код немного

Код: Выделить всё

#!/bin/bash

# Скрипт подключается к фотоаппарату через Wi-Fi и скачивает фото из видео из фотоаппарата программой Airnef

adapter="wlp2s0"						# Имя Wi-Fi адаптера
SSID="NikonP34040005585"					# SSID точки доступа фотоаппарата
pathairnef="/home/demonlibra/.airnef/airnefcmd.py"		# Путь к программе AIRNEF
pathout="/mnt/data/Airnef"					# Путь для копирования файлов из фотоаппарата
quality=85							# Процент сжатия фото

# Включаем wifi, если выключен
if [[ `nmcli radio wifi` = "disabled" ]]
	then
		echo "Включаем Wi-Fi"
		nmcli radio wifi on
	fi
	
nmcli -p radio wifi
echo --------------------------------

timeout=60

# Сканируем сеть и подключаемся к фотоаппарату
if [[ `nmcli radio wifi` = "enabled" ]] && [[ `iwgetid $adapter -r` != $SSID ]]; then
	for ((i=$timeout; i>1; i--))
		do
			nmcli device wifi rescan ifname $adapter
			if [[ `iwgetid $adapter -r` != $SSID ]]
				then
					check=`nmcli con show $SSID`					
					if [ $? = 0 ]
						then nmcli --wait 1 con up $SSID		# Проверяем существование ранее созданного соединения и соединяемся
						else nmcli --wait 1 dev wifi connect $SSID	# Или подключаемся с созданием нового соединения
					fi
			fi
			echo "# Проверьте фотоаппарат и активируйте точку доступа. Осталось секунд: $i"
			if [[ `iwgetid $adapter -r` = $SSID ]]; then i=0; fi
	done
fi

# Запускаем airnef и копируем файлы из фотоаппарата в каталог pathout
if [[ `nmcli radio wifi` = "enabled" ]] && [[ `iwgetid $adapter -r` = $SSID ]]
	then
		sleep 3
		python $pathairnef --outputdir $pathout

		# Сжатие новых фотографий
		find "$pathout" -iname "*.JPG" | sort | while IFS= read -r file
			do
				if [[ `identify -format '%Q' "$file"` > 95 ]]
					then 
						# Сжимаем фото
						echo; echo --------------------------------; echo
						convert -quality "$quality" -verbose "$file" "$file"
						echo; echo --------------------------------; echo;
				fi
		done
		echo; echo --------------------------------; echo; echo "Скачивание и сжатие завершено"; echo; read -p "Нажмите ENTER чтобы закрыть окно"
fi

#Выключаем wifi, если питание от аккумулятора
if [[ `acpi -a` != "Adapter 0: on-line" ]]
	then
		nmcli radio wifi off
fi

exit 0

Вернуться в «Иное программное обеспечение»