Coverage for src / piccione / upload / on_internet_archive.py: 95%

20 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-05-27 20:21 +0000

1# SPDX-FileCopyrightText: 2025 Arcangelo Massari <arcangelo.massari@unibo.it> 

2# 

3# SPDX-License-Identifier: ISC 

4 

5import argparse 

6from pathlib import Path 

7 

8import requests 

9import yaml 

10from internetarchive import upload 

11from rich.console import Console 

12 

13console = Console() 

14 

15 

16def upload_files(config_path: str | Path) -> None: 

17 with Path(config_path).open() as file: 

18 config = yaml.safe_load(file) 

19 

20 identifier = config["identifier"] 

21 file_paths = config["file_paths"] 

22 metadata = config["metadata"] 

23 access_key = config["access_key"] 

24 secret_key = config["secret_key"] 

25 

26 result = upload( 

27 identifier=identifier, 

28 files=file_paths, 

29 metadata=metadata, 

30 access_key=access_key, 

31 secret_key=secret_key, 

32 verbose=True, 

33 verify=True, 

34 retries=3, 

35 retries_sleep=10, 

36 validate_identifier=True, 

37 ) 

38 

39 first_result = result[0] 

40 if isinstance(first_result, requests.Response) and first_result.ok: 

41 console.print("Upload completed successfully!") 

42 else: 

43 console.print("Upload failed.") 

44 

45 

46def main() -> None: # pragma: no cover 

47 parser = argparse.ArgumentParser(description="Upload files to the Internet Archive.") 

48 parser.add_argument("config_path", type=str, help="Path to the YAML configuration file.") 

49 args = parser.parse_args() 

50 

51 upload_files(args.config_path) 

52 

53 

54if __name__ == "__main__": # pragma: no cover 

55 main()