Merge branch 'pull72' into Alpha

# Conflicts:
#	translation.json
This commit is contained in:
Anmol
2020-08-20 13:52:02 +05:30
22 changed files with 4664 additions and 4499 deletions

View File

@@ -1,15 +0,0 @@
INPUT_WAKATIME_API_KEY=a-f5a6a1f04d31
INPUT_GH_TOKEN=4204a
INPUT_SHOW_TIMEZONE=y
INPUT_SHOW_PROJECTS=y
INPUT_SHOW_EDITORS=y
INPUT_SHOW_OS=y
INPUT_SHOW_COMMIT=y
INPUT_SHOW_LANGUAGE=y
INPUT_SHOW_LANGUAGE_PER_REPO=y
INPUT_SHOW_LOC_CHART=n
INPUT_SHOW_LINES_OF_CODE=y
INPUT_SHOW_DAYS_OF_WEEK=y
INPUT_SHOW_PROFILE_VIEWS=y
INPUT_SHOW_SHORT_INFO=y
INPUT_LOCALE=fr

24
.github/FUNDING.yml vendored
View File

@@ -1,12 +1,12 @@
# These are supported funding model platforms # These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username open_collective: # Replace with a single Open Collective username
ko_fi: anmolsingh ko_fi: anmolsingh
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username otechie: # Replace with a single Otechie username
custom: ['https://www.paypal.me/AAPRENEUR'] custom: ['https://www.paypal.me/AAPRENEUR']

View File

@@ -1,27 +1,27 @@
--- ---
name: Bug report name: Bug report
about: Create a report to help us improve about: Create a report to help us improve
title: BUG title: BUG
labels: bug labels: bug
assignees: anmol098 assignees: anmol098
--- ---
**Describe the bug** **Describe the bug**
A clear and concise description of what the bug is. A clear and concise description of what the bug is.
**To Reproduce** **To Reproduce**
Steps to reproduce the behavior: Steps to reproduce the behavior:
1. Go to '...' 1. Go to '...'
2. Click on '....' 2. Click on '....'
3. Scroll down to '....' 3. Scroll down to '....'
4. See error 4. See error
**Expected behavior** **Expected behavior**
A clear and concise description of what you expected to happen. A clear and concise description of what you expected to happen.
**Github repository link** **Github repository link**
If applicable, please share the Github repository link. If applicable, please share the Github repository link.
**Additional context** **Additional context**
Add any other context about the problem here. Add any other context about the problem here.

View File

@@ -1,20 +1,20 @@
--- ---
name: Feature request name: Feature request
about: Suggest an idea for this project about: Suggest an idea for this project
title: FEAT title: FEAT
labels: Brainstorming labels: Brainstorming
assignees: anmol098 assignees: anmol098
--- ---
**Is your feature request related to a problem? Please describe.** **Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like** **Describe the solution you'd like**
A clear and concise description of what you want to happen. A clear and concise description of what you want to happen.
**Describe alternatives you've considered** **Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered. A clear and concise description of any alternative solutions or features you've considered.
**Additional context** **Additional context**
Add any other context or screenshots about the feature request here. Add any other context or screenshots about the feature request here.

View File

@@ -1,15 +1,15 @@
--- ---
name: Special mention name: Special mention
about: Add your name to the list if you are making your profile readme more awesome about: Add your name to the list if you are making your profile readme more awesome
with our GitHub Action with our GitHub Action
title: Add||<your github username here> title: Add||<your github username here>
labels: Name labels: Name
assignees: anmol098 assignees: anmol098
--- ---
**Github Profile Link** **Github Profile Link**
A direct link to your profile A direct link to your profile
**Your Name** **Your Name**
your name which should be displayed on the link your name which should be displayed on the link

12
.gitignore vendored
View File

@@ -1,6 +1,6 @@
*.env *.env
*.png *.png
node_modules/ node_modules/
__pycache__/ __pycache__/
.vscode .vscode

View File

@@ -1,76 +1,76 @@
# Contributor Covenant Code of Conduct # Contributor Covenant Code of Conduct
## Our Pledge ## Our Pledge
In the interest of fostering an open and welcoming environment, we as In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression, size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation. appearance, race, religion, or sexual identity and orientation.
## Our Standards ## Our Standards
Examples of behavior that contributes to creating a positive environment Examples of behavior that contributes to creating a positive environment
include: include:
* Using welcoming and inclusive language * Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences * Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism * Gracefully accepting constructive criticism
* Focusing on what is best for the community * Focusing on what is best for the community
* Showing empathy towards other community members * Showing empathy towards other community members
Examples of unacceptable behavior by participants include: Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or * The use of sexualized language or imagery and unwelcome sexual attention or
advances advances
* Trolling, insulting/derogatory comments, and personal or political attacks * Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment * Public or private harassment
* Publishing others' private information, such as a physical or electronic * Publishing others' private information, such as a physical or electronic
address, without explicit permission address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a * Other conduct which could reasonably be considered inappropriate in a
professional setting professional setting
## Our Responsibilities ## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior. response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate, permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful. threatening, offensive, or harmful.
## Scope ## Scope
This Code of Conduct applies both within project spaces and in public spaces This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers. further defined and clarified by project maintainers.
## Enforcement ## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at anmolpratapsingh1997@gmail.com. All reported by contacting the project team at anmolpratapsingh1997@gmail.com. All
complaints will be reviewed and investigated and will result in a response that complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident. obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other faith may face temporary or permanent repercussions as determined by other
members of the project's leadership. members of the project's leadership.
## Attribution ## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org [homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq https://www.contributor-covenant.org/faq

View File

