1717
1818from bs4 import BeautifulSoup
1919from packageurl import PackageURL
20+ from progress .bar import ChargingBar
2021from univers .versions import AlpineLinuxVersion
2122
2223from vulnerabilities .importer import AdvisoryData
@@ -41,18 +42,26 @@ def advisory_data(self) -> Iterable[AdvisoryData]:
4142 page_response_content = fetch_response (BASE_URL ).content
4243 advisory_directory_links = fetch_advisory_directory_links (page_response_content )
4344 advisory_links = []
44- for advisory_directory_link in advisory_directory_links :
45- advisory_directory_page = fetch_response (advisory_directory_link ).content
46- advisory_links .extend (
47- fetch_advisory_links (advisory_directory_page , advisory_directory_link )
48- )
49- for link in advisory_links :
50- record = fetch_response (link ).json ()
51- if not record ["packages" ]:
52- LOGGER .error (f'"packages" not found in { link !r} ' )
53- continue
54- yield from process_record (record = record , url = link )
55-
45+ progress_for_package_fetch = ChargingBar ("\t Fetching Packages" , max = len (advisory_directory_links ))
46+
47+ try :
48+ progress_for_package_fetch .start ()
49+ for advisory_directory_link in advisory_directory_links :
50+ advisory_directory_page = fetch_response (advisory_directory_link ).content
51+ advisory_links .extend (
52+ fetch_advisory_links (advisory_directory_page , advisory_directory_link )
53+ )
54+ for link in advisory_links :
55+ try :
56+ record = fetch_response (link ).json ()
57+ if not record ["packages" ]:
58+ LOGGER .error (f'"packages" not found in { link !r} ' )
59+ continue
60+ yield from process_record (record = record , url = link )
61+ finally :
62+ progress_for_package_fetch .next ()
63+ finally :
64+ progress_for_package_fetch .finish ()
5665
5766def fetch_advisory_directory_links (page_response_content : str ) -> List [str ]:
5867 """
0 commit comments