MCPcopy
hub / github.com/HelloZeroNet/ZeroNet / query

Function query

src/util/QueryJson.py:31–62  ·  view source on GitHub ↗
(path_pattern, filter)

Source from the content-addressed store, hash-verified

29# Find in json files
30# Return: [{u'body': u'Hello Topic 1!!', 'inner_path': '1KRxE1...beEp6', u'added': 1422740732, u'message_id': 1},...]
31def query(path_pattern, filter):
32 if "=" in filter: # Filter by value
33 filter_path, filter_val = filter.split("=")
34 filter_path = filter_path.split(".")
35 filter_key = filter_path.pop() # Last element is the key
36 filter_val = int(filter_val)
37 else: # No filter
38 filter_path = filter
39 filter_path = filter_path.split(".")
40 filter_key = None
41 filter_val = None
42
43 if "/*/" in path_pattern: # Wildcard search
44 root_dir, file_pattern = path_pattern.replace("\\", "/").split("/*/")
45 else: # No wildcard
46 root_dir, file_pattern = re.match("(.*)/(.*?)$", path_pattern.replace("\\", "/")).groups()
47 for root, dirs, files in os.walk(root_dir, topdown=False):
48 root = root.replace("\\", "/")
49 inner_path = root.replace(root_dir, "").strip("/")
50 for file_name in files:
51 if file_pattern != file_name:
52 continue
53
54 try:
55 res = queryFile(root + "/" + file_name, filter_path, filter_key, filter_val)
56 if not res:
57 continue
58 except Exception: # Json load error
59 continue
60 for row in res:
61 row["inner_path"] = inner_path
62 yield row
63
64
65if __name__ == "__main__":

Callers 1

QueryJson.pyFile · 0.85

Calls 2

queryFileFunction · 0.85
walkMethod · 0.45

Tested by

no test coverage detected