Add time range as a parameter (#75)

* Add time range as a parameter

* Update the format of time range title; validate the json from wakatime API

* Update README to introduce TIME_RANGE parameter

Authored by: @jameshwc
This commit is contained in:
jameshwc
2022-02-21 09:58:47 +08:00
committed by GitHub
parent 645f70e0c2
commit 1b31f85a36
3 changed files with 45 additions and 19 deletions

36
main.py
View File

@@ -25,14 +25,15 @@ show_total = os.getenv("INPUT_SHOW_TOTAL")
commit_message = os.getenv("INPUT_COMMIT_MESSAGE")
blocks = os.getenv("INPUT_BLOCKS")
show_time = os.getenv("INPUT_SHOW_TIME")
time_range = os.getenv("INPUT_TIME_RANGE")
def this_week() -> str:
'''Returns a week streak'''
week_end = datetime.datetime.today() - datetime.timedelta(days=1)
week_start = week_end - datetime.timedelta(days=6)
print("Week header created")
return f"Week: {week_start.strftime('%d %B, %Y')} - {week_end.strftime('%d %B, %Y')}"
def title(start: str, end: str) -> str:
'''Returns a title of time range'''
start_date = datetime.datetime.strptime(start, '%Y-%m-%dT%H:%M:%SZ')
end_date = datetime.datetime.strptime(end, '%Y-%m-%dT%H:%M:%SZ')
print("Title created")
return f"From: {start_date.strftime('%d %B, %Y')} - To: {end_date.strftime('%d %B, %Y')}\n\n"
def make_graph(percent: float, ip_blocks: str, length: int = GRAPH_LENGTH) -> str:
@@ -49,19 +50,29 @@ def make_graph(percent: float, ip_blocks: str, length: int = GRAPH_LENGTH) -> st
return graph
def get_stats() -> str:
def get_stats(range: str = 'last_7_days') -> str:
'''Gets API data and returns markdown progress'''
encoded_key: str = str(base64.b64encode(waka_key.encode('utf-8')), 'utf-8')
data = requests.get(
f"{api_base_url.rstrip('/')}/v1/users/current/stats/last_7_days",
f"{api_base_url.rstrip('/')}/v1/users/current/stats/{range}",
headers={
"Authorization": f"Basic {encoded_key}"
}).json()
if 'errors' in data and 'Unauthorized.' in data['errors']:
print("Please Add your correct WakaTime API Key to the Repository Secrets")
sys.exit(1)
elif 'error' in data and data['error'] == 'Invalid time range':
print("Please Input the correct time range (e.g. last_7_days, last_30_days)")
sys.exit(1)
try:
start = data['data']['start']
end = data['data']['end']
lang_data = data['data']['languages']
total_data = data['data']['human_readable_total']
except KeyError:
print("Please Add your WakaTime API Key to the Repository Secrets")
print("Unknown KeyError")
sys.exit(1)
if show_time == 'true':
@@ -96,8 +107,9 @@ def get_stats() -> str:
return_text = '```text\n'
if show_title == 'true':
print("Stats with Weeks in Title Generated")
return_text += this_week()+'\n\n'
print("Stats with Time Range in Title Generated")
range_title = title(start, end)
return_text += range_title
if show_total == 'true':
print("add Total time")
return_text += 'Total: ' + total_data+'\n\n'
@@ -128,7 +140,7 @@ if __name__ == '__main__':
print("Invalid string blocks. Please provide string with 2 or more characters. Eg. '░▒▓█'")
sys.exit(1)
contents = repo.get_readme()
waka_stats = get_stats()
waka_stats = get_stats(time_range)
rdmd = decode_readme(contents.content)
new_readme = generate_new_readme(stats=waka_stats, readme=rdmd)
if new_readme != rdmd: