66
77from leetcode_export ._version import __version__
88from leetcode_export .leetcode import LeetCode
9+ from leetcode_export .utils import VALID_PROGRAMMING_LANGUAGES
910
1011
1112def parse_args ():
12- parser = argparse .ArgumentParser (description = 'Export LeetCode solutions' )
13+ parser = argparse .ArgumentParser (description = 'Export LeetCode solutions' , formatter_class = argparse . RawTextHelpFormatter )
1314 parser .add_argument ('--cookies' , type = str , help = 'set LeetCode cookies' )
1415 parser .add_argument ('--folder' , type = str , default = '.' , help = 'set output folder' )
1516 parser .add_argument ('--problem-filename' , type = str , default = '${question_id} - ${title_slug}.html' ,
@@ -22,14 +23,30 @@ def parse_args():
2223 default = '${date_formatted} - ${status_display} - runtime ${runtime} - memory ${memory}.${extension}' ,
2324 help = 'submission filename format' )
2425 parser .add_argument ('--only-accepted' , dest = 'only_accepted' , action = 'store_true' , help = 'save accepted submissions only' )
26+ parser .add_argument ('--language' , dest = 'language_unprocessed' , type = str ,
27+ help = "only save submissions for the specified programming languages (eg. '--language=python,python3,cpp,java,golang')\n " +
28+ "supported languages: 'python', 'python3', 'c', 'cpp', 'csharp', 'java', 'kotlin', 'mysql', 'mssql', 'oraclesql',\n " +
29+ " 'javascript', 'html', 'php', 'golang', 'scala', 'pythonml', 'rust', 'ruby', 'bash', 'swift'" )
2530 parser .add_argument ('-v' , '--verbose' , dest = 'verbose' , action = 'store_true' , help = 'enable verbose logging details' )
2631 parser .add_argument ('-vv' , '--extra-verbose' , dest = 'extra_verbose' , action = 'store_true' ,
2732 help = 'enable more verbose logging details' )
2833 parser .add_argument ('-V' , '--version' , action = 'version' ,
2934 version = '%(prog)s {version}' .format (version = __version__ ))
3035 parser .set_defaults (verbose = False , extra_verbose = False )
3136
32- return parser .parse_args ()
37+ args = parser .parse_args ()
38+
39+ if args .language_unprocessed :
40+ languages = args .language_unprocessed .split (',' )
41+ args .language = [lang .strip () for lang in languages ]
42+ for lang in languages :
43+ if lang not in VALID_PROGRAMMING_LANGUAGES :
44+ parser .error (f"Invalid language: '{ lang } '" )
45+ args .language = languages
46+ else :
47+ args .language = None
48+
49+ return args
3350
3451
3552def main ():
@@ -79,6 +96,9 @@ def main():
7996 if args .only_accepted and submission .status_display != 'Accepted' :
8097 continue
8198
99+ if args .language and submission .lang not in args .language :
100+ continue
101+
82102 if not os .path .exists (submission .title_slug ):
83103 os .mkdir (submission .title_slug )
84104 os .chdir (submission .title_slug )
0 commit comments