Xpoint
   [напомнить пароль]

Изменение даты файла с помощью Perl

Метки: [без меток]
2016-10-01 01:09:37 [обр] German[досье]

Изменение даты файла с помощью Perl. Точнее, желательно даже изменять Date Taken в файле фотографии с помощью Актив перл Windows 10. Но сойдет и просто изменение даты.

Я давно уже не пишу программ для Perl, и не был ведущим программистом в прошлом. Но для бытовых целей перлом пользуюсь, язык весьма удобный, сделать может, кажется все, что угодно...

Бытовая задача. Вдвоем с товарищем мы были за границей и сняли, как обычно, больше 3000 фотографий каждый. Но я переставил часы в своем аппарате - и на час ошибся. Товарищ вовсе не переставил часы. Мы часто снимали друг друга, наших подруг и пр. Желательно было бы синхронизировать фотографии по времени, чтобы как-то в них разобраться...

Есть ли способ менять дату файла, прибавляя к полю даты-времени одинаковое время (или вычитать, понятно)? Конечно, желательно было бы изменить Date Taken, но, полагаю, это едва ли возможно. Можно писать и любую другую дату, а читать можно просто Date в Windows 10 — это, вероятно дата создания, и она совпадает с Date Taken.

Существует ли модуль, предназначенный для решения подобных задач?

спустя 1 час 8 минут [обр] Евгений Седов aka KPbIC(38/176)[досье]
спустя 5 часов [обр] German[досье]

Спасибо огромное, Евгений Седов aka KPbIC.
То есть менять можно только менять

modification time 
access time

Дату создания нужно менять и читать другим модулем, как я понял?

спустя 9 часов [обр] Евгений Седов aka KPbIC(38/176)[досье]
Дата создания вам не нужна, вам нужна дата изменения.
спустя 2 часа 14 минут [обр] German[досье]

Еще раз благодарю, Евгений Седов aka KPbIC[досье]!
Но у меня есть файлы, в которых два поля соответствуют времени проведения съемки. В WIN 10 эти поля называются

Date
Date Taken

Оба этих поля в моем случае содержат информацию в формате Дата+Время — и оба поля соответствуют времени проведения съемки. С помощью предложенного вами модуля я могу записать Дату изменения — и потом сортировать файлы по этой дате. Это нормально (хотя лучше изменить поле Date — для того чтобы оно соответствовало реальности на будущее)

Но прежде чем записать Дату изменения я должен прочитать дату и время создания файла (лучше бы даже Date Taken — но думаю эта дата содержится внутри самого файла и Перл, видимо, не может ее прочитать или изменить)

Короче.

  1. Мне нужно чем-то прочитать поле Date
  2. Затем прибавить или отнять число, соответствующее необходимым изменениям
  3. И лишь после этого я могу воспользоваться, указанным вами модулем, чтобы записать новую дату изменения. Для каждого файла это поле (дата + время) будет разным.

Чем же мне прочитать поле прочитать поле Date ?
Это поле точно нельзя изменить средствами Perl ?

спустя 3 часа 23 минуты [обр] Евгений Седов aka KPbIC(38/176)[досье]

http://man7.org/linux/man-pages/man2/stat.2.html

...
  struct timespec st_atim;  /* time of last access */
  struct timespec st_mtim;  /* time of last modification */
  struct timespec st_ctim;  /* time of last status change */
...

Я винду не знаю, но скорее всего там так же: то, что вы называете "датой создания", является датой изменения, а "даты создания" нет вообще. Вы попробуйте.

спустя 12 часов [обр] German[досье]

Спасибо, буду разбираться! Очень признателен вам, Евгений Седов aka KPbIC[досье]

В windows 10 сейчас можно вывести около 200 полей файла (оптичить - и они выводятся)

Сейчас у меня выведены Date, Date Taken (время съемки), Date modified, Date created. Можно вывести еще десять полей аналогичного типа (date-time) (в том числе Date modified). Date created — это время создания файла на диске, это поле вовсе не нужно.

Проблема у меня серьезная, вероятно решить ее можно, но есть препятствия. Интересующие меня поля называются Date и Date Taken - эти оба поля совпадают. В Фотошопе выводится аналогичное поле, его можно изменять, но при сохранении файла - это поле остается прежним, не меняется. В фотошопе также есть ссылка на источник сведений — что-то вроде xml файла, который содержится не только в *.NEF (RAW) файлах — но и в жипеге (jpg)

Вероятно, часть полей типа Date windows берет не из системы — а внутри самих файлов jpg или nef. Пока я не считаю в программу эти сведения — менять что-либо для меня совершенно бессмысленно.

Спасибо, за помощь. Я сообщу здесь об успехе или неудаче.

Сомнения в успехе у меня возникают потому, что раньше перл для Windows c помощью своего ppm (пакетного менеджера) мог обращаться к любому репозитарию. Где-то в Канадском университете я тогда находил все, что угодно. Сейчас для обращения к сторонним репозитариям требуется корпоративная версия Перл, которая, как я полагаю, платная.

То есть фактически бесплатный Perl для windows превратили в детскую игрушку. Там как-то можно обойти этот запрет, добавлять модули без PPM — но, думаю, у меня на такое терпения не хватит :)

спустя 22 часа [обр] German[досье]

Нашел программу, которая имеет нужные функции, правит все даты, заодно и геометки можно уточнить или поставить, если требуется. Exif Pilot называется, всё делает, располагается www.colorpilot.com. Имеется платная версия, которая выполняет операции в пакетном режиме. Но, по моему лучше использовать не дорогие версии программы, а Plug-in for Batch Editing.

Имеется русский аналогичный сайт, где плагин дешевле. Русификация частичная, поэтому попробую приобрести английскую (едва ли получится, русская втрое дешевле).

Мне кажется, у Perl есть модуль, который сделает все проще и понятнее, а с программой Exif Pilot еще придется возится. Но мне пока совершенно непонятно, покупать Business Edition of Perl для дома или нет? Сколько это стоит? (там нужно получать какую-то квоту вместо внятно обозначенной цены). Не проще ли вставить нужный модуль без PPM? В общем, если появятся сведение о модуле Перл, специально предназначенном для редактирования метаданных в фотографиях — то было бы интересно о таком узнать.

Иначе с прогой Exif Pilot, кажется, придется вынимать данные в иксель — там править — и вновь загонять в фотографии.

спустя 1 час 42 минуты [обр] Евгений Седов aka KPbIC(38/176)[досье]
спустя 5 часов [обр] German[досье]
Спасибо еще раз, Евгений Седов aka KPbIC[досье]
Пока сделал на пробной версии от Marc Rochkind's для макбука. Но обязательно попробую сделать вариант для перл. Там наверно еще будут сложности... Но это интересно
спустя 1 день [обр] German[досье]

Все нужные модули устанавливаются стандартным PPM из репозитария по умолчанию для АктивПерл для Виндоус...

Нужно было просто включить строку поиска, предложенную Евгений Седов aka KPbIC[досье]exif.
Задача для меня неактуальна, так как я решил все другим способом. Но я буду доделывать и Перл версию по мере появления свободного времени. Может это даже как отдельную программу можно будет сделать? Просто для передачи друзьям-товарищам.

Напишу, что будет получаться

спустя 11 дней [обр] пользователь удален
У меня не получается изменить дату.
Powered by POEM™ Engine Copyright © 2002-2005