""" Debug routes for troubleshooting Podcastrr issues. """ from flask import Blueprint, jsonify, render_template, request from app.models.podcast import Podcast from app.services.podcast_updater import PodcastUpdater import logging debug_bp = Blueprint('debug', __name__, url_prefix='/debug') @debug_bp.route('/test-feed') def test_feed(): """ Test RSS feed parsing for debugging. """ feed_url = request.args.get('url') if not feed_url: return jsonify({'error': 'No feed URL provided'}), 400 try: updater = PodcastUpdater() # Create a temporary podcast object for testing temp_podcast = type('obj', (object,), { 'id': 0, 'feed_url': feed_url, 'title': 'Test Podcast' }) # Try to fetch episodes logging.info(f"Testing feed URL: {feed_url}") episodes = updater.fetch_episodes(temp_podcast) return jsonify({ 'success': True, 'feed_url': feed_url, 'episodes_found': len(episodes), 'episodes': [ { 'title': ep.get('title', 'No title'), 'description': ep.get('description', 'No description')[:100] + '...' if ep.get( 'description') else 'No description', 'pub_date': str(ep.get('pub_date', 'No date')), 'audio_url': ep.get('audio_url', 'No audio URL') } for ep in episodes[:5] # Show first 5 episodes ] }) except Exception as e: logging.error(f"Error testing feed {feed_url}: {str(e)}") return jsonify({ 'success': False, 'error': str(e), 'feed_url': feed_url }), 500 @debug_bp.route('/podcast-info/') def podcast_info(podcast_id): """ Get detailed information about a podcast for debugging. """ try: podcast = Podcast.query.get_or_404(podcast_id) return jsonify({ 'success': True, 'podcast': { 'id': podcast.id, 'title': podcast.title, 'author': podcast.author, 'feed_url': podcast.feed_url, 'image_url': podcast.image_url, 'description': podcast.description[:200] + '...' if podcast.description else None, 'last_updated': str(podcast.last_updated) if podcast.last_updated else None, 'episode_count': len(podcast.episodes) if hasattr(podcast, 'episodes') else 0 } }) except Exception as e: logging.error(f"Error getting podcast info for ID {podcast_id}: {str(e)}") return jsonify({ 'success': False, 'error': str(e) }), 500 @debug_bp.route('/logs') def view_logs(): """ View recent application logs. """ try: # This is a simple log viewer - in production you'd want proper log management return render_template('debug/logs.html') except Exception as e: return jsonify({'error': str(e)}), 500