phtools 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.md +11 -0
- data/TODO.md +3 -2
- data/exe/phls +6 -2
- data/lib/phls.rb +13 -2
- data/lib/phtools/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 78670fe468c1b5d9bbf25c5a5d8460a408354f36
|
|
4
|
+
data.tar.gz: 2566973828624a1aa604b02c0916d46cdec09b55
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9fac26d39ead526578a63fac032a39884dec6520b7220da590e476a86bc75013c4cd1490d90af61d22e0e36d49bd1b077bb4d5a40c7cca0db13b4c6cc6a66612
|
|
7
|
+
data.tar.gz: 59fe892d791534da62fbc2e94d675eb38b4fc230ab40ce801601d21d887c9fe47ebad22a99ad5b20237e52d47dc2f9496189888328f698852bff6efec75cfab2
|
data/History.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# RELEASED
|
|
2
2
|
|
|
3
|
+
## [v0.15.0](https://github.com/andrewbiz/phtools/compare/v0.14.0...v0.15.0)
|
|
4
|
+
* phls now supports --range parameter allowing the user to filter files which name endings are not in the given range
|
|
5
|
+
|
|
6
|
+
## [v0.14.0](https://github.com/andrewbiz/phtools/compare/v0.10.0...v0.14.0)
|
|
7
|
+
* ruby version required >= 2.4.0
|
|
8
|
+
* phmove: now default TARGET_FOLDER is '.'
|
|
9
|
+
* added 3gp video files support
|
|
10
|
+
* phls: sort files in alphabet order
|
|
11
|
+
* phrename: added new mode - manual rename. User sets date-time-in-the-name, increment and header to generate filename
|
|
12
|
+
* code refactor (code optimizations, ruby 2.4.2 adaptation, new rubocop rules)
|
|
13
|
+
|
|
3
14
|
## [v0.10.0](https://github.com/andrewbiz/phtools/compare/v0.8.0...v0.10.0)
|
|
4
15
|
* phgettags added to the bundle
|
|
5
16
|
* phfixdto added to the bundle
|
data/TODO.md
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
### phls
|
|
7
7
|
- [x] phls: use init method to initialize variables
|
|
8
8
|
- [x] phls: change -r to -R
|
|
9
|
-
- [ ] phls: make it work with .folders (like ftls did)
|
|
10
9
|
- [x] phls: sort files in alphabet order
|
|
10
|
+
- [x] phls: support --range parameter to filter files which belong to the range
|
|
11
|
+
- [ ] phls: make it work with .folders (like ftls did)
|
|
11
12
|
|
|
12
13
|
### phmove
|
|
13
14
|
- [x] phmove: create phmove tool based on ftarrange code (see ftools repo)
|
|
@@ -22,9 +23,9 @@
|
|
|
22
23
|
- [x] phrename: add -s --shift_time option (based on ftfixdate functionality)
|
|
23
24
|
- [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.
|
|
24
25
|
- [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`
|
|
26
|
+
- [x] phrename: new mode 'manual rename' renames files using given date-time template, author name and prefix. Good for mass renaming of the scanned films and photos (when date-time is not set in the tags and only human knows the real date-time)
|
|
25
27
|
- [ ] phrename: make new usage mode: `phrename -t TAG`. Useful if user wants to re-set date-time using TAG keeping author-nickname unchanged
|
|
26
28
|
- [ ] phrename: add QuickTime.CreationDate into analysis when calculate date-time-in-the-name (useful for iOS mov files). In iOS QuickTime.CreateDate is wrong (always in Grinvich zone), while QuickTime.CreationDate is Ok
|
|
27
|
-
- [ ] phrename: new mode 'manual rename' renames files using given date-time template, author name and prefix. Good for mass renaming of the scanned films and photos (when date-time is not set in the tags and only human knows the real date-time)
|
|
28
29
|
|
|
29
30
|
### phgettags
|
|
30
31
|
- [x] create phgettags (based on ftmtags)
|
data/exe/phls
CHANGED
|
@@ -30,14 +30,18 @@ module PhTools
|
|
|
30
30
|
sends all found phtools friendly files filtered with *aaa* to phrename command.
|
|
31
31
|
|
|
32
32
|
Usage:
|
|
33
|
-
#{tool_name} [-D] [-R] [DIR_OR_FILEMASK...]
|
|
33
|
+
#{tool_name} [-D] [-R] [DIR_OR_FILEMASK...] [-r RANGE]
|
|
34
34
|
#{tool_name} -h | --help
|
|
35
35
|
#{tool_name} -v | --version
|
|
36
36
|
|
|
37
37
|
Options:
|
|
38
38
|
-D --debug Turn on debugging (verbose) mode
|
|
39
39
|
-R --recursive Recursively scan directories
|
|
40
|
-
-
|
|
40
|
+
-r RANGE --range=RANGE Sets the range of filename endings to be included
|
|
41
|
+
into the output. Example: -r '05..07' will take only files
|
|
42
|
+
with the filename endings 05, 06, 07 and will not take
|
|
43
|
+
any other files
|
|
44
|
+
-h --help Show this screen
|
|
41
45
|
-v --version Show version.
|
|
42
46
|
DOCOPT
|
|
43
47
|
|
data/lib/phls.rb
CHANGED
|
@@ -14,7 +14,7 @@ module PhTools
|
|
|
14
14
|
|
|
15
15
|
def run!
|
|
16
16
|
@dirs_to_scan.each do |dir|
|
|
17
|
-
fmask = File.join(dir, @
|
|
17
|
+
fmask = File.join(dir, @recursive ? '**' : '', "{#{@filemasks * ','}}")
|
|
18
18
|
files = Dir.glob(fmask, File::FNM_CASEFOLD)
|
|
19
19
|
files_sorted = files.sort_by(&:downcase)
|
|
20
20
|
files_sorted.each { |f| output_file(PhFile.new(f)) if File.file?(f) }
|
|
@@ -37,10 +37,21 @@ module PhTools
|
|
|
37
37
|
end
|
|
38
38
|
@dirs_to_scan = ['.'] if @dirs_to_scan.empty?
|
|
39
39
|
@filemasks = ['*.*'] if @filemasks.empty?
|
|
40
|
+
@recursive = @options_cli['--recursive']
|
|
41
|
+
@range = @options_cli['--range']
|
|
42
|
+
return unless @range
|
|
43
|
+
/^(?<_range1>[[:alnum:]]+)\.\.(?<_range2>[[:alnum:]]+)/ =~ @range
|
|
44
|
+
@range_start = Regexp.last_match(:_range1)
|
|
45
|
+
@range_end = Regexp.last_match(:_range2)
|
|
46
|
+
@ending_size = [@range_start.size, @range_end.size].max
|
|
40
47
|
end
|
|
41
48
|
|
|
42
49
|
def output_file(phfile)
|
|
43
|
-
|
|
50
|
+
return unless @file_type.include?(phfile.type)
|
|
51
|
+
if @range
|
|
52
|
+
return unless (@range_start..@range_end).cover?(phfile.basename_clean.slice(-@ending_size, @ending_size))
|
|
53
|
+
end
|
|
54
|
+
@os.output(phfile)
|
|
44
55
|
end
|
|
45
56
|
end
|
|
46
57
|
end
|
data/lib/phtools/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: phtools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.15.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Bizyaev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-11-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|