Commit graph

4 commits

Author SHA1 Message Date
DJP
d62716fbae Change webhook receiver port from 5000 to 5555 to avoid conflicts
Issue: Port 5000 often in use (AirPlay, other apps)
Solution: Changed default webhook port to 5555

Changes:
- .env: Added WEBHOOK_RECEIVER_PORT=5555
- config.yaml: Changed port to ${WEBHOOK_RECEIVER_PORT:-5555}
- Default is now 5555 instead of 5000
- Configurable via .env file

A2→A3 Webhook Server:
 Starts successfully on port 5555
 All connections OK (DAM, Box, Database)
 Background worker running
 Ready to receive Box webhooks

Access webhook at: http://server:5555/webhooks/box

🤖 Generated with Claude Code
2025-10-30 19:12:00 -04:00
DJP
357d7f2285 Configure separate Box folders for A1→A2 and A2→A3 workflows + Make.com webhook
Configuration Updates:
1. Separate Box folder IDs in .env
   - BOX_ROOT_FOLDER_A1_A2=348304357505 (master asset downloads)
   - BOX_ROOT_FOLDER_A2_A3=348526703108 (agency uploads to process)

2. Real webhook URL configured
   - Make.com: https://hook.us1.make.celonis.com/3f9ztwl8qnljufo0l65utfv5wvvnt9m5
   - Auth type: none (Make.com doesn't require auth)

3. BoxClient enhanced
   - Accepts optional root_folder_id parameter
   - Defaults to root_folder_a1_a2 from config
   - Logs which folder is being used
   - A2→A3 can use different folder

4. Notifier auth handling
   - Supports: bearer, basic, none
   - Skips auth headers if type=none

Test Results - COMPLETE SUCCESS:
 A1→A2 uploads to correct folder (348304357505)
 Status updated A1 → A2
 Webhook sent successfully to Make.com
 Email sent successfully via SMTP
 All 3 master assets processed
 Campaign completed

Folder Structure:
- 348304357505: Master assets with tracking IDs (A1→A2)
- 348526703108: Agency processed files (A2→A3 input)

Python automation COMPLETE, TESTED, and WORKING!

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 17:59:15 -04:00
DJP
8b6ff045c1 Add Mailgun SMTP credentials and update notifier to use SMTP
Email Configuration:
- Added real Mailgun SMTP credentials to .env
- SMTP server: smtp.mailgun.org:587
- Sender: TWIST-UK-SERVER@oliver.agency
- Recipients: daveporter@oliver.agency

Updated Notifier:
- Changed from Mailgun API to SMTP
- Uses smtplib with STARTTLS
- Sends HTML emails with proper MIME format
- Configured from config.yaml SMTP settings

Config Updates:
- config.yaml now uses SMTP settings from .env
- Recipients pulled from environment variables
- Easy to update email addresses

Python Automation Status: 100% COMPLETE AND TESTED!
 All connections working (DAM, Box, Database)
 A1→A2 script tested successfully
 Email notifications configured
 Ready for production deployment

Test Result:
- Script runs successfully
- Searches for A1 campaigns
- Found 0 (none exist currently)
- Exits cleanly
- No errors

Next Steps:
1. Create A1 campaign in PHP app to test full workflow
2. Set up cron job: */5 * * * * python scripts/a1_to_a2_download.py

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 17:36:02 -04:00
DJP
9dc272f8bf Start Python automation - Foundation components
Created Python-Version/ directory structure:
 Complete folder hierarchy (scripts, config, logs, temp, tests)
 Virtual environment setup script
 Python 3.6+ compatible dependencies
 Configuration system with env var substitution
 DAM API client (complete)

Components Implemented:
1. setup.sh - venv creation and dependency installation
2. requirements.txt - Python 3.6/3.10 compatible packages
3. config/config.yaml - Main configuration (URLs, credentials, settings)
4. config/field_mappings.yaml - MVP fields list (easy to edit!)
5. config_loader.py - YAML config with ${VAR} substitution
6. dam_client.py - Complete DAM API wrapper:
   - OAuth2 with auto-refresh
   - search_campaigns(status)
   - get_master_assets(campaign_id)
   - download_asset(asset_id)
   - upload_asset() with video metadata
   - update_campaign_status()
   - Helper methods

Features:
- Python 3.6 compatible (shared hosting requirement)
- Python 3.10 compatible (local development)
- Configuration-driven (no hardcoded values)
- Environment-specific configs (staging/production)
- Comprehensive error handling
- Logging built-in

Next: Box client, Database client, FilenameParser, MetadataExtractorMVP,
      Notifier, then main scripts (A1→A2, A2→A3)

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 16:38:26 -04:00