Podcast Crawler is an advanced, async Rust-based podcast management and crawling system designed for efficient podcast data retrieval, storage, and analysis.
- 🚀 Asynchronous Rust implementation
- 📦 Diesel ORM for PostgreSQL database interactions
- 🔍 Flexible podcast and episode crawling
- 📊 Advanced querying capabilities
- 🛡️ Robust error handling
- 📝 Comprehensive logging
- Language: Rust (Edition 2021)
- Async Runtime: Tokio
- ORM: Diesel
- Web Framework: Actix Web
- Logging: Tracing
- Rust 1.67+ (stable)
- PostgreSQL 12+
- Cargo
- diesel_cli
git clone https://github.com/Erinable/podcast_crawler.git
cd podcast_crawlercargo install diesel_cli --no-default-features --features postgres# Create databases
createdb podcast
createdb podcast_test
# Run migrations
diesel migration runCopy .env.example to .env and configure your settings:
cp .env.example .env# Development build
cargo run
# Release build
cargo run --releasecargo test
cargo clippyThe project includes a comprehensive Makefile with various utility commands:
-
make run: Run the project in development mode# Run in dev mode (default) make run # Run in release mode make run BUILD_TYPE=--release
-
make average: Calculate average duration from the most recent log filemake average
-
make pre-commit: Run pre-commit checks to ensure code qualitymake pre-commit
make clean: Clean project build artifactsmake test: Run project testsmake doc: Generate project documentation
- Use
BUILD_TYPE=--releasefor optimized performance - Pre-commit checks help maintain code quality
- Log analysis provides insights into crawler performance
- Uses native CPU target optimizations
- Async design for high concurrency
- Connection pooling
- Efficient database queries
- Environment-based configuration
- Secret detection in pre-commit hooks
- Dependency vulnerability scanning
- Fork the repository
- Create your feature branch
- Commit with conventional commits
- Run pre-commit hooks
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Enhanced podcast discovery
- Machine learning recommendations
- Advanced analytics
- Multi-database support
Arrow Tunner - Mr.han76@outlook.com
Project Link: https://github.com/Erinable/podcast_crawler