test_tools
data_collector.py
Go to the documentation of this file.
1 #!/usr/bin/python
2 
3 """Data collector
4 
5 Usage:
6  data_collector.py <name> <start_time> <end_time> [--go]
7  data_collector.py (-h | --help)
8  data_collector.py --version
9 
10 Examples:
11  data_collector.py reo2016_challenge_navigation 15:30 15:40
12  data_collector.py rwc_2016_challenge_restaurant 15:30 now
13  data_collector.py rwc_2016_challenge_speech_recognition 15:30 2015-03-02 17:40 2015-04-08
14 
15 Options:
16  -h --help Show this screen.
17 
18 """
19 
20 from __future__ import print_function
21 
22 import os
23 import shutil
24 from datetime import datetime
25 from docopt import docopt
26 from glob import glob
27 
28 from util import get_modification_date, parse_start_end
29 
30 GLOBS = {
31  "faces": ["/tmp/faces/*.jpeg"],
32  "hmi": ["/tmp/hmi/*.json"],
33  "speech": ["/tmp/*.wav"],
34  "mapping_data_plans_and_audio": ["/tmp/*.bag"],
35  "objects" : [os.path.expanduser("~/ed/kinect/*/*.*"), os.path.expanduser("~/ed/kinect/*/*/*.*")]
36 }
37 
38 
39 def del_empty_dirs(s_dir):
40  b_empty = True
41 
42  for s_target in os.listdir(s_dir):
43  s_path = os.path.join(s_dir, s_target)
44  if os.path.isdir(s_path):
45  if not del_empty_dirs(s_path):
46  b_empty = False
47  else:
48  b_empty = False
49 
50  if b_empty:
51  print('del: %s' % s_dir)
52  os.rmdir(s_dir)
53 
54 if __name__ == '__main__':
55  now = datetime.now()
56 
57  arguments = docopt(__doc__, version='Data Collector 1.0')
58 
59  start, end = parse_start_end(arguments, now)
60  name = arguments["<name>"]
61 
62  print("I am going to collect data for '%s'" % name)
63  print("Datetime: [%s <--> %s]" % (start.strftime("%Y-%m-%d %H:%M"), end.strftime("%Y-%m-%d %H:%M")))
64 
65  if not arguments["--go"]:
66  raw_input("Press Enter to continue...")
67 
68  # Create dir if exist
69  if not os.path.exists(name):
70  os.makedirs(name)
71 
72  # Copy files
73  for cat_name, glob_entries in GLOBS.items():
74  dir_name = name + "/" + cat_name
75  if not os.path.exists(dir_name):
76  os.makedirs(dir_name)
77 
78  for glob_entry in glob_entries:
79  for file_name in glob(glob_entry):
80  # Check if modification date is between bounds (or unknown)
81  mod_date = get_modification_date(file_name)
82  if not mod_date or start < mod_date < end:
83  print("Writing file '%s' to '%s'" % (file_name, dir_name))
84  shutil.copy(file_name, dir_name)
85 
86  del_empty_dirs(name)
util.get_modification_date
def get_modification_date(file_name)
Definition: util.py:8
data_collector.del_empty_dirs
def del_empty_dirs(s_dir)
Definition: data_collector.py:39
util.parse_start_end
def parse_start_end(args, current)
Definition: util.py:18