You've already forked wakapi-readme-stats
FEAT: LINES OF CODE BADGE
This commit is contained in:
@@ -47,6 +47,11 @@ inputs:
|
|||||||
description: "Show the Coding language used in dev metrics"
|
description: "Show the Coding language used in dev metrics"
|
||||||
default: "True"
|
default: "True"
|
||||||
|
|
||||||
|
SHOW_LINES_OF_CODE:
|
||||||
|
required: false
|
||||||
|
description: "Show the Total Lines of code written Badge till date"
|
||||||
|
default: "False"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
34
main.py
34
main.py
@@ -8,8 +8,9 @@ import base64
|
|||||||
import sys
|
import sys
|
||||||
from pytz import timezone
|
from pytz import timezone
|
||||||
import pytz
|
import pytz
|
||||||
|
import locale
|
||||||
import requests
|
import requests
|
||||||
from github import Github, GithubException
|
from github import Github
|
||||||
import datetime
|
import datetime
|
||||||
from string import Template
|
from string import Template
|
||||||
|
|
||||||
@@ -26,6 +27,7 @@ showEditors = os.getenv('INPUT_SHOW_EDITORS')
|
|||||||
showOs = os.getenv('INPUT_SHOW_OS')
|
showOs = os.getenv('INPUT_SHOW_OS')
|
||||||
showCommit = os.getenv('INPUT_SHOW_COMMIT')
|
showCommit = os.getenv('INPUT_SHOW_COMMIT')
|
||||||
showLanguage = os.getenv('INPUT_SHOW_LANGUAGE')
|
showLanguage = os.getenv('INPUT_SHOW_LANGUAGE')
|
||||||
|
show_loc = os.getenv('INPUT_LINES_OF_CODE')
|
||||||
|
|
||||||
# The GraphQL query to get commit data.
|
# The GraphQL query to get commit data.
|
||||||
userInfoQuery = """
|
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):
|
def run_query(query):
|
||||||
request = requests.post('https://api.github.com/graphql', json={'query': query}, headers=headers)
|
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
|
result = run_query(userInfoQuery) # Execute the query
|
||||||
username = result["data"]["viewer"]["login"]
|
username = result["data"]["viewer"]["login"]
|
||||||
id = result["data"]["viewer"]["id"]
|
id = result["data"]["viewer"]["id"]
|
||||||
print("user {} id".format(username))
|
print("user {}".format(username))
|
||||||
|
|
||||||
result = run_query(createContributedRepoQuery.substitute(username=username))
|
result = run_query(createContributedRepoQuery.substitute(username=username))
|
||||||
nodes = result["data"]["user"]["repositoriesContributedTo"]["nodes"]
|
nodes = result["data"]["user"]["repositoriesContributedTo"]["nodes"]
|
||||||
@@ -133,14 +146,25 @@ def generate_commit_list(tz):
|
|||||||
Saturday = 0
|
Saturday = 0
|
||||||
Sunday = 0
|
Sunday = 0
|
||||||
|
|
||||||
|
total_loc = 0
|
||||||
|
|
||||||
for repository in repos:
|
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(
|
result = run_query(
|
||||||
createCommittedDateQuery.substitute(owner=repository["owner"]["login"], name=repository["name"], id=id))
|
createCommittedDateQuery.substitute(owner=repository["owner"]["login"], name=repository["name"], id=id))
|
||||||
try:
|
try:
|
||||||
committed_dates = result["data"]["repository"]["ref"]["target"]["history"]["edges"]
|
committed_dates = result["data"]["repository"]["ref"]["target"]["history"]["edges"]
|
||||||
for committedDate in committed_dates:
|
for committedDate in committed_dates:
|
||||||
date = datetime.datetime.strptime(committedDate["node"]["committedDate"],
|
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
|
hour = date.hour
|
||||||
weekday = date.strftime('%A')
|
weekday = date.strftime('%A')
|
||||||
if 6 <= hour < 12:
|
if 6 <= hour < 12:
|
||||||
@@ -199,6 +223,10 @@ def generate_commit_list(tz):
|
|||||||
if day['percent'] > max_element['percent']:
|
if day['percent'] > max_element['percent']:
|
||||||
max_element = day
|
max_element = day
|
||||||
days_title = 'I\'m Most Productive on ' + max_element['name'] + 's'
|
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 + '**' + 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'
|
string = string + '📅 **' + days_title + '** \n\n' + '```text\n' + make_commit_list(dayOfWeek) + '\n\n```\n'
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user