Automate Islamic lecture audio processing and uploading to archive.org in three simple steps.
Convert Urdu audio files, add professional metadata, and publish to archive.org with a single command.
# Process a single folder (rename → tag → upload → move)
python process_audio.py audio_folders/21_Chapter-Name
# Process ALL pending folders at once
python process_audio.py --all
# Preview changes without applying them
python process_audio.py --all --dry-run
# View all completed uploads
python process_audio.py --historyThat's it! Your audio files are renamed, tagged, uploaded to archive.org, and organized automatically.
▶ Watch the Tutorial (Click to see the complete workflow in action)
- Converts Urdu/Arabic filenames to standardized Roman Urdu
- Adds chapter numbers and lesson identifiers
- Example:
باب شرب خمر درس 1.mp3→21_Al-Shurb-e-Khamr_Dars 01.mp3
- Adds professional ID3 tags (title, artist, album, track number)
- Prepares files for search and discovery
- Works with all major audio formats
- Batch uploads to Internet Archive
- Auto-generates titles, descriptions, tags
- Resumable uploads (if interrupted, just re-run)
- Automatic duplicate detection
- Create professional cover images for archive.org
- Run separately BEFORE uploading (if desired)
- Multiple color templates available (Islamic, Modern, Minimal)
┌─────────────────┐
│ audio_folders/ │ (Urdu audio files)
│ 21_Chapter │
│ 22_Chapter │
└────────┬────────┘
│
▼
[Step 1: RENAME] (urdu-audio-renamer)
Convert Urdu filenames to Roman Urdu
│
▼
[Step 2: TAG] (audio-metadata-editor)
Add ID3 metadata
│
▼
[Step 3: UPLOAD] (archive-uploader)
Upload to archive.org
│
▼
┌──────────────────────┐
│ audio-uploaded-done/ │ (Completed uploads)
└──────────────────────┘
All handled by one command:
python process_audio.py --all| Skill | Purpose | Learn More |
|---|---|---|
| 🔤 urdu-audio-renamer | Rename Urdu files to Roman Urdu with chapter formatting | Read Docs |
| 🏷️ audio-metadata-editor | Add professional ID3 tags (artist, album, title, etc.) | Read Docs |
| 📤 archive-uploader | Upload to archive.org with auto-generated metadata | Read Docs |
- Python 3.8 or higher
- Internet connection (for archive.org uploads)
# Clone the repository
git clone <your-repo-url>
cd 01_Extract Your Human Job Into Skills
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activatepip install mutagen internetarchive pyyaml pillowOnly needed once:
ia configureYou'll be prompted for:
- Email address
- API access key
- API secret key
ia list --help # Should work without errors| Command | Description |
|---|---|
python process_audio.py <folder> |
Process single folder through entire pipeline |
python process_audio.py --all |
Process all pending folders |
python process_audio.py --all --dry-run |
Preview changes without applying |
python process_audio.py --tag-only <folder> |
Only rename and add metadata (skip upload) |
python process_audio.py --upload-only <folder> |
Only upload (assumes already tagged) |
python process_audio.py --history |
View all completed uploads |
python process_audio.py audio_folders/21_Al-Shurb-e-Khamr
# What happens:
# ✓ Renames files: باب شرب خمر درس 1 → Al-Shurb-e-Khamr_Dars 01
# ✓ Adds metadata: title, artist, album, track number
# ✓ Uploads to archive.org
# ✓ Moves to audio-uploaded-done/
# ✓ Result: https://archive.org/details/21-al-shurb-e-khamr-lecture-seriespython process_audio.py --all
# Processes:
# audio_folders/21_Chapter-A
# audio_folders/22_Chapter-B
# audio_folders/23_Chapter-C
# ... (all folders in sequence)python process_audio.py --all --dry-run
# Shows what WOULD happen without making any changes
# Perfect for testing!Customize defaults:
defaults:
artist: "Sheikh Mohammad Mohsin"
album: "Al Fiqh ul Ahwat Lecture Series"
genre: "Islamic Jurisprudence"
language: "Urdu"
collection: "opensource_audio"
base_tags: "Islamic Lecture; Fiqh; Urdu"
folders:
input: "audio_folders"
done: "audio-uploaded-done".
├── process_audio.py # Main unified pipeline (USE THIS!)
├── config.yaml # Configuration file
├── upload_history.json # Auto-generated upload log
├── README.md # This file
├── CLAUDE.md # Technical documentation
│
├── audio_folders/ # Input: Your audio files here
│ ├── 21_Chapter-Name/
│ ├── 22_Chapter-Name/
│ └── ...
│
├── audio-uploaded-done/ # Output: Completed uploads
│ ├── 21_Chapter-Name/
│ ├── 22_Chapter-Name/
│ └── ...
│
└── .claude/skills/ # Individual tools (legacy)
├── urdu-audio-renamer/
├── audio-metadata-editor/
└── archive-uploader/
- ✅ Unified Pipeline - One command for the entire workflow
- ✅ Batch Processing - Handle 100+ folders automatically
- ✅ Smart Metadata - Auto-generates titles, descriptions, tags
- ✅ Resumable Uploads - Interrupted? Just re-run the command
- ✅ Duplicate Detection - Skip already-uploaded items
- ✅ Dry-Run Mode - Preview changes before applying
- ✅ Auto-Organization - Folders move to "done" after upload
- ✅ Optional Thumbnails - Separate script for cover image generation
- ✅ Upload History - Track all uploads in
upload_history.json - ✅ Cross-Platform - Works on Windows, macOS, Linux
If you need more control, use skills individually:
# Step 1: Rename files
python .claude/skills/urdu-audio-renamer/scripts/rename_audio.py <folder>
# Step 2: Edit metadata
python .claude/skills/audio-metadata-editor/scripts/edit_metadata.py <folder> \
--artist "Speaker Name"
# Step 3: Upload
python .claude/skills/archive-uploader/scripts/upload_to_archive.py <folder> \
--creator "Speaker Name" \
--description "Description" \
--tags "tag1; tag2"See individual skill documentation for more options:
Thumbnail generation is completely separate from the upload process. Run this BEFORE uploading if you want cover images:
# Generate thumbnail with default Islamic template
python .claude/skills/archive-uploader/scripts/generate_thumbnail_standalone.py <folder>
# Use a different color template
python .claude/skills/archive-uploader/scripts/generate_thumbnail_standalone.py <folder> \
--template modern
# Custom output filename
python .claude/skills/archive-uploader/scripts/generate_thumbnail_standalone.py <folder> \
--output cover.jpgAvailable templates: islamic (default), modern, minimal
Why separate? Thumbnail generation can cause rate-limiting issues on archive.org. By keeping it separate, you can:
- Upload quickly without thumbnails
- Generate thumbnails later if needed
- Choose when/if to include them
Problem: "SKIP: filename (could not parse)"
Solution: Check filename format. Must follow pattern: <Urdu Text> درس <number>
✓ Correct: باب شرب خمر درس 1.mp3
✗ Wrong: Chapter-Name-1.mp3
Problem: "Failed (status: [400])"
Solution:
- Check internet connection
- Verify archive.org credentials:
ia configure - Re-run command to resume from checkpoint
- Check file sizes (archive.org has limits)
Problem: "No audio files found in folder"
Solution:
- Verify folder path is correct
- Ensure audio files are directly in folder (not subfolders)
- Check file extensions: .mp3, .wav, .m4a supported
Problem: ID3 tags not visible in media player
Solution:
- Close and reopen media player
- Try different player (VLC, foobar2000)
- Verify files were tagged:
python process_audio.py <folder> --dry-run
For more help: See detailed troubleshooting in individual skill docs.
Each upload creates an archive.org item with:
| Item | Format | Example |
|---|---|---|
| Title | <Chapter#> <Chapter Name> Lecture Series |
21 Al Shurb e Khamr Lecture Series |
| Identifier | <chapter#>-<name>-lecture-series |
21-al-shurb-e-khamr-lecture-series |
| URL | https://archive.org/details/{identifier} |
View Example |
| Files | All audio files (+ optional thumbnail) | MP3 files (with optional cover image) |
| Metadata | Searchable tags | Islamic Lecture, Fiqh, Urdu, etc. |
After uploading, find them at:
https://archive.org/details/{identifier}
Example:
https://archive.org/details/21-al-shurb-e-khamr-lecture-series
- 📚 Islamic Education - Preserve and share lecture series
- 🎙️ Podcast Distribution - Upload lectures to archive.org
- 🔬 Academic Content - Organize scholarly materials
- 🌍 Knowledge Sharing - Make educational content freely available
- 🗂️ Content Management - Batch organize and upload audio
Files:
<Chapter-Name>_Dars <XX>.<ext>
Example: Al-Eela_Dars 01.mp3
Folders:
<Chapter#>_<Chapter-Name> (<Total-Lectures>)
Example: 21_Al-Shurb-e-Khamr (02)
The script includes 50+ Islamic jurisprudence terms:
الایلاء → Al-Eela
الصلاۃ → Al-Salat
البیوع → Al-Buyoo
النکاح → Al-Nikah
View complete transliteration map →
-
Install dependencies
pip install mutagen internetarchive pyyaml pillow
-
Configure archive.org
ia configure
-
Place your audio files
audio_folders/ └── 21_Chapter-Name/ ├── file1.mp3 └── file2.mp3 -
Run the pipeline
python process_audio.py audio_folders/21_Chapter-Name
-
Check archive.org
https://archive.org/details/21-al-chapter-name-lecture-series
- Technical Documentation - Advanced configuration and concepts
- Urdu Audio Renamer - File renaming details
- Audio Metadata Editor - Metadata tagging guide
- Archive Uploader - Upload and integration
- 🐛 Report Issues → GitHub Issues
- 💡 Feature Requests → Discussions
- 📧 Contact → your-email@example.com
This project is licensed under the MIT License - see the LICENSE file for details.
Built with:
- Python 3.8+
- Mutagen - Audio metadata
- Internet Archive API - Archive.org integration
- Pillow - Image generation
In this video, you'll learn:
- ✅ How to install and configure
- ✅ How to rename your first batch of files
- ✅ How to add professional metadata
- ✅ How to upload to archive.org
- ✅ How to handle errors and resume uploads
Duration: ~15 minutes | Difficulty: Beginner-Friendly