mirror of
https://github.com/jooray/rss2podcast.git
synced 2025-05-23 07:52:00 +00:00
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from episode_processing_utils import process_episode
|
|
from utils import create_tables, parse_pub_date, get_engine, Episode
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
def process_pending_episodes(config, reprocess=False, episode_limit=None):
|
|
engine = get_engine(config['database'])
|
|
Session = sessionmaker(bind=engine)
|
|
session = Session()
|
|
create_tables(engine)
|
|
|
|
try:
|
|
podcast_id = config.get('podcast_id')
|
|
if not podcast_id:
|
|
podcast_id = config.get('output_rss_feed', {}).get('atom_link', {}).get('href', 'default_podcast_id')
|
|
|
|
if reprocess:
|
|
status_clause = Episode.processing_status.in_(['processed', 'pending', 'reprocess'])
|
|
else:
|
|
status_clause = Episode.processing_status.in_(['pending', 'reprocess'])
|
|
|
|
episodes_query = session.query(Episode).filter(
|
|
status_clause,
|
|
Episode.skipped == False,
|
|
Episode.podcast_id == podcast_id
|
|
)
|
|
|
|
episodes = episodes_query.all()
|
|
|
|
finally:
|
|
session.close()
|
|
|
|
# Sort episodes by parsed_pub_date, newest first
|
|
episodes.sort(key=lambda episode: parse_pub_date(episode.pub_date), reverse=True)
|
|
|
|
if episode_limit:
|
|
episodes = episodes[:episode_limit]
|
|
|
|
for episode in episodes:
|
|
process_episode(episode, config)
|