-n, --dry-run option
[mob/metatag] / metatag_rules.lua
1 -- metatag     Metadata extraction utility
2 -- Copyright (C) 2014  Christian Th├Ąter <ct@pipapo.org>
3 --
4 -- This program is free software: you can redistribute it and/or modify
5 -- it under the terms of the GNU General Public License as published by
6 -- the Free Software Foundation, either version 3 of the License, or
7 -- (at your option) any later version.
8 --
9 -- This program is distributed in the hope that it will be useful,
10 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
11 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 -- GNU General Public License for more details.
13 --
14 -- You should have received a copy of the GNU General Public License
15 -- along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 DOC.genopts = DOC.genopts.."\n"..[[
18  gitexclude
19   exclude the '.git*' folders and files
20 ]]
21 if options.gitexclude or options.gitannex then
22    Meta:Exclude ("^/$=%.git")
23 end
24
25 DOC.genopts = DOC.genopts.."\n"..[[
26  nobackup
27   exclude the backup files (by mime type)
28 ]]
29 if options.nobackup then
30    Meta:Exclude ("mime=application/x%-trash")
31 end
32
33
34 Meta:Rule (
35    "^/$=",
36    "stat"
37 )
38
39 DOC.genopts = DOC.genopts.."\n"..[[
40  recursive
41   descend into subdirectories
42 ]]
43 if options.recursive then
44    Meta:Rule (
45       "stat.type=dir",
46       "recurse_directory",
47       "stop"
48    )
49 else
50    Meta:Rule (
51       "stat.type=dir",
52       "stop"
53    )
54 end
55
56
57 DOC.genopts = DOC.genopts.."\n"..[[
58  gitannex[=overwrite]
59   only process files which are annexed in gitannex (symlink to .git/annex/objects).
60   The 'overwrite' option controls the way the gitannex exporter adds metadata to files.
61   Also enables and selects "gitannex:-stat" as default exporter.
62 ]]
63 if options.gitannex then
64    Meta:Rule (
65       "stat%.link=%.git/annex/objects/",
66       "mime_type"
67    )
68
69    Meta:Rule (
70       "stat%.link~=%.git/annex/objects/",
71       "stop"
72    )
73
74    default_exporter = {"gitannex:-stat"}
75 else
76    Meta:Rule (
77       "stat%.type=reg",
78       "mime_type"
79    )
80 end
81
82
83 Meta:Rule (
84    "mime=text/.*",
85    "wc",
86    "mime_encoding"
87 )
88
89
90 if shexists("exiftags") then
91    Meta:Rule (
92       "mime=image/jpeg",
93       "exiftags"
94    )
95 end
96
97 DOC.genopts = DOC.genopts.."\n"..[[
98  date_split
99   activate a rules which splits dates into single (".year=", ".month=", ".day=", ".hour=",
100   ".minute=",".second=") subcomponents.
101 ]]
102 if options.date_split then
103    Meta:Rule (
104       ".-=%d*[:/]%d*[:/]%d*%s*%d*:%d*:%d*",
105       "date_split"
106    )
107
108    Meta:Rule (
109       ".-=%d*[.]%d*[.]%d*%s*%d*:%d*:%d*",
110       "date_split_de"
111    )
112 end
113
114
115
116 Meta:Rule (
117    "exif%.image_created=",
118    "event_by_date"
119 )
120
121
122 if shexists("mplayer") then
123    Meta:Rule (
124       "mime=video/.*",
125       "mplayer"
126    )
127
128    Meta:Rule (
129       "mime=audio/.*",
130       "mplayer"
131    )
132 end
133
134
135 DOC.genopts = DOC.genopts.."\n"..[[
136  timetosecs
137   activate a rule which translates HH:MM:ss.sss time format into seconds.
138 ]]
139 if options.timetosecs then
140    Meta:Rule (
141       ".*=%d+:%d+:%d+%.%d+",
142       "time_to_secs"
143    )
144 end
145