Skip to content

Commit a017ec3

Browse files
committed
feat: Enhance handles configuration and manual update scripts
- Updated `configure_handles.py` to support both old array format and new object format for handles.json. - Improved error handling and sample format for handles.json initialization. - Modified `manual_update.py` to accommodate the new handles.json structure and improved user feedback. - Added dynamic badge generation in `update_readme.py` for platforms and last updated date. - Refactored color handling for Codeforces ratings in `utils.py` to return a color scheme dictionary. - Introduced a new script `manual_display_names.py` for interactive display name updates. - Created a batch runner script `spark.bat` for easier execution of various scripts and dependency management. - Added MIT License file to the project.
1 parent f24c14a commit a017ec3

15 files changed

Lines changed: 1077 additions & 399 deletions

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 MishkatIT
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

config/handles.json

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,66 @@
1-
[
1+
{
2+
"urls": [
23
"https://codeforces.com/profile/MishkatIT",
34
"https://leetcode.com/u/MishkatIT/",
45
"https://www.codechef.com/users/MishkatIT",
56
"https://atcoder.jp/users/MishkatIT",
67
"https://cses.fi/user/165802/",
78
"https://www.hackerearth.com/@MishkatIT/",
9+
"https://www.hackerrank.com/profile/MishkatIT",
810
"https://lightoj.com/user/mishkatit",
911
"https://toph.co/u/MishkatIT",
1012
"https://uhunt.onlinejudge.org/id/1615470",
1113
"https://vjudge.net/user/MishkatIT",
12-
"https://www.spoj.com/users/mishkatit/",
13-
"https://www.hackerrank.com/profile/MishkatIT"
14-
]
14+
"https://www.spoj.com/users/mishkatit/"
15+
16+
],
17+
"_comment": "Complete URLs to your profiles on each platform at above section. Format: https://platform.com/path/your_username",
18+
"_examples": {
19+
"CSES": "https://cses.fi/user/your_username/",
20+
"Codeforces": "https://codeforces.com/profile/your_username",
21+
"LeetCode": "https://leetcode.com/u/your_username/",
22+
"AtCoder": "https://atcoder.jp/users/your_username",
23+
"CodeChef": "https://www.codechef.com/users/your_username",
24+
"HackerRank": "https://www.hackerrank.com/profile/your_username",
25+
"HackerEarth": "https://www.hackerearth.com/@your_username/",
26+
"SPOJ": "https://www.spoj.com/users/your_username/",
27+
"UVA": "https://uhunt.onlinejudge.org/id/your_username",
28+
"Timus": "https://acm.timus.ru/author.aspx?id=your_username",
29+
"TopCoder": "https://www.topcoder.com/members/your_username",
30+
"Kattis": "https://open.kattis.com/users/your_username",
31+
"DMOJ": "https://dmoj.ca/user/your_username",
32+
"Toph": "https://toph.co/u/your_username",
33+
"LightOJ": "https://lightoj.com/user/your_username",
34+
"VJudge": "https://vjudge.net/user/your_username",
35+
"CSAcademy": "https://csacademy.com/user/your_username",
36+
"Toki": "https://tlx.toki.id/profiles/your_username",
37+
"OmegaUp": "https://omegaup.com/profile/your_username/",
38+
"Beecrowd": "https://www.beecrowd.com.br/judge/en/profile/your_username",
39+
"POJ": "http://poj.org/userstatus?user_id=your_username",
40+
"ZOJ": "https://zoj.pintia.cn/user/your_username",
41+
"HDU": "http://acm.hdu.edu.cn/userstatus.php?user=your_username",
42+
"FZU": "http://acm.fzu.edu.cn/user.php?uname=your_username",
43+
"SGU": "http://acm.sgu.ru/teaminfo.php?id=your_username",
44+
"AOJ": "https://judge.u-aizu.ac.jp/onlinejudge/user.jsp?id=your_username",
45+
"Yukicoder": "https://yukicoder.me/users/your_username",
46+
"ProjectEuler": "https://projecteuler.net/profile/your_username.png",
47+
"COJ": "https://coj.uci.cu/user/useraccount.xhtml?username=your_username",
48+
"InfoArena": "https://www.infoarena.ro/utilizator/your_username",
49+
"KTH": "https://www.kth.se/profile/your_username/",
50+
"MSU": "https://acm.msu.ru/user/your_username",
51+
"WCIPEG": "https://wcipeg.com/user/your_username",
52+
"COCI": "https://hsin.hr/coci/user.php?username=your_username",
53+
"BOI": "https://boi.cses.fi/users/your_username",
54+
"IOI": "https://ioinformatics.org/user/your_username",
55+
"CodeJam": "https://codejam.googleapis.com/scoreboard/your_username",
56+
"HackerCup": "https://www.facebook.com/hackercup/user/your_username",
57+
"AtCoderABC": "https://atcoder.jp/users/your_username?contestType=algo",
58+
"CodeforcesGym": "https://codeforces.com/profile/your_username?gym=true",
59+
"LeetCodeCN": "https://leetcode.cn/u/your_username/",
60+
"NowCoder": "https://ac.nowcoder.com/acm/contest/profile/your_username",
61+
"Luogu": "https://www.luogu.com.cn/user/your_username",
62+
"LibreOJ": "https://loj.ac/user/your_username",
63+
"UniversalOJ": "https://uoj.ac/user/profile/your_username",
64+
"QDUOJ": "https://qduoj.com/user/your_username"
65+
}
66+
}

