Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вопрос как работать с тегами/ключевыми словами в файлах jpg ?

Ответить
Настройки темы
PowerShell - [решено] Вопрос как работать с тегами/ключевыми словами в файлах jpg ?

Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Здравствуйте,
Подскажите пожалуйста,как с помощью Powershell работать с тегами/ключевыми словами в файлах jpg ?
Если возможно приведите пример.

Отправлено: 21:30, 28-10-2012

 

Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


А как установить taglib-sharp ?

Отправлено: 21:24, 29-10-2012 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата dark-------13:
А как установить taglib-sharp ? »
Распаковать архив, куда удобно. В скрипте подгрузить dll и создать экземпляр taglib:
Код: Выделить весь код
[void][reflection.assembly]::loadfile("c:\taglib-sharp\taglib-sharp.dll")

$file = gi $args[0]
$tags = [taglib.file]::create($file)

# $tags | gm  # посмотреть доступные методы и свойства

$tags.tag.keywords   # выдаст "солнце" в твоем случае
Вызывать "script.ps1 .\file.jpg"
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:57, 29-10-2012 | #22


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Хочу отфильтровать фотки по keywords и не получается делаю так, что я не правильно делаю ? Пробовал ставить так get-image | get-exif | тоже не получается .
Код: Выделить весь код
import-module image
$in="e:\test\in"
$out="e:\test\out"
$ExifIDKeywords="40094"
Get-ChildItem $in -include *.jpg -Recurse | get-image | Add-exifFilter -passThru -ExifID $ExifIDKeywords -string "робот" | copy-Item -Destination $out

Отправлено: 22:16, 29-10-2012 | #23


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Get-ChildItem $in -include *.jpg -Recurse | Get-Exif | Where {$_.Keywords -eq "робот"} | Foreach {Copy $_.Path -Destination $out}

Отправлено: 00:13, 30-10-2012 | #24


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Спасибо за помощь уважаемые Kazun и Foreigner.
Подскажите пожалуйста, что я делаю неправильно в следующем скрипте:
Как заставить скрипт искать все фотки с заданным параметром exif "небо" и копировать в указанный каталог $dest, с переименованием одинаковых файлов если встретятся ?
Делал и так ? {!$_.path} и вот так ? {$_.path} значение не передается copy-item
Код: Выделить весь код
import-module image
$Path="c:\test\in"
$dest="c:\test\out"
Get-ChildItem $path -include *.jpg -Recurse | Get-Exif | Where {$_.Keywords -eq "небо"} | ? {!$_.path} | copy-Item -Destination {
	$folder = "$dest"
	md $folder -Force | Out-Null
	$fpath = Join-Path $folder $_.Name
	$i = 1
	while($true) {
		if (Test-Path $fpath) {
			$fpath = "{0}\{1}_{2}{3}" -f $folder,$_.basename,$i,$_.extension
			$i++
		}
		else {
			$fpath
			break
		}
	}
}

Отправлено: 13:10, 30-10-2012 | #25


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
Get-ChildItem $path -include *.jpg -Recurse | Get-Exif | Where {$_.Keywords -eq "небо"} | Foreach {Get-Item $_.path | copy-Item -Destination {
	$folder = "$dest"
	md $folder -Force | Out-Null
	$fpath = Join-Path $folder $_.Name
	$i = 1
	while($true) {
		if (Test-Path $fpath) {
			$fpath = "{0}\{1}_{2}{3}" -f $folder,$_.basename,$i,$_.extension
			$i++
		}
		else {
			$fpath
			break
		}
	}
}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:23, 30-10-2012 | #26


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Спасибо за помощь уважаемым Kazun(у), и Foreigner(у) в создании данного скрипта


Почуть переделал часть скрипта {$_.Keywords -eq "небо"}, теперь скрипт выглядит вот так - см. ниже, может быть данный скрипт будет еще кому-то полезным:
Код: Выделить весь код
#Чтобы скрипт работал нужно скачать и установить модуль ( Image-module powershell ), кратко называется image
#подгружаем установленный модуль командой import-modul
#ДЛЯ СОРТИРОВКИ МОЖНО ИСПОЛЬЗОВАТЬ следующие конструкции Where {($_.Keywords -like "*всп*") -or ($_.Keywords -like "*tot*")}
# Where {($_.Keywords -eq "робот") -or ($_.Keywords -like "total")}
# -or ($_.StarRating -eq "4")}
#если скрипт файлы не переносит значит повторно выполняется команда import-module, а она должна выполняться только один раз после запуска powershell
import-module image

$Path="e:\test\in"
$dest="e:\test\out"
Get-ChildItem $path -include *.jpg -Recurse | Get-Exif | Where {($_.Keywords -like "*стоя*") -or ($_.Keywords -like "*роб*")} | Foreach {Get-Item $_.path | copy-Item -Destination {
	$folder = "$dest"
	md $folder -Force | Out-Null
	$fpath = Join-Path $folder $_.Name
	$i = 1
	while($true) {
		if (Test-Path $fpath) {
			$fpath = "{0}\{1}_{2}{3}" -f $folder,$_.basename,$i,$_.extension
			$i++
		}
		else {
			$fpath
			break
		}
	}
}
}

Последний раз редактировалось dark-------13, 30-10-2012 в 21:12.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:48, 30-10-2012 | #27


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Подскажите пожалуйста почему выдается ошибка при обработке некоторых фотографий ?
Код: Выделить весь код
Get-ExifItem : Не удается обработать преобразование аргументов для параметра "image". Не удается преобразовать значение "G:\pics\2009\3\02[1]__56610.jpg" типа "Sy
stem.String" в тип "System.__ComObject".
C:\Users\User_1\Documents\WindowsPowerShell\Modules\image\Get-exif.ps1:146 знак:31
+     $dt = (get-ExifItem -image <<<<  $image -ExifID $ExifIDDateTimeTaken) 
    + CategoryInfo          : InvalidData: (:) [Get-ExifItem], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-ExifItem
Код: Выделить весь код
Get-ExifItem : Не удается обработать преобразование аргументов для параметра "image". Не удается преобразовать значение "G:\pics\2009\27\ff_03[1]__49189.jpg" типа "Sy
stem.String" в тип "System.__ComObject".
C:\Users\User_1\Documents\WindowsPowerShell\Modules\image\Get-exif.ps1:142 знак:34
+     $altref = get-ExifItem -image <<<<  $image -ExifID $ExifIDGPSAltRef
    + CategoryInfo          : InvalidData: (:) [Get-ExifItem], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-ExifItem

Отправлено: 23:40, 30-10-2012 | #28


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Видимо причина в названии файлов -- квадратные скобки. Попробуй добавить -LiteralPath в Get-Childitem.

Отправлено: 00:09, 31-10-2012 | #29


Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Не помогло

Отправлено: 00:27, 31-10-2012 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вопрос как работать с тегами/ключевыми словами в файлах jpg ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
DevCon’12: ключевыми докладчиками конференции станут Скотт Хансельман и Йонас Перссон OSZone News Новости и события Microsoft 0 27-01-2012 20:30
C/C++ - Помогите пожалуйста с русскими словами в C++. dakishi Программирование и базы данных 1 20-05-2010 10:21
C/C++ - Помогите пожалуйста решить проблему со словами. dakishi Программирование и базы данных 17 19-05-2010 21:50
Веб-технологии и мобильная платформа станут ключевыми темами конференции ReMIX10 OSZone News Новости и события Microsoft 0 17-05-2010 17:30
Графика - Ищу графический просмотрщик который умеет работать с тегами dionisys Программное обеспечение Windows 3 27-01-2010 11:50




 
Переход