Closes GH Issue #766, partially closes #520 Prior to this release, no other subscriptions would download if a subscription before it had an error. Now, subscriptions will continue to download even if one has an error, and will be reported in the output summary.
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from typing import List
|
|
from typing import Optional
|
|
|
|
from ytdl_sub.subscriptions.subscription import Subscription
|
|
from ytdl_sub.utils.exceptions import ValidationException
|
|
from ytdl_sub.utils.logger import Logger
|
|
|
|
logger = Logger.get()
|
|
|
|
|
|
def _maybe_validate_transaction_log_file(transaction_log_file_path: Optional[str]) -> None:
|
|
if transaction_log_file_path:
|
|
try:
|
|
with open(transaction_log_file_path, "w", encoding="utf-8"):
|
|
pass
|
|
except Exception as exc:
|
|
raise ValidationException(
|
|
f"Transaction log file '{transaction_log_file_path}' cannot be written to. "
|
|
f"Reason: {str(exc)}"
|
|
) from exc
|
|
|
|
|
|
def output_transaction_log(
|
|
subscriptions: List[Subscription],
|
|
transaction_log_file_path: Optional[str],
|
|
) -> None:
|
|
"""
|
|
Maybe print and/or write transaction logs to a file
|
|
|
|
Parameters
|
|
----------
|
|
subscriptions
|
|
Processed subscriptions
|
|
transaction_log_file_path
|
|
Optional file path to write to
|
|
"""
|
|
transaction_log_file_contents = ""
|
|
for subscription in subscriptions:
|
|
if subscription.transaction_log.is_empty:
|
|
transaction_log_contents = f"\nNo files changed for {subscription.name}"
|
|
else:
|
|
transaction_log_contents = (
|
|
f"Transaction log for {subscription.name}:\n"
|
|
f"{subscription.transaction_log.to_output_message(subscription.output_directory)}"
|
|
)
|
|
|
|
if transaction_log_file_path:
|
|
transaction_log_file_contents += transaction_log_contents
|
|
else:
|
|
logger.info(transaction_log_contents)
|
|
|
|
if transaction_log_file_contents:
|
|
with open(transaction_log_file_path, "w", encoding="utf-8") as transaction_log_file:
|
|
transaction_log_file.write(transaction_log_file_contents)
|