@@ -28,20 +28,172 @@ def print_info():
2828 Options:
2929 -l List level records
3030 -a [lid] Add a level record
31- -aj [lid path] Download a level record to json file
32- -af [path] Add from the json file
31+ -sj [lid path] Save a level record to json file
32+ -aj [path] Add a level record from a json file
3333 -ac [lid] Add a level card record without info and walkthrough
3434 -acr [lid lid] Add a range of level card records
35- -rm [lid] Remove one level
35+ -rm [lid] Remove one level record
3636 -u [lid] Update a level record
3737
38- -lz [Level.LevelID] List zip file records
39- -az [Level.LevelID Zip.name Zip.size Zip.md5sum]
40- Optional and in order [Zip.url Zip.version Zip.release] Add a zip file
38+ -ld [Level.LevelID] List download files records
39+ -ad [Level.LevelID Zip.name Zip.size Zip.md5sum]
40+ Add a local zip file to a level without a file
4141"""
4242 print (help_text .strip ())
4343
4444
45+ def list_levels ():
46+ """List all level in the database."""
47+ con = database_make_connection ()
48+ print_list (con )
49+ con .close ()
50+
51+
52+ def add_level (lid ):
53+ """Add a level by taking the lid number."""
54+ data = data_factory .make_trle_tombll_data ()
55+
56+ soup = scrape_trle .scrape_common .get_soup (trle_level_url (lid ))
57+ scrape_trle .get_trle_level (soup , data )
58+
59+ if data ['title' ]:
60+ con = database_make_connection ()
61+ database_begin_write (con )
62+ add_tombll_json_to_database (data , con )
63+ database_commit_and_close (con )
64+ print (f"lid { lid } with title \" { data ['title' ]} \" added successfully." )
65+ else :
66+ print (f"lid { lid } was an empty page." )
67+
68+
69+ def save_json_level (lid , path ):
70+ """Save a level to a json file on disk by taking the lid number."""
71+ data = data_factory .make_trle_tombll_data ()
72+
73+ soup = scrape_trle .scrape_common .get_soup (trle_level_url (lid ))
74+ scrape_trle .get_trle_level (soup , data )
75+
76+ if data ['title' ]:
77+ with open (path , mode = 'w' , encoding = 'utf-8' ) as json_file :
78+ json .dump (data , json_file )
79+ print (
80+ f"lid { lid } with title \" { data ['title' ]} \" "
81+ f"saved to { path } successfully."
82+ )
83+ else :
84+ print (f"lid { lid } was an empty page." )
85+
86+
87+ def add_file (path ):
88+ """Add a level from a json file on disk."""
89+ data = tombll_common .get_tombll_json (path )
90+
91+ con = database_make_connection ()
92+ database_begin_write (con )
93+ add_tombll_json_to_database (data , con )
94+ database_commit_and_close (con )
95+ print (f"File { path } with title \" { data ['title' ]} \" added successfully." )
96+
97+
98+ def add_level_card (lid ):
99+ """Add a level card by taking the lid number."""
100+ data = data_factory .make_trle_tombll_data ()
101+
102+ soup = scrape_trle .scrape_common .get_soup (trle_level_url (lid ))
103+ scrape_trle .get_trle_level_card (soup , data )
104+
105+ if data ['title' ]:
106+ con = database_make_connection ()
107+ database_begin_write (con )
108+ add_tombll_json_to_database (data , con )
109+ database_commit_and_close (con )
110+ print (f"lid { lid } card with title \" { data ['title' ]} \" added successfully." )
111+ else :
112+ print (f"lid { lid } was an empty page." )
113+
114+
115+ def add_level_card_range (range_a , range_b ):
116+ """Add a level card by taking a lid range."""
117+ for i in range (min (int (range_a ), int (range_b )), max (int (range_a ), int (range_b )) + 1 ):
118+ data = data_factory .make_trle_tombll_data ()
119+ soup = scrape_trle .scrape_common .get_soup (trle_level_url (i ))
120+ scrape_trle .get_trle_level_card (soup , data )
121+
122+ if data ['title' ]:
123+ con = database_make_connection ()
124+ database_begin_write (con )
125+ add_tombll_json_to_database (data , con )
126+ database_commit_and_close (con )
127+ print (f"lid { i } card with title \" { data ['title' ]} \" added successfully." )
128+ else :
129+ print (f"lid { i } was an empty page." )
130+
131+ time .sleep (5 )
132+
133+
134+ def remove_level (lid ):
135+ """Remove a level from the database by taking the lid number."""
136+ con = database_make_connection ()
137+ database_level_id = tombll_read .database_level_id (lid , con )
138+
139+ database_begin_write (con )
140+ tombll_delete .database_level (database_level_id , con )
141+ database_commit_and_close (con )
142+ print (f"lid { lid } removed successfully." )
143+
144+
145+ def update_level (lid ):
146+ """Update a level by taking the lid number."""
147+ data = data_factory .make_trle_tombll_data ()
148+
149+ soup = scrape_trle .scrape_common .get_soup (trle_level_url (lid ))
150+ scrape_trle .get_trle_level (soup , data )
151+
152+ if data ['title' ]:
153+ con = database_make_connection ()
154+ level_id = tombll_read .database_level_id (lid , con )
155+
156+ database_begin_write (con )
157+ update_tombll_json_to_database (data , level_id , con )
158+ database_commit_and_close (con )
159+ print (f"lid { lid } with title \" { data ['title' ]} \" updated successfully." )
160+ else :
161+ print (f"lid { lid } was an empty page." )
162+
163+
164+ def add_download (lid , name , size , md5 ):
165+ """Add a download file to a level by taking the lid number."""
166+ data = data_factory .make_zip_file ()
167+ data ["name" ] = name
168+ data ["size" ] = size
169+ data ["md5" ] = md5
170+ data ["url" ] = None
171+ data ["release" ] = None
172+ data ["version" ] = None
173+
174+ con = database_make_connection ()
175+ database_begin_write (con )
176+ tombll_create .database_zip_file (data , lid , con )
177+ database_commit_and_close (con )
178+
179+
180+ def list_downloads (lid ):
181+ """List all download files for a level by taking the lid number."""
182+ con = database_make_connection ()
183+ print_download_list (lid , con )
184+ con .close ()
185+
186+
187+ def get_local_page (offset , con ):
188+ """Pass down API to get a TRLE page from the database."""
189+ return tombll_read .trle_page (offset , con , sort_latest_first = True )
190+
191+
192+ def get_trle_page (offset ):
193+ """Pass down API to scrape a TRLE page from "trle.net"."""
194+ return scrape_trle .get_trle_page (offset , sort_created_first = True )
195+
196+
45197def database_make_connection ():
46198 """
47199 Get a connection to the database.
@@ -343,136 +495,34 @@ def update_tombll_json_to_database(data, level_id, con):
343495 sys .exit (1 )
344496
345497 if (sys .argv [1 ] == "-l" and number_of_argument == 2 ):
346- main_con = database_make_connection ()
347- print_list (main_con )
348- main_con .close ()
498+ list_levels ()
349499
350500 elif (sys .argv [1 ] == "-a" and number_of_argument == 3 ):
351- main_lid = sys .argv [2 ]
352- main_data = data_factory .make_trle_tombll_data ()
353-
354- main_soup = scrape_trle .scrape_common .get_soup (trle_level_url (main_lid ))
355- scrape_trle .get_trle_level (main_soup , main_data )
356-
357- if main_data ['title' ]:
358- main_con = database_make_connection ()
359- database_begin_write (main_con )
360- add_tombll_json_to_database (main_data , main_con )
361- database_commit_and_close (main_con )
362- print (f"lid { main_lid } with title \" { main_data ['title' ]} \" added successfully." )
363- else :
364- print (f"lid { main_lid } was an empty page." )
365-
366- elif (sys .argv [1 ] == "-aj" and number_of_argument == 4 ):
367- main_lid = sys .argv [2 ]
368- main_path = sys .argv [3 ]
369- main_data = data_factory .make_trle_tombll_data ()
370-
371- main_soup = scrape_trle .scrape_common .get_soup (trle_level_url (main_lid ))
372- scrape_trle .get_trle_level (main_soup , main_data )
373-
374- if main_data ['title' ]:
375- with open (main_path , mode = 'w' , encoding = 'utf-8' ) as json_file :
376- json .dump (main_data , json_file )
377- print (
378- f"lid { main_lid } with title \" { main_data ['title' ]} \" "
379- f"saved to { main_path } successfully."
380- )
381- else :
382- print (f"lid { main_lid } was an empty page." )
501+ add_level (sys .argv [2 ])
383502
384- elif (sys .argv [1 ] == "-af" and number_of_argument == 3 ):
385- main_path = sys .argv [2 ]
386- main_data = tombll_common .get_tombll_json (main_path )
503+ elif (sys .argv [1 ] == "-sj" and number_of_argument == 4 ):
504+ save_json_level (sys .argv [2 ], sys .argv [3 ])
387505
388- main_con = database_make_connection ()
389- database_begin_write (main_con )
390- add_tombll_json_to_database (main_data , main_con )
391- database_commit_and_close (main_con )
392- print (f"File { main_path } with title \" { main_data ['title' ]} \" added successfully." )
506+ elif (sys .argv [1 ] == "-aj" and number_of_argument == 3 ):
507+ add_file (sys .argv [2 ])
393508
394509 elif (sys .argv [1 ] == "-ac" and number_of_argument == 3 ):
395- main_lid = sys .argv [2 ]
396- main_data = data_factory .make_trle_tombll_data ()
397-
398- main_soup = scrape_trle .scrape_common .get_soup (trle_level_url (main_lid ))
399- scrape_trle .get_trle_level_card (main_soup , main_data )
400-
401- if main_data ['title' ]:
402- main_con = database_make_connection ()
403- database_begin_write (main_con )
404- add_tombll_json_to_database (main_data , main_con )
405- database_commit_and_close (main_con )
406- print (f"lid { main_lid } card with title \" { main_data ['title' ]} \" added successfully." )
407- else :
408- print (f"lid { main_lid } was an empty page." )
510+ add_level_card (sys .argv [2 ])
409511
410512 elif (sys .argv [1 ] == "-acr" and number_of_argument == 4 ):
411- main_range_a = int (sys .argv [2 ])
412- main_range_b = int (sys .argv [3 ])
413-
414- for i in range (min (main_range_a , main_range_b ), max (main_range_a , main_range_b ) + 1 ):
415- main_data = data_factory .make_trle_tombll_data ()
416- main_soup = scrape_trle .scrape_common .get_soup (trle_level_url (i ))
417- scrape_trle .get_trle_level_card (main_soup , main_data )
418-
419- if main_data ['title' ]:
420- main_con = database_make_connection ()
421- database_begin_write (main_con )
422- add_tombll_json_to_database (main_data , main_con )
423- database_commit_and_close (main_con )
424- print (f"lid { i } card with title \" { main_data ['title' ]} \" added successfully." )
425- else :
426- print (f"lid { i } was an empty page." )
427-
428- time .sleep (5 )
513+ add_level_card_range (sys .argv [2 ], sys .argv [3 ])
429514
430515 elif (sys .argv [1 ] == "-rm" and number_of_argument == 3 ):
431- main_lid = sys .argv [2 ]
432- main_con = database_make_connection ()
433- main_database_level_id = tombll_read .database_level_id (main_lid , main_con )
434-
435- database_begin_write (main_con )
436- tombll_delete .database_level (main_database_level_id , main_con )
437- database_commit_and_close (main_con )
438- print (f"lid { main_lid } removed successfully." )
516+ remove_level (sys .argv [2 ])
439517
440518 elif (sys .argv [1 ] == "-u" and number_of_argument == 3 ):
441- main_lid = sys .argv [2 ]
442- main_data = data_factory .make_trle_tombll_data ()
443-
444- main_soup = scrape_trle .scrape_common .get_soup (trle_level_url (main_lid ))
445- scrape_trle .get_trle_level (main_soup , main_data )
519+ update_level (sys .argv [2 ])
446520
447- if main_data ['title' ]:
448- main_con = database_make_connection ()
449- main_level_id = tombll_read .database_level_id (main_lid , main_con )
521+ elif (sys .argv [1 ] == "-ld" and number_of_argument == 3 ):
522+ list_downloads (sys .argv [2 ])
450523
451- database_begin_write (main_con )
452- update_tombll_json_to_database (main_data , main_level_id , main_con )
453- database_commit_and_close (main_con )
454- print (f"lid { main_lid } with title \" { main_data ['title' ]} \" updated successfully." )
455- else :
456- print (f"lid { main_lid } was an empty page." )
457-
458- elif (sys .argv [1 ] == "-lz" and number_of_argument == 3 ):
459- main_con = database_make_connection ()
460- print_download_list (sys .argv [2 ], main_con )
461- main_con .close ()
462-
463- elif (sys .argv [1 ] == "-az" and number_of_argument >= 6 ):
464- main_data = data_factory .make_zip_file ()
465- main_data ["name" ] = sys .argv [3 ]
466- main_data ["size" ] = sys .argv [4 ]
467- main_data ["md5" ] = sys .argv [5 ]
468- main_data ["url" ] = sys .argv [6 ] if number_of_argument >= 7 else None
469- main_data ["release" ] = sys .argv [7 ] if number_of_argument >= 8 else None
470- main_data ["version" ] = sys .argv [8 ] if number_of_argument >= 9 else None
471-
472- main_con = database_make_connection ()
473- database_begin_write (main_con )
474- tombll_create .database_zip_file (main_data , sys .argv [2 ], main_con )
475- database_commit_and_close (main_con )
524+ elif (sys .argv [1 ] == "-ad" and number_of_argument == 6 ):
525+ add_download (sys .argv [2 ], sys .argv [3 ], sys .argv [4 ], sys .argv [5 ])
476526
477527 else :
478528 print_info ()
0 commit comments