@@ -1,56 +1,56 @@
# Contributing # Contributing
**Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) **Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
--- ---
Thanks for taking the time to look at `CONTRIBUTING.md`. Thanks for taking the time to look at `CONTRIBUTING.md`.
All contributions to this project should follow the `CODE_OF_CONDUCT.md`. All contributions to this project should follow the `CODE_OF_CONDUCT.md`.
### Reporting issues and providing feedback ### Reporting issues and providing feedback
If you found any issues or bugs, be sure to open up an issue so I can check it out! If you found any issues or bugs, be sure to open up an issue so I can check it out!
### Opening a pull request ### Opening a pull request
Once you've worked on your feature/bugfix etc, you can open a pull request using the `Alpha` branch as the base branch. Write a clear and concise PR title, and a detailed description of why you made the change, whether it is related to any issues etc. And I will review it as soon as I can. Once you've worked on your feature/bugfix etc, you can open a pull request using the `Alpha` branch as the base branch. Write a clear and concise PR title, and a detailed description of why you made the change, whether it is related to any issues etc. And I will review it as soon as I can.
**If the code is not linted properly or not reformatted the PR will be rejected** **If the code is not linted properly or not reformatted the PR will be rejected**
### Setting up development environment ### Setting up development environment
This project is written in Python, requires **Python 3.6 or higher**, and uses `pip` . This project is written in Python, requires **Python 3.6 or higher**, and uses `pip` .
To set it up, just fork + clone it, install all the dependencies: To set it up, just fork + clone it, install all the dependencies:
```bash ```bash
$ pip install -r requirements.txt $ pip install -r requirements.txt
``` ```
The command will install all the requirements needed to run project. The command will install all the requirements needed to run project.
create a `.env` file in the project directory for information you can refer to the `.env.example` file for all the environment variable create a `.env` file in the project directory for information you can refer to the `.env.example` file for all the environment variable
If you want to contribute the chart module then you have enable that flag in `.env` file and install nodeJs and NPM for charting library to work If you want to contribute the chart module then you have enable that flag in `.env` file and install nodeJs and NPM for charting library to work
```bash ```bash
npm install -g vega-lite vega-cli canvas npm install -g vega-lite vega-cli canvas
``` ```
If everything is installed, you are good to go 👍. If everything is installed, you are good to go 👍.
```bash ```bash
python main.py python main.py
``` ```
to run the program to run the program
**Linting checks** **Linting checks**
It is recommended to use proper linting. if you using Jetbrains IntelliJ IDE please reformat code before making pull request It is recommended to use proper linting. if you using Jetbrains IntelliJ IDE please reformat code before making pull request
for more info [How to reformat code in Intellij](https://www.jetbrains.com/help/idea/reformat-and-rearrange-code.html) for more info [How to reformat code in Intellij](https://www.jetbrains.com/help/idea/reformat-and-rearrange-code.html)
**Commit Messages** **Commit Messages**
It is recommended to use proper sementic commit messages. [Sementic commit message](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716) It is recommended to use proper sementic commit messages. [Sementic commit message](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716)

View File

@@ -1,19 +1,19 @@
FROM nikolaik/python-nodejs:latest FROM nikolaik/python-nodejs:latest
# Install dependencies. # Install dependencies.
ADD requirements.txt /requirements.txt ADD requirements.txt /requirements.txt
ADD main.py /main.py ADD main.py /main.py
ADD loc.py /loc.py ADD loc.py /loc.py
ADD make_bar_graph.py /make_bar_graph.py ADD make_bar_graph.py /make_bar_graph.py
ADD colors.json /colors.json ADD colors.json /colors.json
ADD translation.json /translation.json ADD translation.json /translation.json
RUN pip install -r requirements.txt RUN pip install -r requirements.txt
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
RUN npm -g config set user root RUN npm -g config set user root
RUN npm install -g vega-lite vega-cli canvas RUN npm install -g vega-lite vega-cli canvas
ENTRYPOINT ["python", "/main.py"] ENTRYPOINT ["python", "/main.py"]

40
LICENSE
View File

@@ -1,20 +1,20 @@
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2020 ANMOL PRATAP SINGH Copyright (c) 2020 ANMOL PRATAP SINGH
Permission is hereby granted, free of charge, to any person obtaining a copy of Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so, the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions: subject to the following conditions:
The above copyright notice and this permission notice shall be included in all The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software. copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

26
Pipfile
View File

@@ -1,13 +1,13 @@
[[source]] [[source]]
name = "pypi" name = "pypi"
url = "https://pypi.org/simple" url = "https://pypi.org/simple"
verify_ssl = true verify_ssl = true
[dev-packages] [dev-packages]
[packages] [packages]
requests = "*" requests = "*"
pygithub = "*" pygithub = "*"
[requires] [requires]
python_version = "3.7" python_version = "3.7"

170
Pipfile.lock generated
View File

@@ -1,85 +1,85 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "ee0dbc310e64a4cc599d6b5e02bb22e3f33eb97ead8e5f1e315cf355fbef9367" "sha256": "ee0dbc310e64a4cc599d6b5e02bb22e3f33eb97ead8e5f1e315cf355fbef9367"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
"python_version": "3.7" "python_version": "3.7"
}, },
"sources": [ "sources": [
{ {
"name": "pypi", "name": "pypi",
"url": "https://pypi.org/simple", "url": "https://pypi.org/simple",
"verify_ssl": true "verify_ssl": true
} }
] ]
}, },
"default": { "default": {
"certifi": { "certifi": {
"hashes": [ "hashes": [
"sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3", "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
"sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41" "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
], ],
"version": "==2020.6.20" "version": "==2020.6.20"
}, },
"chardet": { "chardet": {
"hashes": [ "hashes": [
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
], ],
"version": "==3.0.4" "version": "==3.0.4"
}, },
"deprecated": { "deprecated": {
"hashes": [ "hashes": [
"sha256:525ba66fb5f90b07169fdd48b6373c18f1ee12728ca277ca44567a367d9d7f74", "sha256:525ba66fb5f90b07169fdd48b6373c18f1ee12728ca277ca44567a367d9d7f74",
"sha256:a766c1dccb30c5f6eb2b203f87edd1d8588847709c78589e1521d769addc8218" "sha256:a766c1dccb30c5f6eb2b203f87edd1d8588847709c78589e1521d769addc8218"
], ],
"version": "==1.2.10" "version": "==1.2.10"
}, },
"idna": { "idna": {
"hashes": [ "hashes": [
"sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6", "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
"sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0" "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
], ],
"version": "==2.10" "version": "==2.10"
}, },
"pygithub": { "pygithub": {
"hashes": [ "hashes": [
"sha256:8375a058ec651cc0774244a3bc7395cf93617298735934cdd59e5bcd9a1df96e", "sha256:8375a058ec651cc0774244a3bc7395cf93617298735934cdd59e5bcd9a1df96e",
"sha256:d2d17d1e3f4474e070353f201164685a95b5a92f5ee0897442504e399c7bc249" "sha256:d2d17d1e3f4474e070353f201164685a95b5a92f5ee0897442504e399c7bc249"
], ],
"index": "pypi", "index": "pypi",
"version": "==1.51" "version": "==1.51"
}, },
"pyjwt": { "pyjwt": {
"hashes": [ "hashes": [
"sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e", "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e",
"sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96" "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"
], ],
"version": "==1.7.1" "version": "==1.7.1"
}, },
"requests": { "requests": {
"hashes": [ "hashes": [
"sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b", "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
"sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898" "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
], ],
"index": "pypi", "index": "pypi",
"version": "==2.24.0" "version": "==2.24.0"
}, },
"urllib3": { "urllib3": {
"hashes": [ "hashes": [
"sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527", "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527",
"sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115" "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"
], ],
"version": "==1.25.9" "version": "==1.25.9"
}, },
"wrapt": { "wrapt": {
"hashes": [ "hashes": [
"sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7" "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
], ],
"version": "==1.12.1" "version": "==1.12.1"
} }
}, },
"develop": {} "develop": {}
} }

708
README.md
View File

