Files
appchk-web/src/html_root.py
2020-09-19 16:10:56 +02:00

106 lines
3.3 KiB
Python
Executable File

#!/usr/bin/env python3
import common_lib as mylib
def gen_root():
with open(mylib.path_out('index.html'), 'w') as fp:
fp.write(mylib.template_with_base('''
<h2>About</h2>
<div class="squeeze">
<p>
Information about the research project will be added soon. Stay tuned.
</p>
<a id="get-appcheck" class="no-ul" href="https://testflight.apple.com/join/9jjaFeHO" target="_blank">
<img src="/static/appcheck.svg" alt="app-icon" width="30" height="30">
<p>
Get the iOS App and contribute.<br />
Join the TestFlight Beta.
</p>
</a>
<p>
The source code of the app is available <a href="https://github.com/relikd/appcheck/" target="_blank">on GitHub</a>.
</p>
<h2>Results</h2>
<p>
If you're just interested in the results, go ahead to see <a href="/index/apps/1/">all apps</a>.
</p>
<h2>Current research</h2>
<p>
We have an ongoing research project open. Your help is highly appreciated. <br>
For mor infos follow <a href="/help/">this link</a>.
</p>
</div>
'''))
def gen_help():
many = 7
txt = '''<h2>Help needed!</h2>
<div class="squeeze">
<p>
This study contains two stages. This is the first one.
We have selected a random sample of applications for evaluation.
We want to track the app behviour over a longer period of time.
</p><p>
You can help us by providing app recordings of the following application.
The more you record the better.
Ideally you could do recordings for all the apps below.
But really, even if you only find time for a single recording, anything helps!
</p><p>
We need at least {} recordings per app. Stage 2 will follow in a few weeks.
Get the <a href="https://testflight.apple.com/join/9jjaFeHO" target="_blank">Testflight beta</a>.
</p>
</div>
<div class="help-links">'''.format(many)
obj = mylib.json_read(mylib.path_root('src', 'help.json'))
for land in sorted(obj.keys()):
txt += '\n<h3>{}:</h3>\n<table>'.format(land)
for i, x in enumerate(obj[land]):
bid = x[2]
asurl = 'https://apps.apple.com/de/app/id{}'.format(x[1])
try:
count = len(mylib.json_read_combined(bid)['rec_len'])
except Exception:
count = 0
rr = '<span class="{}"><b>{}</b>/{}</span> recordings'.format(
'done' if count >= many else 'notyet', count, many)
txt += '''
<tr><td>{0}</td>
<td><a href="/app/{1}/">{2}</a></td>
<td>{3}</td>
<td><a href="{4}" target="_blank">{4}</a></td>
</tr>'''.format(i + 1, bid, x[0], rr, asurl)
txt += '</table>'
txt += '</div>'
mylib.mkdir(mylib.path_out('help'))
with open(mylib.path_out('help', 'index.html'), 'w') as fp:
fp.write(mylib.template_with_base(txt))
def gen_search():
with open(mylib.path_out('redirect.html'), 'w') as fp:
fp.write(mylib.template_with_base('''
<h2>Redirecting …</h2>
<script type="text/javascript">
var GET={};
window.location.search.substr(1).split("&").forEach(function(x){GET[x.split("=")[0]]=x.split("=")[1]});
if (GET["id"]) { window.location = "/app/" + GET["id"] + "/"; }
</script>'''))
def process():
print('generating root html ...')
gen_root() # root index.thml
gen_search() # root redirect.html?id=my.bundle.id
gen_help()
print('')
if __name__ == '__main__':
process()