You've already forked wakapi-readme-stats
22
README.md
22
README.md
@@ -94,23 +94,27 @@ jobs:
|
||||
with:
|
||||
WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
USERNAME: <username> # optional, it will automatically use the username of the owner of the repository who's executing the workflow.
|
||||
```
|
||||
## Extras
|
||||
|
||||
1. If you want to add the other info to your stats, you can add multiple `FLAGS` in your workflow file by default all flags are enabled
|
||||
1. If you want to add the other info to your stats, you can add multiple `FLAGS` in your workflow file by default all flags are enabled
|
||||
>except the lines of code flag due to heavy operation performed
|
||||
|
||||
```yml
|
||||
- uses: anmol098/waka-readme-stats@master
|
||||
with:
|
||||
WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
USERNAME: <username>
|
||||
SHOW_OS: "False"
|
||||
SHOW_PROJECTS: "False"
|
||||
```
|
||||
|
||||
#### Flags Available
|
||||
`SHOW_LINES_OF_CODE` flag can be set to `True` to show the Lines of code writen till date
|
||||
|
||||

|
||||
|
||||
|
||||
`SHOW_COMMIT` flag can be set to `False` to hide the commit stats
|
||||
|
||||
**I'm an early 🐤**
|
||||
@@ -120,6 +124,18 @@ jobs:
|
||||
🌃 Evening 112 commits █████████░░░░░░░░░░░░░░░░ 36.01%
|
||||
🌙 Night 26 commits ██░░░░░░░░░░░░░░░░░░░░░░░ 8.36%
|
||||
|
||||
```
|
||||
📅 **I'm Most Productive on Sundays**
|
||||
|
||||
```text
|
||||
Monday 50 commits ███░░░░░░░░░░░░░░░░░░░░░░ 13.19%
|
||||
Tuesday 85 commits █████░░░░░░░░░░░░░░░░░░░░ 22.43%
|
||||
Wednesday 56 commits ███░░░░░░░░░░░░░░░░░░░░░░ 14.78%
|
||||
Thursday 44 commits ███░░░░░░░░░░░░░░░░░░░░░░ 11.61%
|
||||
Friday 28 commits █░░░░░░░░░░░░░░░░░░░░░░░░ 7.39%
|
||||
Saturday 30 commits ██░░░░░░░░░░░░░░░░░░░░░░░ 7.92%
|
||||
Sunday 86 commits █████░░░░░░░░░░░░░░░░░░░░ 22.69%
|
||||
|
||||
```
|
||||
|
||||
`SHOW_LANGUAGE` flag can be set to `False` to hide the Coding Language You use
|
||||
|
||||
@@ -47,6 +47,11 @@ inputs:
|
||||
description: "Show the Coding language used in dev metrics"
|
||||
default: "True"
|
||||
|
||||
SHOW_LINES_OF_CODE:
|
||||
required: false
|
||||
description: "Show the Total Lines of code written Badge till date"
|
||||
default: "False"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
38
main.py
38
main.py
@@ -8,8 +8,9 @@ import base64
|
||||
import sys
|
||||
from pytz import timezone
|
||||
import pytz
|
||||
import locale
|
||||
import requests
|
||||
from github import Github, GithubException
|
||||
from github import Github
|
||||
import datetime
|
||||
from string import Template
|
||||
|
||||
@@ -26,6 +27,7 @@ showEditors = os.getenv('INPUT_SHOW_EDITORS')
|
||||
showOs = os.getenv('INPUT_SHOW_OS')
|
||||
showCommit = os.getenv('INPUT_SHOW_COMMIT')
|
||||
showLanguage = os.getenv('INPUT_SHOW_LANGUAGE')
|
||||
show_loc = os.getenv('INPUT_SHOW_LINES_OF_CODE')
|
||||
|
||||
# The GraphQL query to get commit data.
|
||||
userInfoQuery = """
|
||||
@@ -70,6 +72,17 @@ query {
|
||||
}
|
||||
""")
|
||||
|
||||
get_loc_url = Template("""/repos/$owner/$repo/stats/code_frequency""")
|
||||
|
||||
|
||||
def run_v3_api(query):
|
||||
request = requests.get('https://api.github.com' + query, headers=headers)
|
||||
if request.status_code == 200:
|
||||
return request.json()
|
||||
else:
|
||||
raise Exception(
|
||||
"Query failed to run by returning code of {}. {},... {}".format(request.status_code, query, request.json()))
|
||||
|
||||
|
||||
def run_query(query):
|
||||
request = requests.post('https://api.github.com/graphql', json={'query': query}, headers=headers)
|
||||
@@ -114,7 +127,7 @@ def generate_commit_list(tz):
|
||||
result = run_query(userInfoQuery) # Execute the query
|
||||
username = result["data"]["viewer"]["login"]
|
||||
id = result["data"]["viewer"]["id"]
|
||||
print("user {} id".format(username))
|
||||
print("user {}".format(username))
|
||||
|
||||
result = run_query(createContributedRepoQuery.substitute(username=username))
|
||||
nodes = result["data"]["user"]["repositoriesContributedTo"]["nodes"]
|
||||
@@ -133,14 +146,25 @@ def generate_commit_list(tz):
|
||||
Saturday = 0
|
||||
Sunday = 0
|
||||
|
||||
total_loc = 0
|
||||
|
||||
for repository in repos:
|
||||
if show_loc.lower() in ['true', '1', 't', 'y', 'yes']:
|
||||
try:
|
||||
datas = run_v3_api(get_loc_url.substitute(owner=repository["owner"]["login"], repo=repository["name"]))
|
||||
for data in datas:
|
||||
total_loc = total_loc + data[1] - data[2]
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
result = run_query(
|
||||
createCommittedDateQuery.substitute(owner=repository["owner"]["login"], name=repository["name"], id=id))
|
||||
try:
|
||||
committed_dates = result["data"]["repository"]["ref"]["target"]["history"]["edges"]
|
||||
for committedDate in committed_dates:
|
||||
date = datetime.datetime.strptime(committedDate["node"]["committedDate"],
|
||||
"%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=pytz.utc).astimezone(timezone(tz))
|
||||
"%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=pytz.utc).astimezone(
|
||||
timezone(tz))
|
||||
hour = date.hour
|
||||
weekday = date.strftime('%A')
|
||||
if 6 <= hour < 12:
|
||||
@@ -199,6 +223,10 @@ def generate_commit_list(tz):
|
||||
if day['percent'] > max_element['percent']:
|
||||
max_element = day
|
||||
days_title = 'I\'m Most Productive on ' + max_element['name'] + 's'
|
||||
if show_loc.lower() in ['true', '1', 't', 'y', 'yes']:
|
||||
string = string + ' + '%20Lines%20of%20code-blue)\n\n'
|
||||
string = string + '**' + title + '** \n\n' + '```text\n' + make_commit_list(one_day) + '\n\n```\n'
|
||||
string = string + '📅 **' + days_title + '** \n\n' + '```text\n' + make_commit_list(dayOfWeek) + '\n\n```\n'
|
||||
|
||||
@@ -211,7 +239,7 @@ def get_stats():
|
||||
|
||||
request = requests.get(f"https://wakatime.com/api/v1/users/current/stats/last_7_days?api_key={waka_key}")
|
||||
|
||||
if request.status_code == 200:
|
||||
if request.status_code != 401:
|
||||
data = request.json()
|
||||
if showCommit.lower() in ['true', '1', 't', 'y', 'yes']:
|
||||
stats = stats + generate_commit_list(tz=data['data']['timezone']) + '\n\n'
|
||||
@@ -282,4 +310,4 @@ if __name__ == '__main__':
|
||||
new_readme = generate_new_readme(stats=waka_stats, readme=rdmd)
|
||||
if new_readme != rdmd:
|
||||
repo.update_file(path=contents.path, message='Updated with Dev Metrics',
|
||||
content=new_readme, sha=contents.sha, branch='master')
|
||||
content=new_readme, sha=contents.sha, branch='master')
|
||||
|
||||
Reference in New Issue
Block a user