11from rich .console import Console
22from rich .panel import Panel
3+ from rich .table import Table
34
45from leetcode .auth import LeetCodeAuth
6+ from leetcode .client import LeetCodeClient
57from leetcode .api import LeetCodeAPI
68
79console = Console ()
@@ -12,21 +14,73 @@ def banner():
1214 Panel .fit (
1315 "[bold cyan]LeetCode Sync[/bold cyan]\n "
1416 "Automatic LeetCode → GitHub Synchronization" ,
15- title = "v0.2 .0" ,
17+ title = "v0.4 .0" ,
1618 )
1719 )
1820
1921
22+ def display_statistics (stats ):
23+ """Display solved problem statistics."""
24+
25+ table = Table (title = "LeetCode Statistics" )
26+
27+ table .add_column ("Difficulty" , style = "cyan" )
28+ table .add_column ("Solved" , justify = "right" , style = "green" )
29+
30+ for item in stats :
31+ table .add_row (
32+ item ["difficulty" ],
33+ str (item ["count" ])
34+ )
35+
36+ console .print (table )
37+
38+
39+ def display_recent_submissions (submissions ):
40+ """Display recent accepted submissions."""
41+
42+ table = Table (title = "Recent Accepted Submissions" )
43+
44+ table .add_column ("ID" , style = "cyan" )
45+ table .add_column ("Title" )
46+ table .add_column ("Date" )
47+
48+ for submission in submissions :
49+ table .add_row (
50+ submission .id ,
51+ submission .title ,
52+ submission .date .strftime ("%Y-%m-%d %H:%M" ),
53+ )
54+
55+ console .print (table )
56+
57+
2058def main ():
2159 banner ()
2260
2361 auth = LeetCodeAuth ()
24- api = LeetCodeAPI (auth .get_session ())
62+ session = auth .get_session ()
63+
64+ client = LeetCodeClient (session )
65+ api = LeetCodeAPI (client )
66+
67+ # Profile
68+ profile = api .get_profile ()
69+
70+ console .print (
71+ f"[bold green]Logged in as:[/bold green] { profile ['username' ]} \n "
72+ )
73+
74+ display_statistics (
75+ profile ["submitStatsGlobal" ]["acSubmissionNum" ]
76+ )
77+
78+ console .print ()
79+
80+ # Recent submissions
81+ submissions = api .get_recent_submissions ()
2582
26- if api .validate_session ():
27- console .print ("[green]✓ Session is valid[/green]" )
28- else :
29- console .print ("[red]✗ Invalid session[/red]" )
83+ display_recent_submissions (submissions )
3084
3185
3286if __name__ == "__main__" :
0 commit comments