Apple-Sider

Apple Sider Logo

Apple Sider

🍎 One Click To Scrape Your Entire Library as MP3’s

A simple self-hosted Docker application that lets you upload your Apple Music Library.xml file and automatically downloads your entire music library as high-quality MP3s using the CLI-Music-Downloader.

✨ Features

πŸš€ Installation

# Install Apple Sider
pip install apple-sider

# Install and set up
apple-sider install

# Start the service
apple-sider start

Method 2: Git Clone + Start Script

# Clone the repository
git clone https://github.com/jordolang/Apple-Sider.git
cd Apple-Sider

# Start Apple Sider (builds and runs automatically)
./start.sh

Method 3: Manual Docker Setup

# Build and run with Docker Compose
docker-compose up -d

# Or with plain Docker
docker build -t apple-sider .
docker run -p 8080:8080 -v ~/Music/Apple-Sider:/app/downloads apple-sider

That’s it! Apple Sider will be available at http://localhost:8080

πŸ“‹ CLI Usage

After installing with pip, you can use the apple-sider command:

# Install Apple Sider
apple-sider install

# Start services
apple-sider start

# Check status
apple-sider status

# View logs
apple-sider logs

# Stop services
apple-sider stop

# Restart services
apple-sider restart

# Update to latest version
apple-sider update

# Show configuration
apple-sider config show

# Edit configuration
apple-sider config edit

# Get help
apple-sider --help

πŸ“‹ How to Use

  1. Export your Apple Music library:
    • Open Apple Music (or iTunes)
    • Go to File β†’ Library β†’ Export Library…
    • Save as Library.xml
  2. Upload and download:
    • Open http://localhost:8080 in your browser
    • Drag and drop your Library.xml file
    • Review the library analysis (total tracks, estimated time)
    • Click β€œStart Download” and watch the magic happen!
  3. Monitor progress:
    • Real-time console output shows download progress
    • Progress bar and statistics update automatically
    • Failed downloads can be retried with one click

βš™οΈ Configuration

Apple Sider can be configured through the web interface or by editing config/config.json:

Download Settings

CLI-Music-Downloader Integration

Advanced Settings

πŸ“ Project Structure

Apple-Sider/
β”œβ”€β”€ apple_sider/           # Python package
β”‚   β”œβ”€β”€ __init__.py       # Package initialization
β”‚   β”œβ”€β”€ core.py           # Core application logic
β”‚   └── cli.py            # Command-line interface
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ app.py            # Flask backend application
β”‚   β”œβ”€β”€ parser.py         # Library.xml parser
β”‚   β”œβ”€β”€ config.py         # Configuration management
β”‚   β”œβ”€β”€ downloader.py     # Download queue manager
β”‚   └── static/
β”‚       β”œβ”€β”€ index.html    # Single-page web interface
β”‚       β”œβ”€β”€ style.css     # Apple-inspired styling
β”‚       └── app.js        # Frontend JavaScript
β”œβ”€β”€ config/
β”‚   └── config.json       # Runtime configuration
β”œβ”€β”€ docker-compose.yml    # Docker Compose setup
β”œβ”€β”€ Dockerfile            # Container definition
β”œβ”€β”€ requirements.txt      # Python dependencies
β”œβ”€β”€ setup.py             # pip package setup
β”œβ”€β”€ pyproject.toml       # Modern Python packaging
β”œβ”€β”€ config.example.json  # Configuration template
└── start.sh             # Enhanced start script

πŸ”§ Management Commands

Using the CLI (after pip install)

# Start Apple Sider
apple-sider start

# Check status
apple-sider status

# View logs in real-time
apple-sider logs

# Stop the service
apple-sider stop

# Restart after config changes
apple-sider restart

# Update to latest version
apple-sider update

# Configuration management
apple-sider config show
apple-sider config edit
apple-sider config reset

Using the Start Script

# Start Apple Sider
./start.sh up

# View logs in real-time
./start.sh logs

# Stop the service
./start.sh stop

# Restart after config changes
./start.sh restart

# Update to latest version
./start.sh update

# Show status and health
./start.sh status

# Open shell in container for debugging
./start.sh shell

# Stop and remove everything
./start.sh down

# Clean up all data
./start.sh clean

🌍 Cross-Platform Support

Apple Sider works on:

The enhanced start script automatically detects your platform and provides appropriate installation instructions.

πŸ“‚ Output Structure

Flat Structure (Default)

~/Music/Apple-Sider/
β”œβ”€β”€ The Beatles-Hey Jude.mp3
β”œβ”€β”€ Queen-Bohemian Rhapsody.mp3
β”œβ”€β”€ Pink Floyd-Comfortably Numb.mp3
└── Taylor Swift-Shake It Off.mp3

Nested Structure

~/Music/Apple-Sider/
β”œβ”€β”€ The Beatles/
β”‚   β”œβ”€β”€ Hey Jude.mp3
β”‚   └── Yellow Submarine.mp3
β”œβ”€β”€ Queen/
β”‚   β”œβ”€β”€ Bohemian Rhapsody.mp3
β”‚   └── We Will Rock You.mp3
└── Pink Floyd/
    β”œβ”€β”€ Comfortably Numb.mp3
    └── Wish You Were Here.mp3

🎯 What Gets Downloaded

πŸ” Troubleshooting

Common Issues

Web interface not loading:

# Check if container is running
apple-sider status

# Check logs for errors
apple-sider logs

Downloads failing:

Large libraries timing out:

Reset Everything

Using pip installation:

# Stop services
apple-sider stop

# Reset configuration
apple-sider config reset

# Start fresh
apple-sider start

Using git clone:

# Stop and remove all containers and data
./start.sh clean
rm -rf config/
rm -rf ~/Music/Apple-Sider/

# Start fresh
./start.sh up

πŸ“Š Performance

Performance varies based on:

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes and test thoroughly
  4. Commit your changes: git commit -am 'Add feature'
  5. Push to the branch: git push origin feature-name
  6. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

⭐ Support

If you find Apple Sider useful, please:


Happy downloading! 🎡