data/last_known_counts.json

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,72 @@
11
{
22
"counts": {
3-
"Codeforces": 2609,
4-
"LeetCode": 412,
5-
"AtCoder": 157,
3+
"CSES": 22,
4+
"Codeforces": 1582,
65
"CodeChef": 126,
6+
"AtCoder": 157,
7+
"LeetCode": 412,
78
"Toph": 37,
8-
"LightOJ": 31,
9-
"CSES": 66,
10-
"HackerEarth": 2,
11-
"SPOJ": 18,
129
"VJudge": 347,
13-
"Uva": 7
10+
"LightOJ": 31,
11+
"Uva": 7,
12+
"HackerEarth": 2
1413
},
1514
"dates": {
15+
"CSES": "2026-01-24",
1616
"Codeforces": "2026-01-24",
17-
"LeetCode": "2026-01-24",
18-
"AtCoder": "2026-01-24",
1917
"CodeChef": "2026-01-24",
18+
"AtCoder": "2026-01-24",
19+
"LeetCode": "2026-01-24",
2020
"Toph": "2026-01-24",
21-
"LightOJ": "2026-01-24",
22-
"CSES": "2026-01-15",
23-
"HackerEarth": "2026-01-15",
24-
"SPOJ": "2026-01-16",
2521
"VJudge": "2026-01-24",
26-
"Uva": "2026-01-24"
22+
"LightOJ": "2026-01-24",
23+
"Uva": "2026-01-24",
24+
"HackerEarth": "2026-01-24"
2725
},
2826
"modes": {
27+
"CSES": "manual",
2928
"Codeforces": "automatic",
30-
"LeetCode": "automatic",
31-
"AtCoder": "automatic",
3229
"CodeChef": "automatic",
30+
"AtCoder": "automatic",
31+
"LeetCode": "automatic",
3332
"Toph": "automatic",
34-
"LightOJ": "automatic",
35-
"CSES": "manual",
36-
"HackerEarth": "manual",
37-
"SPOJ": "manual",
3833
"VJudge": "automatic",
39-
"Uva": "automatic"
34+
"LightOJ": "automatic",
35+
"Uva": "automatic",
36+
"HackerEarth": "automatic"
4037
},
4138
"last_solved_dates": {
42-
"Codeforces": "2026-01-23",
43-
"LeetCode": "2026-01-10",
44-
"AtCoder": "2025-11-29",
45-
"CodeChef": "2026-01-17",
46-
"Toph": "2026-01-17",
47-
"LightOJ": "2023-08-12",
48-
"CSES": "2025-08-18",
49-
"HackerEarth": "1970-01-01",
50-
"SPOJ": "2025-05-06",
51-
"VJudge": "2025-10-02",
52-
"Uva": "2026-01-17"
39+
"CSES": "2026-01-24",
40+
"Codeforces": "2026-01-24",
41+
"CodeChef": "2026-01-24",
42+
"AtCoder": "2026-01-24",
43+
"LeetCode": "1970-01-01",
44+
"Toph": "1970-01-01",
45+
"VJudge": "1970-01-01",
46+
"LightOJ": "1970-01-01",
47+
"Uva": "1970-01-01",
48+
"HackerEarth": "1970-01-01"
5349
},
5450
"usernames": {
55-
"Codeforces": "MishkatIT",
56-
"LeetCode": "MishkatIT",
51+
"CSES": "165802",
52+
"Codeforces": "ayon",
5753
"AtCoder": "MishkatIT",
5854
"CodeChef": "MishkatIT",
59-
"CSES": "165802",
60-
"Toph": "MishkatIT",
61-
"LightOJ": "mishkatit",
62-
"SPOJ": "mishkatit",
55+
"LeetCode": "MishkatIT",
6356
"HackerEarth": "MishkatIT",
57+
"HackerRank": "MishkatIT",
58+
"LightOJ": "mishkatit",
59+
"Toph": "MishkatIT",
6460
"Uva": "1615470",
6561
"VJudge": "MishkatIT",
66-
"HackerRank": "MishkatIT"
62+
"SPOJ": "mishkatit"
6763
},
6864
"ratings": {
6965
"Codeforces": {
70-
"current": 1330,
71-
"max": 1443,
72-
"rank": "pupil",
73-
"max_rank": "specialist"
66+
"current": 1135,
67+
"max": 1291,
68+
"rank": "newbie",
69+
"max_rank": "pupil"
7470
}
7571
}
7672
}

data/stats.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
2+
"HackerRank": null,
3+
"CSES": 22,
24
"LeetCode": 412,
5+
"AtCoder": 157,
36
"CodeChef": 126,
4-
"HackerEarth": 2,
5-
"CSES": 66,
67
"Toph": 37,
7-
"SPOJ": 18,
8-
"AtCoder": 157,
8+
"SPOJ": null,
99
"VJudge": 347,
10-
"Codeforces": 2609,
10+
"Codeforces": 1582,
1111
"LightOJ": 31,
12-
"HackerRank": null,
13-
"Uva": 7
12+
"Uva": 7,
13+
"HackerEarth": 2
1414
}

docs/CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,23 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [2.1.1] - 2026-01-24
6+
7+
### ✨ Added
8+
9+
#### Windows Batch File Support
10+
- **`spark.bat`** - Interactive batch file for Windows users
11+
- One-click access to all scripts through a user-friendly menu
12+
- Automatic virtual environment creation and activation
13+
- Dependency checking and installation
14+
- Simplified workflow for beginners and Windows users
15+
- No command-line knowledge required
16+
17+
#### Documentation Updates
18+
- Updated `README.md` with batch file instructions
19+
- Enhanced `USERGUIDE.md` with detailed batch file usage
20+
- Added Windows-specific setup guidance
21+
522
## [2.1.0] - 2026-01-23
623

724
### 🎯 Configuration Migration Release

0 commit comments

Comments
 (0)