浏览代码

add user mapping

Tobias Simetsreiter 1 年之前
父节点
当前提交
001874f66f
共有 3 个文件被更改,包括 34 次插入7 次删除
  1. 1 2
      .gitignore
  2. 32 4
      multigource.py
  3. 1 1
      multigource.sh

+ 1 - 2
.gitignore

@@ -1,2 +1 @@
-log
-mp4
+/log

+ 32 - 4
multigource.py

@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 
-from argparse import ArgumentParser,Namespace
+from argparse import ArgumentParser,Namespace,Action
 
 GIT_CMD = ["git", "log",
            "--all", '--pretty=format:user:%aN%n%ct',
@@ -81,10 +81,30 @@ def parser():
     p_select.add_argument('--file-like', default=None, type=str)
     p_select.add_argument('--user-like', default=None, type=str)
     p_select.add_argument('--user-regex', default=None, type=str)
-    p_select.add_argument('--user-overwrite', default=None, type=str)
+    p_select.add_argument('--user-mapping', default={}, action=StoreDictKeyPair)
+    p_select.add_argument('--user-file', default={}, action=YamlDict)
     p_select.set_defaults(func=select)
     return p
 
+class StoreDictKeyPair(Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        my_dict = {}
+        for kv in values.split(","):
+            k,v = kv.split("=")
+            my_dict[k] = v
+        setattr(namespace, self.dest, my_dict)
+
+class YamlDict(Action):
+     def __call__(self, parser, namespace, values, option_string=None):
+        import yaml
+        with open(values) as fd:
+            my_dict = yaml.safe_load(fd)
+        assert isinstance(my_dict, dict)
+        for k,v in my_dict.items():
+            assert isinstance(k, str)
+            assert isinstance(v, str)
+        setattr(namespace, self.dest, my_dict)
+
 def gitjoin(args: Namespace):
     import sqlite3
     import multiprocessing
@@ -192,7 +212,7 @@ def select(args: Namespace):
     with sqlite3.connect(args.output) as db:
         import re    
         def regexp(y, x, search=re.search):
-            return 1 if search(y, x) else 0
+            return 1 if search(y, x, flags=re.IGNORECASE) else 0
         db.create_function('regexp', 2, regexp)
 
         STMT = STMT_SELECT
@@ -216,7 +236,15 @@ def select(args: Namespace):
             WHERE_VERB = "AND"
         for i in db.execute(STMT + " ORDER BY time ASC", ARGS):
             # print(i)
-            username = args.user_overwrite if args.user_overwrite else i[1]
+            username = i[1]
+            for k,v in args.user_mapping.items():
+                if username == k:
+                    username = v
+                    break
+            for k,v in args.user_file.items():
+                if username == k:
+                    username = v
+                    break
 
             path = os.path.join(i[3],i[4])
             print('|'.join((str(i[0]),username,i[2],path)))

+ 1 - 1
multigource.sh

@@ -2,7 +2,7 @@
 
 SD="$(dirname $0)"
 cd "$SD"
-./multigource.py select log/log.sqlite  --user-regex "(U-AXIT\\\Tobi)|(.*Simets.*)" --user-overwrite "Tobias Simetsreiter"
+./multigource.py select log/log.sqlite --user-file ./log/usermap.yaml
 
 
 # export FFMPEG="/c/Users/tobias.simetsreiter/Downloads/ffmpeg-master-latest-win64-gpl-shared/bin/ffmpeg.exe"