hvac-kia-content/debug_youtube_detailed.py
Ben Reed 05218a873b Fix critical production issues and improve spec compliance
Production Readiness Improvements:
- Fixed scheduling to match spec (8 AM & 12 PM ADT instead of 6 AM/6 PM)
- Enabled NAS synchronization in production runner with error handling
- Fixed file naming convention to spec format (hvacknowitall_combined_YYYY-MM-DD-THHMMSS.md)
- Made systemd services portable (removed hardcoded user/paths)
- Added environment variable validation on startup
- Moved DISPLAY/XAUTHORITY to .env configuration

Systemd Improvements:
- Created template service file (@.service) for any user
- Changed all paths to /opt/hvac-kia-content
- Updated installation script for portable deployment
- Fixed service dependencies and resource limits

Documentation:
- Created comprehensive PRODUCTION_TODO.md with 25 tasks
- Added PRODUCTION_GUIDE.md with deployment instructions
- Documented spec compliance gaps (65% complete)

Remaining work includes retry logic, connection pooling, media downloads,
and pytest test suite as documented in PRODUCTION_TODO.md

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 20:07:55 -03:00

64 lines
No EOL
2.1 KiB
Python

#!/usr/bin/env python3
"""
Debug YouTube scraper to see why only 3 videos are found.
"""
import os
import sys
from pathlib import Path
from dotenv import load_dotenv
import yt_dlp
# Load environment variables
load_dotenv()
def debug_youtube_channel():
"""Debug YouTube channel fetching with detailed output."""
channel_url = os.getenv('YOUTUBE_CHANNEL_URL', 'https://www.youtube.com/@HVACKnowItAll')
print(f"Testing channel: {channel_url}")
# Basic options for debugging
ydl_opts = {
'quiet': False, # Enable verbose output
'extract_flat': True, # Just get video list
'playlistend': 50, # Try to get 50 videos
'ignoreerrors': True,
}
try:
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
print("Extracting channel info...")
channel_info = ydl.extract_info(channel_url, download=False)
print(f"\nChannel info keys: {list(channel_info.keys())}")
if 'entries' in channel_info:
videos = list(channel_info['entries'])
print(f"\n✅ Found {len(videos)} videos")
# Show first few video details
for i, video in enumerate(videos[:10]):
if video:
print(f" {i+1}. {video.get('title', 'N/A')} (ID: {video.get('id', 'N/A')})")
else:
print(f" {i+1}. [Empty/None video entry]")
if len(videos) > 10:
print(f" ... and {len(videos) - 10} more videos")
else:
print("❌ No 'entries' key found in channel info")
print(f"Available keys: {list(channel_info.keys())}")
# Check if it's a playlist format
if 'playlist_count' in channel_info:
print(f"Playlist count: {channel_info['playlist_count']}")
except Exception as e:
print(f"❌ Error: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
debug_youtube_channel()