phtools 0.7.7 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +10 -0
- data/README.md +4 -4
- data/TODO.md +28 -2
- data/exe/phfixfmd +35 -0
- data/lib/phfixfmd.rb +15 -1
- data/lib/phtools/version.rb +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35103e10dc96a7315a527248a7e295f5b336b52e
|
4
|
+
data.tar.gz: c0a2fcd464db08183e823fc1759d423f885d5843
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6012cc53aeda379d7cb75f6df82378998044bdac8d3a5276036953490a5fb54c3e1844575c0a4b6d4cc86de0f3cdd583799955aaeb47f30abeca6f33fafe8756
|
7
|
+
data.tar.gz: 639149c172010838bd0972e7356f30fce64350035bf42c63b45fdda471e4be4fa2ff67901cac424a607dfe6e662c515cf918c8e75a0413f94d9fd6dd2e217de6
|
data/History.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# RELEASED
|
2
2
|
|
3
|
+
## [v0.8.0](https://github.com/andrewbiz/phtools/compare/v0.7.7...v0.8.0)
|
4
|
+
|
5
|
+
## [v0.7.7](https://github.com/andrewbiz/phtools/compare/v0.6.0...v0.7.7)
|
6
|
+
* phrename: added --shift_time option
|
7
|
+
* phrename is idempotent (safe to be re-run several times on one file)
|
8
|
+
* phrename: by-default now it scans several EXIF tags to retreive date-time creation info. If no tags are found - File ModifyDate (mtime) is used to rename file. See more details in `phrename -h`
|
9
|
+
* phrename becomes more informative: reports which EXIF tag was taken, or if the date-time in name was kept unchanged. This flow goes to STDERR to keep STDOUT clean
|
10
|
+
* phbackup now preserves FileModify dates
|
11
|
+
* internal improvements: switch to mini_exiftool gem, get rid of nesty gem (using standard Ruby *cause* for Exceptions)
|
12
|
+
|
3
13
|
## [v0.6.0](https://github.com/andrewbiz/phtools/compare/v0.4.0...v0.6.0)
|
4
14
|
* phmove: does not keep unused empty VIDEO and RAW folders
|
5
15
|
* phrename: --clean option renames files back to original state
|
data/README.md
CHANGED
@@ -106,7 +106,7 @@ I get all photos in `~/Desktop/assets_staging` renamed to it's original names.
|
|
106
106
|
|
107
107
|
#### USE CASE 2.3 Change author nickname in the filenames
|
108
108
|
#### Given
|
109
|
-
I have several photo files in my working folder `~/Desktop/assets_staging` renamed to PHTOOLS standard. Some photos were made by ANB, some photos were made by Alex (nick _ALE_)
|
109
|
+
I have several photo files in my working folder `~/Desktop/assets_staging` renamed to PHTOOLS standard. Some photos were made by ANB, some photos were made by Alex (nick _ALE_)
|
110
110
|
|
111
111
|
And I want to change the author NICKNAME _ALE_ to _ALX_.
|
112
112
|
|
@@ -122,7 +122,7 @@ I get all _ALE_ photos in `~/Desktop/assets_staging` renamed to _ALX_ nickname.
|
|
122
122
|
|
123
123
|
And all _ANB_ photos are kept unchanged.
|
124
124
|
|
125
|
-
_Note. `phrename` is smart enough to let the user to run it several times on one file. Every time `phrename -a`
|
125
|
+
_Note. `phrename` is smart enough to let the user to re-run it several times on one file. Every time `phrename -a` re-runs it only overwrites author nickname (if it is different) keeping date-time-in-the-name unchanged._
|
126
126
|
|
127
127
|
==========
|
128
128
|
|
@@ -130,7 +130,7 @@ _Note. `phrename` is smart enough to let the user to run it several times on one
|
|
130
130
|
#### Given
|
131
131
|
I have several video files taken by iPhone in my working folder `~/Desktop/assets_staging` renamed to PHTOOLS standard.
|
132
132
|
|
133
|
-
And I've found out that iPhone gives the wrong value to CreateDate tag (in my case the error is minus 2 hours to real time of creation). Because of that 'phrename' gives the wrong _YYYYmmdd-HHMMSS_ timestamp in the filename. I want to get the correct date-time info in the names of video files.
|
133
|
+
And I've found out that iPhone gives the wrong value to CreateDate tag (in my case the error is minus 2 hours to real time of creation). Because of that 'phrename' gives the wrong _YYYYmmdd-HHMMSS_ timestamp in the filename. I want to get the correct date-time info in the names of video files.
|
134
134
|
|
135
135
|
#### When
|
136
136
|
I run:
|
@@ -148,7 +148,7 @@ I get all _mov_ files in `~/Desktop/assets_staging` renamed with correct _YYYYmm
|
|
148
148
|
### PHTOOLS Standard file name
|
149
149
|
PHTOOLS standard file name looks like this: **`YYYYmmdd-HHMMSS_AAA ORIGINAL.EXT`**, where
|
150
150
|
|
151
|
-
**YYYYmmdd-HHMMSS** - photo creation datestamp (year-month-day-hours-minutes-seconds). By default PHTOOLS use the value of EXIF tag `DateTimeOriginal` or `CreateDate` for this purpose.
|
151
|
+
**YYYYmmdd-HHMMSS** - photo creation datestamp (year-month-day-hours-minutes-seconds). By default PHTOOLS use the value of EXIF tag groups `DateTimeOriginal` or `CreateDate` for this purpose _(for more details see phrename help: `phrename -h`)_.
|
152
152
|
|
153
153
|
**AAA** - author nikname. 3 character long, only latin alphabet supported.
|
154
154
|
|
data/TODO.md
CHANGED
@@ -1,16 +1,42 @@
|
|
1
|
+
### PHTOOLS Core
|
1
2
|
- [x] core - runner.rb: print class instance variables in debug mode
|
3
|
+
- [x] get rid of nesty
|
4
|
+
- [x] switch to fresh MiniExiftool gem
|
5
|
+
|
6
|
+
### phls
|
2
7
|
- [x] phls: use init method to initialize variables
|
3
8
|
- [x] phls: change -r to -R
|
4
9
|
- [ ] phls: make it work with .folders (like ftls did)
|
10
|
+
|
11
|
+
### phmove
|
5
12
|
- [x] phmove: create phmove tool based on ftarrange code (see ftools repo)
|
6
13
|
- [x] phmove: make target_folder as parameter not an option
|
7
14
|
- [x] phmove: -a (--arrange) parameter means to put photo, video, raw files into separate folders inside target. If -a is not set all files are moved to root of target directory (plain collection of files)
|
8
15
|
- [x] phmove: delete unused empty RAW and VIDEO folders
|
9
16
|
- [ ] phmove: make options to set video, raw folder names
|
17
|
+
|
18
|
+
### phrename
|
10
19
|
- [x] phrename: add -c --clean option (based on ftclname functionality)
|
11
20
|
- [x] phrename: add -s --shift_time option (based on ftfixdate functionality)
|
12
21
|
- [x] phrename: by-default read tags for DateTime in this order: DateTimeOriginal, DateCreated, CreateDate, DigitalCreationDate, FileModifyDate (eqv to File::mtime). 1st non-zero value will be taken as a master photo creation timestamp. It means no longer names like '00000101-000000_ANB IMG_0183.PNG' will appear.
|
13
22
|
- [x] phrename: make it safe and smart. Once the file was renamed to PHTOOL standard, re-run of phrename should not change the date-time info unless options -t or -s are used. If user wants to reset file name using exif tag - 1st clean it `phrename --clean`, then rename `phrename -a anb`
|
14
23
|
- [ ] phrename: make new usage mode: `phrename -t TAG`. Useful if user wants to re-set date-time using TAG keeping author-nickname unchanged
|
15
|
-
|
16
|
-
|
24
|
+
|
25
|
+
### phgettags
|
26
|
+
- [ ] create phgettags (based on ftmtags)
|
27
|
+
|
28
|
+
### phfixfmd
|
29
|
+
- [x] create phfixfmd - fix FileModifyDate to get equal to date-time-in-the-name
|
30
|
+
|
31
|
+
### phfixdto
|
32
|
+
- [ ] create phfixdto - fix MWG:DateTimeOriginal = date-time-in-name
|
33
|
+
- [ ] phfixdto: make -N --no_run option = no running exiftool script, only preparation
|
34
|
+
|
35
|
+
### phevent
|
36
|
+
- [ ] create phevent (based on ftevent)
|
37
|
+
- [ ] phevent: -T --template - gets empty template for event.yaml
|
38
|
+
|
39
|
+
### phsettags
|
40
|
+
- [ ] create phsettags (based on fttagset)
|
41
|
+
- [ ] phsettags: make -N --no_run option = no running exiftool script, only preparation
|
42
|
+
- [ ] phsettags: -T --template - gets empty templates for authors.yaml and places.yaml
|
data/exe/phfixfmd
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
# (c) ANB Andrew Bizyaev
|
4
|
+
|
5
|
+
module PhTools
|
6
|
+
tool_name = File.basename(__FILE__)
|
7
|
+
require "#{tool_name}"
|
8
|
+
|
9
|
+
file_type = FILE_TYPE_IMAGE + FILE_TYPE_VIDEO + FILE_TYPE_AUDIO
|
10
|
+
usage = <<DOCOPT
|
11
|
+
***************************************************
|
12
|
+
phtools - *Keep Your Photos In Order* (c) ANB
|
13
|
+
***************************************************
|
14
|
+
#{tool_name} changes an input file modify-date according to the date encoded
|
15
|
+
in the filename (date-time-in-the-name). Therefore the file should be renamed
|
16
|
+
to phtools Standard Name before using this command (use phrename for this).
|
17
|
+
#{tool_name} acts as a 'filter' program meaning it expects the input files
|
18
|
+
to be passed to STDIN and after the job is done it produces STDOUT with the list
|
19
|
+
of processed files. In other words this command is intended to be used with
|
20
|
+
other programs connected via pipes, e.g.:
|
21
|
+
phls | phrename -a anb | #{tool_name} | phmove ~/targed/folder
|
22
|
+
|
23
|
+
Usage:
|
24
|
+
#{tool_name} [-D]
|
25
|
+
#{tool_name} -h | --help
|
26
|
+
#{tool_name} -v | --version
|
27
|
+
|
28
|
+
Options:
|
29
|
+
-D --debug Turn on debugging (verbose) mode
|
30
|
+
-h --help Show this screen.
|
31
|
+
-v --version Show version.
|
32
|
+
DOCOPT
|
33
|
+
|
34
|
+
PhTools.const_get(tool_name.capitalize).new(usage, file_type).run!
|
35
|
+
end
|
data/lib/phfixfmd.rb
CHANGED
@@ -6,8 +6,22 @@ require 'phtools/runner'
|
|
6
6
|
|
7
7
|
module PhTools
|
8
8
|
class Phfixfmd < Runner
|
9
|
+
|
9
10
|
def self.about
|
10
|
-
"
|
11
|
+
"fixes FileModifyDate to be equal to date-time-in-the-name"
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def process_file(phfile)
|
17
|
+
fail PhTools::Error, 'wrong date-time in the name' unless
|
18
|
+
phfile.date_time_ok?
|
19
|
+
begin
|
20
|
+
File.utime(Time.now, phfile.date_time_to_time, phfile.filename)
|
21
|
+
rescue
|
22
|
+
raise PhTools::Error.new, 'setting file modify date'
|
23
|
+
end
|
24
|
+
phfile
|
11
25
|
end
|
12
26
|
end
|
13
27
|
end
|
data/lib/phtools/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phtools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Bizyaev
|
@@ -240,6 +240,7 @@ email:
|
|
240
240
|
- andrew.bizyaev@gmail.com
|
241
241
|
executables:
|
242
242
|
- phbackup
|
243
|
+
- phfixfmd
|
243
244
|
- phls
|
244
245
|
- phmove
|
245
246
|
- phrename
|
@@ -261,6 +262,7 @@ files:
|
|
261
262
|
- bin/setup
|
262
263
|
- bin/stmux
|
263
264
|
- exe/phbackup
|
265
|
+
- exe/phfixfmd
|
264
266
|
- exe/phls
|
265
267
|
- exe/phmove
|
266
268
|
- exe/phrename
|