import json import requests def read_packages(filename): """Read packages from file and return as list""" try: with open(filename, 'r') as file: packages = [line.strip() for line in file if line.strip()] return packages except FileNotFoundError: print(f"Error: {filename} not found!") return [] except Exception as e: print(f"Error reading {filename}: {e}") return [] def write_packages(filename, data_list): """ Write a list to a file, with each element on a new line. Args: filename (str): The name of the file to write to data_list (list): The list of items to write to the file """ try: with open(filename, 'w') as file: for item in data_list: file.write(f"{item}\n") print(f"Successfully wrote {len(data_list)} items to {filename}") except Exception as e: print(f"Error writing to file: {e}") def does_package_has_f42_branch(package): endpoint = f"https://src.fedoraproject.org/api/0/rpms/{package}/git/branches" response = requests.get(endpoint) if response.status_code != 200: raise Exception(f"Error getting branch {package}: {response.status_code}") try: branches = response.json()["branches"] except Exception as e: raise Exception(f"Error getting branches of {package}: {e}") if "f42" in branches: return True return False def get_owner_of_package(package): endpoint = f"https://src.fedoraproject.org/api/0/rpms/{package}" response = requests.get(endpoint) if response.status_code != 200: raise Exception(f"Error getting branch {package}: {response.status_code}") try: owner = response.json()["access_users"]["owner"][0] except Exception as e: raise Exception(f"Error getting owner of {package}: {e}") return owner def main(): filename_source = "plus_package_list.txt" filename_result = "result_package_list.txt" package_list = read_packages(filename_source) result_package_list = [] for package in package_list: if not does_package_has_f42_branch(package): owner = get_owner_of_package(package) package_with_owner = f"{package} - {owner}" result_package_list.append(package_with_owner) write_packages(filename_result, result_package_list) if __name__ == "__main__": main()