Used Wakatime API
This commit is contained in:
parent
50bc9e60c7
commit
74594fa648
18
README.md
18
README.md
@ -2,18 +2,28 @@
|
|||||||
|
|
||||||
[Wakatime](https://wakatime.com) Weekly Metrics on your Profile Readme
|
[Wakatime](https://wakatime.com) Weekly Metrics on your Profile Readme
|
||||||
|
|
||||||
|
## Update your Readme
|
||||||
|
|
||||||
|
Add a comment to your README like the follows
|
||||||
|
|
||||||
|
```md
|
||||||
|
<!--START_SECTION:waka-->
|
||||||
|
<!--END_SECTION:waka-->
|
||||||
|
```
|
||||||
|
|
||||||
|
The lines will be our entrypoints for our metrics.
|
||||||
|
|
||||||
## How to get it
|
## How to get it
|
||||||
**You Need to Have [waka-box](https://github.com/matchai/waka-box) in your Repo**
|
|
||||||
> *This maybe temporary and will be updated soon as I'll update this to an Action*
|
|
||||||
|
|
||||||
- Clone the Repo
|
- Clone the Repo
|
||||||
- Install the dependencies `pip install -r requirements.txt`
|
- Install the dependencies `pip install -r requirements.txt`
|
||||||
- Get a GitHub Access Token with a `repo` scope
|
- Get a GitHub Access Token with a `repo` scope.
|
||||||
|
- Get your Wakatime API Key.
|
||||||
- Load env vars like
|
- Load env vars like
|
||||||
|
|
||||||
```text
|
```text
|
||||||
GH_TOKEN = <ghtoken>
|
GH_TOKEN = <ghtoken>
|
||||||
GIST_ID = <gist_id of the waka-box gist>
|
WAKATIME_API_KEY = <your wakatime API Key>
|
||||||
USERNAME = <github_username>
|
USERNAME = <github_username>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
35
main.py
35
main.py
@ -9,28 +9,49 @@ END_COMMENT = '<!--END_SECTION:waka-->'
|
|||||||
listReg = f'{START_COMMENT}[\\s\\S]+{END_COMMENT}'
|
listReg = f'{START_COMMENT}[\\s\\S]+{END_COMMENT}'
|
||||||
|
|
||||||
user = os.getenv("USERNAME")
|
user = os.getenv("USERNAME")
|
||||||
gistid = os.getenv("GIST_ID")
|
waka_key = os.getenv("WAKATIME_API_KEY")
|
||||||
ghtoken = os.getenv("GH_TOKEN")
|
ghtoken = os.getenv("GH_TOKEN")
|
||||||
|
|
||||||
|
|
||||||
|
def makeGraph(percent: float):
|
||||||
|
done_block = "█"
|
||||||
|
empty_block = "░"
|
||||||
|
pc_rnd = round(percent)
|
||||||
|
return (f'{done_block*int(pc_rnd/4)}{empty_block*int( 25-int(pc_rnd/4))}')
|
||||||
|
|
||||||
|
|
||||||
def getStats():
|
def getStats():
|
||||||
data = requests.get(f"https://gist.githubusercontent.com/{user}/{gistid}/raw/").text
|
data = requests.get(
|
||||||
|
f"https://wakatime.com/api/v1/users/current/stats/last_7_days?api_key={waka_key}").json()
|
||||||
|
lang_data = data['data']['languages']
|
||||||
|
data_list = []
|
||||||
|
for l in lang_data[:5]:
|
||||||
|
ln = len(l['name'])
|
||||||
|
ln_text = len(l['text'])
|
||||||
|
op = f"{l['name']}{' '*(12-ln)}{l['text']}{' '*(20-ln_text)}{makeGraph(l['percent'])} {l['percent']}"
|
||||||
|
data_list.append(op)
|
||||||
|
data = " \n".join(data_list)
|
||||||
return ("```text\n"+data+"\n```")
|
return ("```text\n"+data+"\n```")
|
||||||
|
|
||||||
def decodeReadme(data:str):
|
|
||||||
|
def decodeReadme(data: str):
|
||||||
decodedBytes = base64.b64decode(data)
|
decodedBytes = base64.b64decode(data)
|
||||||
decodedStr = str(decodedBytes, "utf-8")
|
decodedStr = str(decodedBytes, "utf-8")
|
||||||
return decodedStr
|
return decodedStr
|
||||||
|
|
||||||
def generatenewReadme(stats:str,readme:str):
|
|
||||||
|
def generatenewReadme(stats: str, readme: str):
|
||||||
statsinReadme = f"{START_COMMENT}\n{stats}\n{END_COMMENT}"
|
statsinReadme = f"{START_COMMENT}\n{stats}\n{END_COMMENT}"
|
||||||
newReadme = re.sub(listReg,statsinReadme,readme)
|
newReadme = re.sub(listReg, statsinReadme, readme)
|
||||||
return newReadme
|
return newReadme
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
g = Github(ghtoken)
|
g = Github(ghtoken)
|
||||||
repo = g.get_repo(f"{user}/{user}")
|
repo = g.get_repo(f"{user}/{user}")
|
||||||
contents = repo.get_readme()
|
contents = repo.get_readme()
|
||||||
stats = getStats()
|
stats = getStats()
|
||||||
rdmd = decodeReadme(contents.content)
|
rdmd = decodeReadme(contents.content)
|
||||||
newreadme = generatenewReadme(stats=stats,readme=rdmd)
|
newreadme = generatenewReadme(stats=stats, readme=rdmd)
|
||||||
repo.update_file(path=contents.path,message="Updated with Dev Metrics",content=newreadme,sha=contents.sha,branch="master")
|
repo.update_file(path=contents.path, message="Updated with Dev Metrics",
|
||||||
|
content=newreadme, sha=contents.sha, branch="master")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user