@@ -1,354 +1,354 @@
> Looking For Translation to different languages & Locale [#23](https://github.com/anmol098/waka-readme-stats/issues/23) > Looking For Translation to different languages & Locale [#23](https://github.com/anmol098/waka-readme-stats/issues/23)
# Dev Metrics in Readme with added feature flags 🎌 # Dev Metrics in Readme with added feature flags 🎌
![Project Preview](https://user-images.githubusercontent.com/25841814/79395484-5081ae80-7fac-11ea-9e27-ac91472e31dd.png) ![Project Preview](https://user-images.githubusercontent.com/25841814/79395484-5081ae80-7fac-11ea-9e27-ac91472e31dd.png)
<p align="center"> <p align="center">
![Project Preview](https://user-images.githubusercontent.com/15426564/88030180-8e1c4780-cb58-11ea-8a8b-b3576dd73652.png) ![Project Preview](https://user-images.githubusercontent.com/15426564/88030180-8e1c4780-cb58-11ea-8a8b-b3576dd73652.png)
<h3 align="center">📌✨Awesome Readme Stats</h3> <h3 align="center">📌✨Awesome Readme Stats</h3>
</p> </p>
---- ----
<p align="center"> <p align="center">
<img src="https://img.shields.io/badge/language-python-blue?style"/> <img src="https://img.shields.io/badge/language-python-blue?style"/>
<img src="https://img.shields.io/github/license/anmol098/waka-readme-stats"/> <img src="https://img.shields.io/github/license/anmol098/waka-readme-stats"/>
<img src="https://img.shields.io/github/stars/anmol098/waka-readme-stats"/> <img src="https://img.shields.io/github/stars/anmol098/waka-readme-stats"/>
<img src="https://img.shields.io/github/forks/anmol098/waka-readme-stats"/> <img src="https://img.shields.io/github/forks/anmol098/waka-readme-stats"/>
<img src="https://img.shields.io/static/v1?label=%F0%9F%8C%9F&message=If%20Useful&style=style=flat&color=BC4E99" alt="Star Badge"/> <img src="https://img.shields.io/static/v1?label=%F0%9F%8C%9F&message=If%20Useful&style=style=flat&color=BC4E99" alt="Star Badge"/>
</p> </p>
<p align="center"> <p align="center">
Are you an early 🐤 or a night 🦉? Are you an early 🐤 or a night 🦉?
<br/> <br/>
When are you most productive during the day? When are you most productive during the day?
<br/> <br/>
What are languages you code in? What are languages you code in?
<br/> <br/>
Let's check out in your profile readme! Let's check out in your profile readme!
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/anmol098/waka-readme-stats/issues">Report Bug</a> <a href="https://github.com/anmol098/waka-readme-stats/issues">Report Bug</a>
· ·
<a href="https://github.com/anmol098/waka-readme-stats/issues">Request Feature</a> <a href="https://github.com/anmol098/waka-readme-stats/issues">Request Feature</a>
</p> </p>
## Prep Work ## Prep Work
1. You need to update the markdown file(.md) with 2 comments. You can refer [here](#update-your-readme) for updating it. 1. You need to update the markdown file(.md) with 2 comments. You can refer [here](#update-your-readme) for updating it.
2. You'll need a WakaTime API Key. You can get that from your WakaTime Account Settings 2. You'll need a WakaTime API Key. You can get that from your WakaTime Account Settings
- You can refer [here](#new-to-wakatime), if you're new to WakaTime - You can refer [here](#new-to-wakatime), if you're new to WakaTime
3. You'll need a GitHub API Token with `repo` and `user` scope from [here](https://github.com/settings/tokens) if you're running the action to get commit metrics 3. You'll need a GitHub API Token with `repo` and `user` scope from [here](https://github.com/settings/tokens) if you're running the action to get commit metrics
> enabling the `repo` scope seems **DANGEROUS**<br/> > enabling the `repo` scope seems **DANGEROUS**<br/>
> but this GitHub Action only accesses your commit timestamp and lines of code added or deleted in repository you contributed. > but this GitHub Action only accesses your commit timestamp and lines of code added or deleted in repository you contributed.
- You can use [this](#profile-repository) example to work it out - You can use [this](#profile-repository) example to work it out
4. You need to save the WakaTime API Key and the GitHub API Token in the repository secrets. You can find that in the Settings of your repository. Be sure to save those as the following. 4. You need to save the WakaTime API Key and the GitHub API Token in the repository secrets. You can find that in the Settings of your repository. Be sure to save those as the following.
- WakaTime API Key as `WAKATIME_API_KEY=<your wakatime API Key>` - WakaTime API Key as `WAKATIME_API_KEY=<your wakatime API Key>`
- GitHub Personal Access Token as `GH_TOKEN=<your github access token>` - GitHub Personal Access Token as `GH_TOKEN=<your github access token>`
5. You can enable and disable feature flags based on requirements. 5. You can enable and disable feature flags based on requirements.
This Action will run everyday at 00.00 IST This Action will run everyday at 00.00 IST
## Update your Readme ## Update your Readme
Add a comment to your `README.md` like this: Add a comment to your `README.md` like this:
```md ```md
<!--START_SECTION:waka--> <!--START_SECTION:waka-->
<!--END_SECTION:waka--> <!--END_SECTION:waka-->
``` ```
These lines will be our entry-points for the dev metrics. These lines will be our entry-points for the dev metrics.
## New to WakaTime ## New to WakaTime
WakaTime gives you an idea of the time you really spent on coding. This helps you boost your productivity and competitive edge. WakaTime gives you an idea of the time you really spent on coding. This helps you boost your productivity and competitive edge.
- Head over to <https://wakatime.com> and create an account. - Head over to <https://wakatime.com> and create an account.
- Get your WakaTime API Key from your [Account Settings in WakaTime](https://wakatime.com/settings/account). - Get your WakaTime API Key from your [Account Settings in WakaTime](https://wakatime.com/settings/account).
- Install the [WakaTime plugin](https://wakatime.com/plugins) in your favourite editor / IDE. - Install the [WakaTime plugin](https://wakatime.com/plugins) in your favourite editor / IDE.
- Paste in your API key to start the analysis. - Paste in your API key to start the analysis.
### Profile Repository ### Profile Repository
You'll need to get a [GitHub Access Token](https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token) with a `repo` and `user` scope and save it in the Repo Secrets `GH_TOKEN = <Your GitHub Access Token>` You'll need to get a [GitHub Access Token](https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token) with a `repo` and `user` scope and save it in the Repo Secrets `GH_TOKEN = <Your GitHub Access Token>`
Here is Sample Workflow File for running it: Here is Sample Workflow File for running it:
```yml ```yml
name: Waka Readme name: Waka Readme
on: on:
schedule: schedule:
# Runs at 12am IST # Runs at 12am IST
- cron: '30 18 * * *' - cron: '30 18 * * *'
jobs: jobs:
update-readme: update-readme:
name: Update Readme with Metrics name: Update Readme with Metrics
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: anmol098/waka-readme-stats@master - uses: anmol098/waka-readme-stats@master
with: with:
WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }} WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
GH_TOKEN: ${{ secrets.GH_TOKEN }} GH_TOKEN: ${{ secrets.GH_TOKEN }}
``` ```
## Extras ## 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 >except the lines of code flag due to heavy operation performed
```yml ```yml
- uses: anmol098/waka-readme-stats@master - uses: anmol098/waka-readme-stats@master
with: with:
WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }} WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
GH_TOKEN: ${{ secrets.GH_TOKEN }} GH_TOKEN: ${{ secrets.GH_TOKEN }}
SHOW_OS: "False" SHOW_OS: "False"
SHOW_PROJECTS: "False" SHOW_PROJECTS: "False"
``` ```
### Flags Available ### Flags Available
--- ---
`LOCALE` This Flag can be used to show stats in your language default is english uses Locale [Short Hand](https://saimana.com/list-of-country-locale-code/) to be passed in the flag variable example of the final result can be found [here](https://github.com/anmol098/anmol098/blob/master/Readme-fr.md) `LOCALE` This Flag can be used to show stats in your language default is english uses Locale [Short Hand](https://saimana.com/list-of-country-locale-code/) to be passed in the flag variable example of the final result can be found [here](https://github.com/anmol098/anmol098/blob/master/Readme-fr.md)
`SHOW_LINES_OF_CODE` flag can be set to `True` to show the Lines of code writen till date `SHOW_LINES_OF_CODE` flag can be set to `True` to show the Lines of code writen till date
![Lines of code](https://img.shields.io/badge/From%20Hello%20World%20I've%20written-1.3%20million%20Lines%20of%20code-blue) ![Lines of code](https://img.shields.io/badge/From%20Hello%20World%20I've%20written-1.3%20million%20Lines%20of%20code-blue)
`SHOW_PROFILE_VIEWS` flag can be set to `False` to hide the Profile views `SHOW_PROFILE_VIEWS` flag can be set to `False` to hide the Profile views
![Profile Views](http://img.shields.io/badge/Profile%20Views-2189-blue) ![Profile Views](http://img.shields.io/badge/Profile%20Views-2189-blue)
`SHOW_COMMIT` flag can be set to `False` to hide the commit stats `SHOW_COMMIT` flag can be set to `False` to hide the commit stats
**I'm an early 🐤** **I'm an early 🐤**
```text ```text
🌞 Morning 95 commits ███████░░░░░░░░░░░░░░░░░░ 30.55% 🌞 Morning 95 commits ███████░░░░░░░░░░░░░░░░░░ 30.55%
🌆 Daytime 78 commits ██████░░░░░░░░░░░░░░░░░░░ 25.08% 🌆 Daytime 78 commits ██████░░░░░░░░░░░░░░░░░░░ 25.08%
🌃 Evening 112 commits █████████░░░░░░░░░░░░░░░░ 36.01% 🌃 Evening 112 commits █████████░░░░░░░░░░░░░░░░ 36.01%
🌙 Night 26 commits ██░░░░░░░░░░░░░░░░░░░░░░░ 8.36% 🌙 Night 26 commits ██░░░░░░░░░░░░░░░░░░░░░░░ 8.36%
``` ```
`SHOW_DAYS_OF_WEEK` flag can be set to `False` to hide the commits made on different days of week `SHOW_DAYS_OF_WEEK` flag can be set to `False` to hide the commits made on different days of week
📅 **I'm Most Productive on Sundays** 📅 **I'm Most Productive on Sundays**
```text ```text
Monday 50 commits ███░░░░░░░░░░░░░░░░░░░░░░ 13.19% Monday 50 commits ███░░░░░░░░░░░░░░░░░░░░░░ 13.19%
Tuesday 85 commits █████░░░░░░░░░░░░░░░░░░░░ 22.43% Tuesday 85 commits █████░░░░░░░░░░░░░░░░░░░░ 22.43%
Wednesday 56 commits ███░░░░░░░░░░░░░░░░░░░░░░ 14.78% Wednesday 56 commits ███░░░░░░░░░░░░░░░░░░░░░░ 14.78%
Thursday 44 commits ███░░░░░░░░░░░░░░░░░░░░░░ 11.61% Thursday 44 commits ███░░░░░░░░░░░░░░░░░░░░░░ 11.61%
Friday 28 commits █░░░░░░░░░░░░░░░░░░░░░░░░ 7.39% Friday 28 commits █░░░░░░░░░░░░░░░░░░░░░░░░ 7.39%
Saturday 30 commits ██░░░░░░░░░░░░░░░░░░░░░░░ 7.92% Saturday 30 commits ██░░░░░░░░░░░░░░░░░░░░░░░ 7.92%
Sunday 86 commits █████░░░░░░░░░░░░░░░░░░░░ 22.69% Sunday 86 commits █████░░░░░░░░░░░░░░░░░░░░ 22.69%
``` ```
`SHOW_LANGUAGE` flag can be set to `False` to hide the Coding Language You use `SHOW_LANGUAGE` flag can be set to `False` to hide the Coding Language You use
```text ```text
💬 Languages: 💬 Languages:
JavaScript 5 hrs 26 mins ███████████████░░░░░░░░░░ 61.97% JavaScript 5 hrs 26 mins ███████████████░░░░░░░░░░ 61.97%
PHP 1 hr 35 mins ████░░░░░░░░░░░░░░░░░░░░░ 18.07% PHP 1 hr 35 mins ████░░░░░░░░░░░░░░░░░░░░░ 18.07%
Markdown 1 hr 9 mins ███░░░░░░░░░░░░░░░░░░░░░░ 13.3% Markdown 1 hr 9 mins ███░░░░░░░░░░░░░░░░░░░░░░ 13.3%
Python 22 mins █░░░░░░░░░░░░░░░░░░░░░░░░ 4.32% Python 22 mins █░░░░░░░░░░░░░░░░░░░░░░░░ 4.32%
XML 8 mins ░░░░░░░░░░░░░░░░░░░░░░░░░ 1.62% XML 8 mins ░░░░░░░░░░░░░░░░░░░░░░░░░ 1.62%
``` ```
`SHOW_OS` flag can be set to `False` to hide the OS details `SHOW_OS` flag can be set to `False` to hide the OS details
```text ```text
💻 Operating Systems: 💻 Operating Systems:
Windows 8 hrs 46 mins █████████████████████████ 100.0% Windows 8 hrs 46 mins █████████████████████████ 100.0%
``` ```
`SHOW_PROJECTS` flag can be set to `False` to hide the Projects worked on `SHOW_PROJECTS` flag can be set to `False` to hide the Projects worked on
```text ```text
🐱‍💻 Projects: 🐱‍💻 Projects:
ctx_connector 4 hrs 3 mins ███████████░░░░░░░░░░░░░░ 46.33% ctx_connector 4 hrs 3 mins ███████████░░░░░░░░░░░░░░ 46.33%
NetSuite-Connector 1 hr 31 mins ████░░░░░░░░░░░░░░░░░░░░░ 17.29% NetSuite-Connector 1 hr 31 mins ████░░░░░░░░░░░░░░░░░░░░░ 17.29%
mango-web-master 1 hr 12 mins ███░░░░░░░░░░░░░░░░░░░░░░ 13.77% mango-web-master 1 hr 12 mins ███░░░░░░░░░░░░░░░░░░░░░░ 13.77%
cable 54 mins ██░░░░░░░░░░░░░░░░░░░░░░░ 10.41% cable 54 mins ██░░░░░░░░░░░░░░░░░░░░░░░ 10.41%
denAPI 40 mins ██░░░░░░░░░░░░░░░░░░░░░░░ 7.66% denAPI 40 mins ██░░░░░░░░░░░░░░░░░░░░░░░ 7.66%
``` ```
`SHOW_TIMEZONE` flag can be set to `False` to hide the time zone you are in `SHOW_TIMEZONE` flag can be set to `False` to hide the time zone you are in
```text ```text
⌚︎ Timezone: Asia/Calcutta ⌚︎ Timezone: Asia/Calcutta
``` ```
`SHOW_EDITORS` flag can be set to `False` to hide the list of code-editors used `SHOW_EDITORS` flag can be set to `False` to hide the list of code-editors used
```text ```text
🔥 Editors: 🔥 Editors:
WebStorm 6 hrs 47 mins ███████████████████░░░░░░ 77.43% WebStorm 6 hrs 47 mins ███████████████████░░░░░░ 77.43%
PhpStorm 1 hr 35 mins ████░░░░░░░░░░░░░░░░░░░░░ 18.07% PhpStorm 1 hr 35 mins ████░░░░░░░░░░░░░░░░░░░░░ 18.07%
PyCharm 23 mins █░░░░░░░░░░░░░░░░░░░░░░░░ 4.49% PyCharm 23 mins █░░░░░░░░░░░░░░░░░░░░░░░░ 4.49%
``` ```
`SHOW_LANGUAGE_PER_REPO` flag can be set to `False` to hide the Number of repository in different language and frameworks `SHOW_LANGUAGE_PER_REPO` flag can be set to `False` to hide the Number of repository in different language and frameworks
**I mostly code in Vue** **I mostly code in Vue**
```text ```text
Vue 8 repos ██████░░░░░░░░░░░░░░░░░░░ 25.0% Vue 8 repos ██████░░░░░░░░░░░░░░░░░░░ 25.0%
Java 6 repos ████░░░░░░░░░░░░░░░░░░░░░ 18.75% Java 6 repos ████░░░░░░░░░░░░░░░░░░░░░ 18.75%
JavaScript 6 repos ████░░░░░░░░░░░░░░░░░░░░░ 18.75% JavaScript 6 repos ████░░░░░░░░░░░░░░░░░░░░░ 18.75%
PHP 3 repos ██░░░░░░░░░░░░░░░░░░░░░░░ 9.38% PHP 3 repos ██░░░░░░░░░░░░░░░░░░░░░░░ 9.38%
Python 2 repos █░░░░░░░░░░░░░░░░░░░░░░░░ 6.25% Python 2 repos █░░░░░░░░░░░░░░░░░░░░░░░░ 6.25%
Dart 2 repos █░░░░░░░░░░░░░░░░░░░░░░░░ 6.25% Dart 2 repos █░░░░░░░░░░░░░░░░░░░░░░░░ 6.25%
CSS 2 repos █░░░░░░░░░░░░░░░░░░░░░░░░ 6.25% CSS 2 repos █░░░░░░░░░░░░░░░░░░░░░░░░ 6.25%
``` ```
`SHOW_SHORT_INFO` flag can be set to `False` to hide the short fun fact info of user `SHOW_SHORT_INFO` flag can be set to `False` to hide the short fun fact info of user
>This section requires personal access token with user permission otherwise data shown will be incorrect here >This section requires personal access token with user permission otherwise data shown will be incorrect here
**🐱 My GitHub Data** **🐱 My GitHub Data**
> 🏆 433 Contributions in year 2020 > 🏆 433 Contributions in year 2020
> >
> 📦 Used 292.3 kB in GitHub's Storage > 📦 Used 292.3 kB in GitHub's Storage
> >
> 💼 Opted to Hire > 💼 Opted to Hire
> >
> 📜 25 Public Repository > 📜 25 Public Repository
> >
> 🔑 15 Owned Private Repository > 🔑 15 Owned Private Repository
`SHOW_LOC_CHART` flag can be set to `False` to hide the Lines of code written in different quarters of different year `SHOW_LOC_CHART` flag can be set to `False` to hide the Lines of code written in different quarters of different year
**Timeline** **Timeline**
![Chart not found](https://raw.githubusercontent.com/anmol098/anmol098/master/charts/bar_graph.png) ![Chart not found](https://raw.githubusercontent.com/anmol098/anmol098/master/charts/bar_graph.png)
## :sparkling_heart: Support the project ## :sparkling_heart: Support the project
I open-source almost everything I can, and I try to reply to everyone needing help using these projects. Obviously, I open-source almost everything I can, and I try to reply to everyone needing help using these projects. Obviously,
this takes time. You can use this service for free. this takes time. You can use this service for free.
However, if you are using this project and happy with it or just want to encourage me to continue creating stuff, there are few ways you can do it :- However, if you are using this project and happy with it or just want to encourage me to continue creating stuff, there are few ways you can do it :-
- Giving proper credit when you use this action on your readme, linking back to it :D - Giving proper credit when you use this action on your readme, linking back to it :D
- Starring and sharing the project :rocket: - Starring and sharing the project :rocket:
- [![paypal.me/aapreneur](https://ionicabizau.github.io/badges/paypal.svg)](https://www.paypal.me/aapreneur) - You can make one-time donations via PayPal. I'll probably buy a ~~beer~~ wine 🍷 - [![paypal.me/aapreneur](https://ionicabizau.github.io/badges/paypal.svg)](https://www.paypal.me/aapreneur) - You can make one-time donations via PayPal. I'll probably buy a ~~beer~~ wine 🍷
Thanks! :heart: Thanks! :heart:
--- ---
# Contributing # Contributing
Contributions are welcome! ♥! Please share any features, and add unit tests! Use the pull request and issue systems to contribute. Contributions are welcome! ♥! Please share any features, and add unit tests! Use the pull request and issue systems to contribute.
# Selected Contributors # Selected Contributors
1. [Anmol Pratap Singh](https://github.com/anmol098): Maintainer 1. [Anmol Pratap Singh](https://github.com/anmol098): Maintainer
2. [Prabhat Singh](https://github.com/prabhatdev): For code timeline graph [#18](https://github.com/anmol098/waka-readme-stats/pull/18) 2. [Prabhat Singh](https://github.com/prabhatdev): For code timeline graph [#18](https://github.com/anmol098/waka-readme-stats/pull/18)
3. [Hedy Li](https://github.com/hedythedev): For Pull Request [#34](https://github.com/anmol098/waka-readme-stats/pull/34) and [#23](https://github.com/anmol098/waka-readme-stats/pull/23) 3. [Hedy Li](https://github.com/hedythedev): For Pull Request [#34](https://github.com/anmol098/waka-readme-stats/pull/34) and [#23](https://github.com/anmol098/waka-readme-stats/pull/23)
4. [Pedro Torres](https://github.com/Corfucinas): For Pull Request [#29](https://github.com/anmol098/waka-readme-stats/pull/29) 4. [Pedro Torres](https://github.com/Corfucinas): For Pull Request [#29](https://github.com/anmol098/waka-readme-stats/pull/29)
5. [Aaron Meese](https://github.com/ajmeese7): For Pull Request [#45](https://github.com/anmol098/waka-readme-stats/pull/45) 5. [Aaron Meese](https://github.com/ajmeese7): For Pull Request [#45](https://github.com/anmol098/waka-readme-stats/pull/45)
6. [Arnav Jindal](https://github.com/Daggy1234): For Pull Request [#48](https://github.com/anmol098/waka-readme-stats/pull/48) 6. [Arnav Jindal](https://github.com/Daggy1234): For Pull Request [#48](https://github.com/anmol098/waka-readme-stats/pull/48)
7. [Daniel Rowe](https://github.com/DanRowe1): For Pull Request [#57](https://github.com/anmol098/waka-readme-stats/pull/57) 7. [Daniel Rowe](https://github.com/DanRowe1): For Pull Request [#57](https://github.com/anmol098/waka-readme-stats/pull/57)
<details> <details>
<summary>Special mention for those who are currently making their profile readme more awesome :smile: :tada:</summary> <summary>Special mention for those who are currently making their profile readme more awesome :smile: :tada:</summary>
- [Stanislas](https://github.com/angristan) - [Stanislas](https://github.com/angristan)
- [Pratik Kumar](https://github.com/pr2tik1) - [Pratik Kumar](https://github.com/pr2tik1)
- [Vladimir](https://github.com/sergeev-vn) - [Vladimir](https://github.com/sergeev-vn)
- [Pedro Torres](https://github.com/Corfucinas) - [Pedro Torres](https://github.com/Corfucinas)
- [leverglowh](https://github.com/leverglowh) - [leverglowh](https://github.com/leverglowh)
- [patdc](https://github.com/patdc) - [patdc](https://github.com/patdc)
- [极客挖掘机](https://github.com/meteor1993) - [极客挖掘机](https://github.com/meteor1993)
- [Fan()](https://github.com/Fanduzi) - [Fan()](https://github.com/Fanduzi)
- [Miller Camilo Vega](https://github.com/minoveaz) - [Miller Camilo Vega](https://github.com/minoveaz)
- [XLor](https://github.com/yjl9903) - [XLor](https://github.com/yjl9903)
- [Jesse Okeya](https://github.com/jesseokeya) - [Jesse Okeya](https://github.com/jesseokeya)
- [anaiel](https://github.com/anaiel) - [anaiel](https://github.com/anaiel)
- [Dipto Mondal](https://github.com/diptomondal007) - [Dipto Mondal](https://github.com/diptomondal007)
- [Jerry F. Zhang](https://github.com/JerryFZhang) - [Jerry F. Zhang](https://github.com/JerryFZhang)
- [Karan Singh](https://github.com/karan06126) - [Karan Singh](https://github.com/karan06126)
- [Erwin Lejeune](https://github.com/guilyx) - [Erwin Lejeune](https://github.com/guilyx)
- [Manuel Cepeda](https://github.com/mecm1993) - [Manuel Cepeda](https://github.com/mecm1993)
- [Jonathan S](https://github.com/TGTGamer) - [Jonathan S](https://github.com/TGTGamer)
- [Tsotne Gvadzabia](https://github.com/RockiRider) - [Tsotne Gvadzabia](https://github.com/RockiRider)
- [Miray](https://github.com/MirayXS) - [Miray](https://github.com/MirayXS)
- [Varad Patil](https://github.com/varadp2000) - [Varad Patil](https://github.com/varadp2000)
- [Prabhat Singh](https://github.com/prabhatdev) - [Prabhat Singh](https://github.com/prabhatdev)
- [Nikhil](https://github.com/nikhilgorantla) - [Nikhil](https://github.com/nikhilgorantla)
- [大白](https://github.com/2720851545) - [大白](https://github.com/2720851545)
- [Du Yizhuo](https://github.com/dyzdyz010) - [Du Yizhuo](https://github.com/dyzdyz010)
- [Manas Talukdar](https://github.com/manastalukdar) - [Manas Talukdar](https://github.com/manastalukdar)
- [Simranjeet Singh](https://github.com/smrnjeet222) - [Simranjeet Singh](https://github.com/smrnjeet222)
- [Aaron Meese](https://github.com/ajmeese7) - [Aaron Meese](https://github.com/ajmeese7)
- [Prasad Narkhede](https://github.com/p014ri5) - [Prasad Narkhede](https://github.com/p014ri5)
- [Manish Kushwaha](https://github.com/tzmanish) - [Manish Kushwaha](https://github.com/tzmanish)
- [Hedy Li](https://github.com/hedythedev) - [Hedy Li](https://github.com/hedythedev)
- [SHIMIZU Taku](https://github.com/takuan-osho) - [SHIMIZU Taku](https://github.com/takuan-osho)
- [Jude Wilson](https://github.com/mr-winson) - [Jude Wilson](https://github.com/mr-winson)
- [Daniel Rowe](https://github.com/DanRowe1) - [Daniel Rowe](https://github.com/DanRowe1)
- [Muhammad Hassan Ahmed](https://github.com/hassan11196) - [Muhammad Hassan Ahmed](https://github.com/hassan11196)
- [Alessandro Maggio](https://github.com/Tkd-Alex) - [Alessandro Maggio](https://github.com/Tkd-Alex)
</details> </details>
- And you! If ever you are using it right now and you are not on the list please tell us by sending a [Special Mention](https://github.com/anmol098/waka-readme-stats/issues/new/choose) issue :blush: we are glad to add you in the list. - And you! If ever you are using it right now and you are not on the list please tell us by sending a [Special Mention](https://github.com/anmol098/waka-readme-stats/issues/new/choose) issue :blush: we are glad to add you in the list.
Made with :heart: and Python 🐍. Made with :heart: and Python 🐍.
# Inspired From # Inspired From
> [Awesome Pinned Gists](https://github.com/matchai/awesome-pinned-gists) <br/> > [Awesome Pinned Gists](https://github.com/matchai/awesome-pinned-gists) <br/>
> [athul/waka-readme](https://github.com/athul/waka-readme) > [athul/waka-readme](https://github.com/athul/waka-readme)
### This project need a **star** ⭐ from you ♥. ### This project need a **star** ⭐ from you ♥.

View File

@@ -1,87 +1,87 @@
name: 'Profile Readme Development Stats' name: 'Profile Readme Development Stats'
author: Anmol Pratap Singh author: Anmol Pratap Singh
description: 'Are you an early 🐤 or a night 🦉? When are you most productive during the day? Let''s check out in your readme!' description: 'Are you an early 🐤 or a night 🦉? When are you most productive during the day? Let''s check out in your readme!'
inputs: inputs:
GH_TOKEN: GH_TOKEN:
description: 'GitHub access token with Repo scope' description: 'GitHub access token with Repo scope'
required: true required: true
default: ${{ github.token }} default: ${{ github.token }}
WAKATIME_API_KEY: WAKATIME_API_KEY:
description: 'Your Wakatime API Key' description: 'Your Wakatime API Key'
required: true required: true
SHOW_OS: SHOW_OS:
required: false required: false
description: 'Show the list of OS Worked on In dev metrics' description: 'Show the list of OS Worked on In dev metrics'
default: "True" default: "True"
SHOW_PROJECTS: SHOW_PROJECTS:
required: false required: false
description: 'Show the list of projects worked on in dev metrics' description: 'Show the list of projects worked on in dev metrics'
default: "True" default: "True"
SHOW_EDITORS: SHOW_EDITORS:
required: false required: false
description: 'Show the Editors used in dev metrics' description: 'Show the Editors used in dev metrics'
default: "True" default: "True"
SHOW_TIMEZONE: SHOW_TIMEZONE:
required: false required: false
description: 'Show the time zone in the dev metrics' description: 'Show the time zone in the dev metrics'
default: "True" default: "True"
SHOW_COMMIT: SHOW_COMMIT:
required: false required: false
description: "Shows the number of commit graph in the dev metrics" description: "Shows the number of commit graph in the dev metrics"
default: "True" default: "True"
SHOW_LANGUAGE: SHOW_LANGUAGE:
required: false required: false
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: SHOW_LINES_OF_CODE:
required: false required: false
description: "Show the Total Lines of code written Badge till date" description: "Show the Total Lines of code written Badge till date"
default: "False" default: "False"
SHOW_LANGUAGE_PER_REPO: SHOW_LANGUAGE_PER_REPO:
required: false required: false
description: "Show language or framework used across different repository" description: "Show language or framework used across different repository"
default: "True" default: "True"
SHOW_LOC_CHART: SHOW_LOC_CHART:
required: false required: false
description: "" description: ""
default: "True" default: "True"
SHOW_DAYS_OF_WEEK: SHOW_DAYS_OF_WEEK:
required: false required: false
description: "show day of week you are most productive" description: "show day of week you are most productive"
default: "True" default: "True"
SHOW_PROFILE_VIEWS: SHOW_PROFILE_VIEWS:
required: false required: false
description: "Shows the current profile views" description: "Shows the current profile views"
default: "True" default: "True"
SHOW_SHORT_INFO: SHOW_SHORT_INFO:
required: false required: false
description: "Shows the short facts" description: "Shows the short facts"
default: "True" default: "True"
LOCALE: LOCALE:
required: false required: false
description: "Show stats in your own language" description: "Show stats in your own language"
default: "en" default: "en"
runs: runs:
using: 'docker' using: 'docker'
image: 'Dockerfile' image: 'Dockerfile'
branding: branding:
icon: 'activity' icon: 'activity'
color: 'orange' color: 'orange'

File diff suppressed because it is too large Load Diff

0
geckodriver.log Normal file
View File

184
loc.py
View File

@@ -1,91 +1,93 @@
import re import re
import os import os
import base64 import base64
import requests import requests
from github import Github, InputGitAuthor from github import Github, InputGitAuthor
import datetime import datetime
from string import Template from string import Template
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from io import StringIO, BytesIO from io import StringIO, BytesIO
from dotenv import load_dotenv from dotenv import load_dotenv
import time import time
from make_bar_graph import BarGraph from make_bar_graph import BarGraph
class LinesOfCode: class LinesOfCode:
def __init__(self, id, username, ghtoken, repositoryData): def __init__(self, id, username, ghtoken, repositoryData):
self.id = id self.id = id
self.username = username self.username = username
self.g = Github(ghtoken) self.g = Github(ghtoken)
self.headers = {"Authorization": "Bearer " + ghtoken} self.headers = {"Authorization": "Bearer " + ghtoken}
self.repositoryData = repositoryData self.repositoryData = repositoryData
def calculateLoc(self): def calculateLoc(self):
result = self.repositoryData result = self.repositoryData
yearly_data = {} yearly_data = {}
for repo in result['data']['user']['repositories']['edges']: for repo in result['data']['user']['repositories']['edges']:
self.getCommitStat(repo['node'], yearly_data) self.getCommitStat(repo['node'], yearly_data)
time.sleep(0.7) time.sleep(0.7)
graph = BarGraph(yearly_data) graph = BarGraph(yearly_data)
graph_file = graph.build_graph() graph_file = graph.build_graph()
self.pushChart() self.pushChart()
def run_query_v3(self, nameWithOwner): def run_query_v3(self, nameWithOwner):
endPoint = 'https://api.github.com/repos/' + nameWithOwner + '/stats/code_frequency' endPoint = 'https://api.github.com/repos/' + nameWithOwner + '/stats/code_frequency'
# print(endPoint) # print(endPoint)
request = requests.get(endPoint, headers=self.headers) request = requests.get(endPoint, headers=self.headers)
if request.status_code == 401: if request.status_code == 401:
raise Exception("Invalid token {}. {}".format(request.status_code, nameWithOwner)) raise Exception("Invalid token {}. {}".format(request.status_code, nameWithOwner))
elif request.status_code == 204: elif request.status_code == 204:
return [] return []
else: else:
return request.json() return request.json()
def getQuarter(self, timeStamp): def getQuarter(self, timeStamp):
month = datetime.datetime.fromtimestamp(timeStamp).month month = datetime.datetime.fromtimestamp(timeStamp).month
if month >= 1 and month <= 4: if month >= 1 and month <= 3:
return 1 return 1
elif month >= 5 and month <= 8: elif month >= 4 and month <= 6:
return 2 return 2
elif month >= 9 and month <= 12: elif month >= 7 and month <= 9:
return 3 return 3
elif month >= 10 and month <= 12:
def getCommitStat(self, repoDetails, yearly_data): return 4
result = self.run_query_v3(repoDetails['nameWithOwner'])
this_year = datetime.datetime.utcnow().year def getCommitStat(self, repoDetails, yearly_data):
result = self.run_query_v3(repoDetails['nameWithOwner'])
for i in range(len(result)): this_year = datetime.datetime.utcnow().year
curr_year = datetime.datetime.fromtimestamp(result[i][0]).year
# if curr_year != this_year: for i in range(len(result)):
quarter = self.getQuarter(result[i][0]) curr_year = datetime.datetime.fromtimestamp(result[i][0]).year
if repoDetails['primaryLanguage'] is not None: # if curr_year != this_year:
quarter = self.getQuarter(result[i][0])
if curr_year not in yearly_data: if repoDetails['primaryLanguage'] is not None:
yearly_data[curr_year] = {}
if quarter not in yearly_data[curr_year]: if curr_year not in yearly_data:
yearly_data[curr_year][quarter] = {} yearly_data[curr_year] = {}
if repoDetails['primaryLanguage']['name'] not in yearly_data[curr_year][quarter]: if quarter not in yearly_data[curr_year]:
yearly_data[curr_year][quarter][repoDetails['primaryLanguage']['name']] = 0 yearly_data[curr_year][quarter] = {}
yearly_data[curr_year][quarter][repoDetails['primaryLanguage']['name']] += (result[i][1] + result[i][2]) if repoDetails['primaryLanguage']['name'] not in yearly_data[curr_year][quarter]:
yearly_data[curr_year][quarter][repoDetails['primaryLanguage']['name']] = 0
# to find total yearly_data[curr_year][quarter][repoDetails['primaryLanguage']['name']] += (result[i][1])
# if 'total' not in yearly_data[curr_year]: # to find total
# yearly_data[curr_year]['total']={}
# if repoDetails['primaryLanguage']['name'] not in yearly_data[curr_year]['total']: # if 'total' not in yearly_data[curr_year]:
# yearly_data[curr_year]['total'][repoDetails['primaryLanguage']['name']]=0 # yearly_data[curr_year]['total']={}
# yearly_data[curr_year]['total'][repoDetails['primaryLanguage']['name']]+=(result[i][1]+result[i][2]) # if repoDetails['primaryLanguage']['name'] not in yearly_data[curr_year]['total']:
# yearly_data[curr_year]['total'][repoDetails['primaryLanguage']['name']]=0
def pushChart(self): # yearly_data[curr_year]['total'][repoDetails['primaryLanguage']['name']]+=(result[i][1]+result[i][2])
repo = self.g.get_repo(f"{self.username}/{self.username}")
committer = InputGitAuthor('readme-bot', 'readme-bot@example.com') def pushChart(self):
with open('bar_graph.png', 'rb') as input_file: repo = self.g.get_repo(f"{self.username}/{self.username}")
data = input_file.read() committer = InputGitAuthor('readme-bot', 'readme-bot@example.com')
try: with open('bar_graph.png', 'rb') as input_file:
contents = repo.get_contents("charts/bar_graph.png") data = input_file.read()
repo.update_file(contents.path, "Charts Updated", data, contents.sha, committer=committer) try:
except Exception as e: contents = repo.get_contents("charts/bar_graph.png")
repo.create_file("charts/bar_graph.png", "Charts Added", data, committer=committer) repo.update_file(contents.path, "Charts Updated", data, contents.sha, committer=committer)
except Exception as e:
repo.create_file("charts/bar_graph.png", "Charts Added", data, committer=committer)

1027
main.py

File diff suppressed because it is too large Load Diff

View File

@@ -1,107 +1,107 @@
import os import os
import pandas as pd import pandas as pd
import numpy as np import numpy as np
import altair as alt import altair as alt
import json import json
import os import os
# npm install vega-lite vega-cli canvas # npm install vega-lite vega-cli canvas
class BarGraph: class BarGraph:
def __init__(self, yearly_data): def __init__(self, yearly_data):
self.yearly_data = yearly_data self.yearly_data = yearly_data
def build_graph(self): def build_graph(self):
with open(os.path.join(os.path.dirname(__file__), 'colors.json')) as f: with open(os.path.join(os.path.dirname(__file__), 'colors.json')) as f:
colors = json.load(f) colors = json.load(f)
allColorsValues = [] allColorsValues = []
# filter data # filter data
max_languages = 5 max_languages = 5
top_languages = {} top_languages = {}
for year in self.yearly_data.keys(): for year in self.yearly_data.keys():
for quarter in self.yearly_data[year].keys(): for quarter in self.yearly_data[year].keys():
for language in sorted(list(self.yearly_data[year][quarter].keys()), for language in sorted(list(self.yearly_data[year][quarter].keys()),
key=lambda lang: self.yearly_data[year][quarter][lang], reverse=True)[ key=lambda lang: self.yearly_data[year][quarter][lang], reverse=True)[
0:max_languages]: 0:max_languages]:
if 'top' not in self.yearly_data[year][quarter]: if 'top' not in self.yearly_data[year][quarter]:
self.yearly_data[year][quarter]['top'] = {} self.yearly_data[year][quarter]['top'] = {}
if self.yearly_data[year][quarter][language] != 0: if self.yearly_data[year][quarter][language] != 0:
self.yearly_data[year][quarter]['top'][language] = self.yearly_data[year][quarter][language] self.yearly_data[year][quarter]['top'][language] = self.yearly_data[year][quarter][language]
if language not in top_languages: if language not in top_languages:
top_languages[language] = 1 top_languages[language] = 1
top_languages[language] += 1 top_languages[language] += 1
# print(self.yearly_data) # print(self.yearly_data)
all_languages = list(top_languages.keys()) all_languages = list(top_languages.keys())
for language in all_languages: for language in all_languages:
if colors[language]['color'] is not None: if colors[language]['color'] is not None:
allColorsValues.append(colors[language]['color']) allColorsValues.append(colors[language]['color'])
languages_all_loc = {} languages_all_loc = {}
for language in all_languages: for language in all_languages:
language_year = [] language_year = []
for year in self.yearly_data.keys(): for year in self.yearly_data.keys():
language_quarter = [0, 0, 0] language_quarter = [0, 0, 0, 0]
for quarter in self.yearly_data[year].keys(): for quarter in self.yearly_data[year].keys():
if language in self.yearly_data[year][quarter]['top']: if language in self.yearly_data[year][quarter]['top']:
language_quarter[quarter - 1] = self.yearly_data[year][quarter]['top'][language] language_quarter[quarter - 1] = self.yearly_data[year][quarter]['top'][language]
else: else:
language_quarter[quarter - 1] = 0 language_quarter[quarter - 1] = 0
language_year.append(language_quarter) language_year.append(language_quarter)
languages_all_loc[language] = language_year languages_all_loc[language] = language_year
# print(languages_all_loc) # print(languages_all_loc)
language_df = {} language_df = {}
def prep_df(df, name): def prep_df(df, name):
df = df.stack().reset_index() df = df.stack().reset_index()
df.columns = ['c1', 'c2', 'values'] df.columns = ['c1', 'c2', 'values']
df['Language'] = name df['Language'] = name
return df return df
for language in languages_all_loc.keys(): for language in languages_all_loc.keys():
language_df[language] = pd.DataFrame(languages_all_loc[language], index=list(self.yearly_data.keys()), language_df[language] = pd.DataFrame(languages_all_loc[language], index=list(self.yearly_data.keys()),
columns=["Q1", "Q2", "Q3"]) columns=["Q1", "Q2", "Q3", "Q4"])
for language in language_df.keys(): for language in language_df.keys():
language_df[language] = prep_df(language_df[language], language) language_df[language] = prep_df(language_df[language], language)
df = pd.concat(list(language_df.values())) df = pd.concat(list(language_df.values()))
chart = alt.Chart(df).mark_bar().encode( chart = alt.Chart(df).mark_bar().encode(
# tell Altair which field to group columns on # tell Altair which field to group columns on
x=alt.X('c2:N', title=None), x=alt.X('c2:N', title=None),
# tell Altair which field to use as Y values and how to calculate # tell Altair which field to use as Y values and how to calculate
y=alt.Y('sum(values):Q', y=alt.Y('sum(values):Q',
axis=alt.Axis( axis=alt.Axis(
grid=False, grid=False,
title='LOC added')), title='LOC added')),
# tell Altair which field to use to use as the set of columns to be represented in each group # tell Altair which field to use to use as the set of columns to be represented in each group
column=alt.Column('c1:N', title=None), column=alt.Column('c1:N', title=None),
# tell Altair which field to use for color segmentation # tell Altair which field to use for color segmentation
color=alt.Color('Language:N', color=alt.Color('Language:N',
scale=alt.Scale( scale=alt.Scale(
domain=all_languages, domain=all_languages,
# make it look pretty with an enjoyable color pallet # make it look pretty with an enjoyable color pallet
range=allColorsValues, range=allColorsValues,
), ),
)) \ )) \
.configure_view( .configure_view(
# remove grid lines around column clusters # remove grid lines around column clusters
strokeOpacity=0 strokeOpacity=0
) )
chart.save('bar_graph.png') chart.save('bar_graph.png')
return 'bar_graph.png' return 'bar_graph.png'

2783
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,63 +1,63 @@
altair==4.1.0 altair==4.1.0
altair-data-server==0.4.1 altair-data-server==0.4.1
altair-saver==0.5.0 altair-saver==0.5.0
altair-viewer==0.3.0 altair-viewer==0.3.0
appdirs==1.4.3 appdirs==1.4.3
attrs==19.3.0 attrs==19.3.0
bcrypt==3.1.7 bcrypt==3.1.7
certifi==2020.6.20 certifi==2020.6.20
cffi==1.14.0 cffi==1.14.0
chardet==3.0.4 chardet==3.0.4
cryptography==2.9.2 cryptography==2.9.2
cycler==0.10.0 cycler==0.10.0
Deprecated==1.2.10 Deprecated==1.2.10
distlib==0.3.0 distlib==0.3.0
entrypoints==0.3 entrypoints==0.3
filelock==3.0.12 filelock==3.0.12
gitdb==4.0.5 gitdb==4.0.5
GitPython==3.1.7 GitPython==3.1.7
idna==2.10 idna==2.10
Jinja2==2.11.2 Jinja2==2.11.2
jsonschema==3.2.0 jsonschema==3.2.0
kiwisolver==1.2.0 kiwisolver==1.2.0
lizard==1.17.4 lizard==1.17.4
MarkupSafe==1.1.1 MarkupSafe==1.1.1
matplotlib==3.3.0 matplotlib==3.3.0
MouseInfo==0.1.2 MouseInfo==0.1.2
numpy==1.19.1 numpy==1.19.1
opencv-python==4.2.0.34 opencv-python==4.2.0.34
pandas==1.0.5 pandas==1.0.5
paramiko==2.7.1 paramiko==2.7.1
Pillow==7.2.0 Pillow==7.2.0
pipenv==2018.11.26 pipenv==2018.11.26
portpicker==1.3.1 portpicker==1.3.1
PyAutoGUI==0.9.48 PyAutoGUI==0.9.48
pycparser==2.20 pycparser==2.20
PyDriller==1.15.2 PyDriller==1.15.2
PyGetWindow==0.0.8 PyGetWindow==0.0.8
PyGithub==1.51 PyGithub==1.51
PyJWT==1.7.1 PyJWT==1.7.1
PyMsgBox==1.0.7 PyMsgBox==1.0.7
PyNaCl==1.3.0 PyNaCl==1.3.0
pyparsing==2.4.7 pyparsing==2.4.7
pyperclip==1.7.0 pyperclip==1.7.0
PyRect==0.1.4 PyRect==0.1.4
pyrsistent==0.16.0 pyrsistent==0.16.0
PyScreeze==0.1.25 PyScreeze==0.1.25
python-dateutil==2.8.1 python-dateutil==2.8.1
python-dotenv==0.14.0 python-dotenv==0.14.0
PyTweening==1.0.3 PyTweening==1.0.3
pytz==2020.1 pytz==2020.1
requests==2.24.0 requests==2.24.0
selenium==3.141.0 selenium==3.141.0
six==1.15.0 six==1.15.0
smmap==3.0.4 smmap==3.0.4
toolz==0.10.0 toolz==0.10.0
tornado==6.0.4 tornado==6.0.4
urllib3==1.25.9 urllib3==1.25.9
virtualenv==20.0.18 virtualenv==20.0.18
virtualenv-clone==0.5.4 virtualenv-clone==0.5.4
wrapt==1.12.1 wrapt==1.12.1
xlrd==1.2.0 xlrd==1.2.0
XlsxWriter==1.2.8 XlsxWriter==1.2.8
humanize==2.5.0 humanize==2.5.0

View File

@@ -96,7 +96,7 @@
"Not Opted to Hire": "Non disponibile per assunzioni/colloqui", "Not Opted to Hire": "Non disponibile per assunzioni/colloqui",
"Profile Views": "Visite al profilo", "Profile Views": "Visite al profilo",
"From Hello World I have written": "Dal mio primo Hello World ho scritto ", "From Hello World I have written": "Dal mio primo Hello World ho scritto ",
"I am Most Productive on": "Sono piu' produttivo il", "I am Most Productive on": "Sono piu' produttivo di",
"This Week I Spend My Time On": "Questa settimana ho speso il mio tempo su", "This Week I Spend My Time On": "Questa settimana ho speso il mio tempo su",
"I Mostly Code in": "Solitamente programmo in", "I Mostly Code in": "Solitamente programmo in",
"Timeline": "Linea temporale", "Timeline": "Linea temporale",