From 25673e5f5af1e2f10e0d11deb0c7e12ad4446ae6 Mon Sep 17 00:00:00 2001 From: relikd Date: Sat, 19 Sep 2020 01:44:07 +0200 Subject: [PATCH] Update docu and domain index html generation --- src/README.md | 70 +++++++++++++++++++++++++++------------- src/html_root.py | 1 + src/main.py | 33 +++++++++++-------- src/tracker_download.py | 2 +- src/z_dependency.png | Bin 0 -> 39004 bytes 5 files changed, 69 insertions(+), 37 deletions(-) create mode 100644 src/z_dependency.png diff --git a/src/README.md b/src/README.md index 1eddae9..43f1aab 100644 --- a/src/README.md +++ b/src/README.md @@ -1,31 +1,55 @@ -- `main.py` -Simply call this script in a cron job or something and it will take care of everything else. -It will run the scripts below in the proper order. +![dependency](z_dependency.png) -- `3rd-domains.txt` -Contains a list of common 3rd level domains, such as `co.uk`. +## Structure -- `common_lib.py` -Library with useful functions used across multiple python scripts. +In general all `html_` scripts generate the html output and all other scripts generate intermediate or commonly used `json` files. -- `bundle_import.py` -Will copy all `*.json` files from `data/_in` to their bundle id dest folder e.g. -`mv data/_in/test.json data/com/apple/notes/id_42.json`. +### Adding new recordings +`api/v1/contribute/index.php` handles incomming recording contributions. They are automatically inserted in their appropriate folder e.g. `data/com/apple/notes`. Additionally the php places a marker (bundle-id) in `data/_in`. -- `bundle_combine.py` -Merges all `id_*.json` files from a bundle id into a single `combined.json`. -(run this script with one or multiple bundle ids as parameter.) +### Updating data +A cron job runs every minute and checks `data/_in` for new markers. If there is a new one, rebuild the app html page and all json files that are affected. +There are two special cases `_longterm` and `_manually`. In the latter case the user did not provide an appropriate app prior upload. They must be evaluated manually and completely ignored from automatic processing. +The former is self explainatory. Recordings with over an hour recording time. -- `bundle_download.py` -Download and cache app metadata from apple servers in de and en given a bundle id. Will also download the app icon and store it in the bundle id out folder. -(run this script with one or multiple bundle ids as parameter.) +**Run:** `main.py import` which does everything and avoids unnecessary rebuilding. -- `html_bundle.py` -Takes the `combined.json` file and generates the graphs and html file. -(run this script with one or multiple bundle ids as parameter.) +### Updating tracker db +Ad- and tracking domains are not automatically updated. In fact not at all. You could create a cron job for that too. Like once a week or so. -- `html_index.py` -Create all pages for the app index and link to bundle id subpages. +**Run:** `main.py tracker` which will update the db and all app pages that are affected. -- `html_root.py` -Create main `index.html`. +If you want to add custom domains, edit `api/v1/trackers/list.txt` and run the same command. + +### Delete a single app +The delete command does not delete the app result (json), only the html files. So if you rebuild the website it will reappear. This function is here for the cases where you already delete the json files, but the html output is still online. + +**Run:** `main.py del com.apple.notes com.apple.siri` + +### Development & Complete rebuild +During development or if pushing new changes to the server, you'll need to rebuild all existing html files. You can do that by rebuilding all individual apps and the app + domain indices. + +**Run:** `main.py run '*' && main.py index` + +If you are missing some icons run `main.py icons`. This should also download any missing iTunes information. E.g. App meta data like name and categories. + + +## Dependency graph + +Given A → B, B depends on A + +``` +digraph G { + "." -> html_root + "." -> bundle_download + bundle_download -> index_bundle_names + index_bundle_names -> html_bundle + index_bundle_names -> html_index + "." -> bundle_combine + bundle_combine -> index_reverse_domains + index_reverse_domains -> html_reverse_domains + bundle_combine -> html_bundle + "." -> tracker_download +} +``` +[graphviz](http://www.webgraphviz.com/) \ No newline at end of file diff --git a/src/html_root.py b/src/html_root.py index cd30635..a4e20ca 100755 --- a/src/html_root.py +++ b/src/html_root.py @@ -98,6 +98,7 @@ def process(): gen_root() # root index.thml gen_search() # root redirect.html?id=my.bundle.id gen_help() + print('') if __name__ == '__main__': diff --git a/src/main.py b/src/main.py index 872886f..30f0a5e 100755 --- a/src/main.py +++ b/src/main.py @@ -8,6 +8,7 @@ import bundle_download import html_root import html_index import html_bundle +import html_reverse_domains import index_bundle_names import index_reverse_domains import tracker_download @@ -26,28 +27,33 @@ def print_usage_and_exit(): exit(0) -def rebuild_index(inclRoot=False): +def rebuild_app_index(inclRoot=False): html_index.process() if inclRoot: # TODO: remove check if root contains dynamic content html_root.process() +def rebuild_domain_index(bundle_ids, deleteOnly=False): + index_reverse_domains.process(bundle_ids, deleteOnly=deleteOnly) + html_reverse_domains.process() + + def del_id(bundle_ids): print('removing apps from website:') if bundle_ids == ['*']: bundle_ids = list(mylib.enum_appids()) - update_index = False + update_app_index = False for bid in bundle_ids: dest = mylib.path_out_app(bid) if mylib.dir_exists(dest): print(' ' + bid) mylib.rm_dir(dest) - update_index = True + update_app_index = True print('') - index_reverse_domains.process(bundle_ids, deleteOnly=True) - if update_index: - rebuild_index() + rebuild_domain_index(bundle_ids, deleteOnly=True) + if update_app_index: + rebuild_app_index(inclRoot=True) def combine_and_update(bundle_ids, where=None): @@ -55,7 +61,7 @@ def combine_and_update(bundle_ids, where=None): new_ids = bundle_download.process(bundle_ids) # 2. if new apps, update bundle name index if len(new_ids) > 0: - index_bundle_names.process(new_ids) + index_bundle_names.process(new_ids) # after bundle_download # 3. re-calculate combined.json and evaluated.json files affected = bundle_combine.process(bundle_ids, where=where) # special case needed for reverse index. '*' will force rebuilt index @@ -63,13 +69,13 @@ def combine_and_update(bundle_ids, where=None): affected = ['*'] # 4. was any json updated? if so, make html and update reverse index if len(affected) > 0: - index_reverse_domains.process(affected) - html_bundle.process(affected) + rebuild_domain_index(affected) # after bundle_combine + html_bundle.process(affected) # after index_bundle_names else: print('no bundle affected by tracker, not generating bundle html') # 5. make all apps index if len(new_ids) > 0: - rebuild_index() # must be called after bundle_combine + rebuild_app_index() # must be called after bundle_combine else: print('no new bundle, not rebuilding index') @@ -116,12 +122,13 @@ try: import_update() elif cmd == 'tracker': tracker_update() - # tracker_download.combine_all('x') + # tracker_download.combine_all() elif cmd == 'icons': if bundle_download.download_missing_icons(force=False): - rebuild_index() + rebuild_app_index() elif cmd == 'index': - rebuild_index(inclRoot=True) + rebuild_domain_index(['*']) + rebuild_app_index(inclRoot=True) elif cmd == 'run': if len(params) == 0: print_usage_and_exit() diff --git a/src/tracker_download.py b/src/tracker_download.py index 725de0d..8f5a54f 100755 --- a/src/tracker_download.py +++ b/src/tracker_download.py @@ -117,7 +117,7 @@ def exodus(fname): return save_list(res, fname, binary=False) -def combine_all(changes): +def combine_all(changes=['_']): final = mylib.path_root('src', 'lists', 'tracker_all.txt') if changes or not mylib.file_exists(final): print(' updating: tracker_all.txt') diff --git a/src/z_dependency.png b/src/z_dependency.png new file mode 100644 index 0000000000000000000000000000000000000000..3d604826290311ee79ec433b81ffcea43b4b19b5 GIT binary patch literal 39004 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 OWPqoupUXO@geCwo{rczt literal 0 HcmV?d00001