1
0

Implemented content upload app with tests and pre-commit hooks

This commit is contained in:
2026-03-13 11:30:28 +00:00
commit 342d39d457
33 changed files with 2740 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
from __future__ import annotations
from content_automation.adapters.social.instagram import InstagramAdapter
from content_automation.adapters.social.youtube import YouTubeAdapter
from content_automation.adapters.storage.base import StorageAdapterBase
from content_automation.adapters.storage.local import LocalFilesystemStorageAdapter
from content_automation.adapters.storage.s3 import S3StorageAdapter
from content_automation.interfaces import SocialNetworkAdapter
from content_automation.settings import AppSettings
def build_storage_adapter(settings: AppSettings) -> StorageAdapterBase:
backend = settings.storage.backend.lower()
if backend == "local":
return LocalFilesystemStorageAdapter(
root_directory=settings.storage.local.root_directory
)
if backend == "s3":
return S3StorageAdapter(
bucket_name=settings.storage.s3.bucket_name,
key_prefix=settings.storage.s3.key_prefix,
region_name=settings.storage.s3.region_name,
endpoint_url=settings.storage.s3.endpoint_url,
public_url_base=settings.storage.s3.public_url_base,
url_expiration_seconds=settings.storage.s3.url_expiration_seconds,
)
raise ValueError(f"Unsupported storage backend: {settings.storage.backend}")
def build_social_adapters(settings: AppSettings) -> dict[str, SocialNetworkAdapter]:
return {
"instagram": InstagramAdapter(
access_token=settings.instagram.access_token,
user_id=settings.instagram.user_id,
api_version=settings.instagram.api_version,
),
"youtube": YouTubeAdapter(
access_token=settings.youtube.access_token,
category_id=settings.youtube.category_id,
privacy_status=settings.youtube.privacy_status,
use_resumable_upload=settings.youtube.use_resumable_upload,
resumable_chunk_size=settings.youtube.resumable_chunk_size,
credentials_file_path=settings.youtube.credentials_file_path or None,
refresh_token=settings.youtube.refresh_token or None,
client_id=settings.youtube.client_id or None,
client_secret=settings.youtube.client_secret or None,
token_uri=settings.youtube.token_uri,
scopes=settings.youtube.scopes,
expiry=settings.youtube.expiry or None,
),
}