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_crawler
cargo install diesel_cli --no-default-features --features postgres
# Create databases
createdb podcast
createdb podcast_test
# Run migrations
diesel migration run
Copy .env.example
to .env
and configure your settings:
cp .env.example .env
# Development build
cargo run
# Release build
cargo run --release
cargo test
cargo clippy
The 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=--release
for 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