You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9.9 KiB
9.9 KiB
راهنمای راهاندازی کامل سیستم Podcast
مراحل به ترتیب اجرا
1️⃣ اعمال Migration
ابتدا باید migration های podcast را اجرا کنید:
python manage.py migrate podcast
خروجی مورد انتظار:
Operations to perform:
Apply all migrations: podcast
Running migrations:
Applying podcast.0003_refactor_podcast_models... OK
2️⃣ پاکسازی دادههای قدیمی (اختیاری)
اگر دادههای قدیمی پادکست دارید، ابتدا آنها را پاک کنید:
python manage.py cleanup_podcast_data --confirm
این دستور چه کاری انجام میدهد:
- ✅ تمام PodcastCategory ها را حذف میکند
- ✅ تمام PodcastCollection ها را حذف میکند
- ✅ تمام PodcastPlaylist ها را حذف میکند
- ✅ تمام PlaylistItem ها را حذف میکند
- ✅ Podcast ها را حذف نمیکند (دادههای اصلی حفظ میشوند)
خروجی نمونه:
=== Current Data Count ===
PodcastCategory: 3
PodcastCollection: 4
PodcastPlaylist: 2
PlaylistItem: 12
=== Podcast Data Will NOT Be Deleted ===
✓ Deleted 12 PlaylistItems
✓ Deleted 2 PodcastPlaylists
✓ Deleted 4 PodcastCollections
✓ Deleted 3 PodcastCategories
✓ All data deleted successfully!
3️⃣ تبدیل ویدیوها به پادکست
این مرحله مهمترین مرحله است. ویدیوها را به پادکست (صدا) تبدیل میکند:
python manage.py convert_videos_to_podcasts
این دستور چه کاری انجام میدهد:
- 🎥 تمام ویدیوهای موجود را پیدا میکند
- 🎵 با ffmpeg صدای هر ویدیو را استخراج میکند (به فرمت MP3)
- 🖼️ Thumbnail ویدیو را کپی میکند
- 📝 Title و Description را کپی میکند
- ⏱️ مدت زمان (duration) را کپی میکند
- 💾 همه را به عنوان Podcast ذخیره میکند
گزینههای اضافی:
# فقط 5 ویدیو اول را تبدیل کن (برای تست)
python manage.py convert_videos_to_podcasts --limit 5
# پادکستهای موجود را نادیده بگیر
python manage.py convert_videos_to_podcasts --skip-existing
# حالت آزمایشی (هیچ چیز تغییر نمیکند، فقط نمایش میدهد)
python manage.py convert_videos_to_podcasts --dry-run
خروجی نمونه:
Found 31 videos to convert
This process will take time as it extracts audio from each video...
Processing: Жизнь Пророка Мухаммада
Extracting audio...
Running ffmpeg...
✓ Audio extracted: 45.23 MB
✓ Thumbnail copied
✓ Saved podcast: Жизнь Пророка Мухаммада (slug: zhizn-proroka-mukhammada)
Processing: Истории пророков в Коране
Extracting audio...
Running ffmpeg...
✓ Audio extracted: 38.67 MB
✓ Thumbnail copied
✓ Saved podcast: Истории пророков в Коране (slug: istorii-prorokov-v-korane)
...
✓ Conversion complete!
Processed: 31
Skipped: 0
Failed: 0
⚠️ نکات مهم:
- این فرآیند زمانبر است (بسته به تعداد و حجم ویدیوها)
- نیاز به ffmpeg نصب شده دارد (قبلاً نصب شده است)
- فضای دیسک کافی برای فایلهای صوتی لازم است
4️⃣ ایجاد 10 پلیلیست پادکست
حالا پادکستها را در 10 پلیلیست سازماندهی میکنیم:
python manage.py create_podcast_playlists
این دستور چه کاری انجام میدهد:
- 📚 10 پلیلیست با عناوین روسی درباره پیامبران و امامان ایجاد میکند
- 🎵 تمام پادکستهای موجود را به هر پلیلیست اضافه میکند
- ⏱️ مدت زمان کل هر پلیلیست را محاسبه میکند
- 💾 همه را ذخیره میکند
پلیلیستهای ایجاد شده:
- Лекции о Пророке Мухаммаде (لکچرهای صوتی درباره پیامبر محمد)
- Истории пророков в аудио формате (داستانهای پیامبران به صورت صوتی)
- Имам Али: Аудио наставления (امام علی: راهنماییهای صوتی)
- Имам Хусейн: Аудио о Кербеле (امام حسین: صوتی درباره کربلا)
- Двенадцать Имамов: Аудио курс (دوازده امام: دوره صوتی)
- Фатима аз-Захра: Аудио лекции (فاطمه زهرا: لکچرهای صوتی)
- Имам Махди: Аудио о ожидании (امام مهدی: صوتی درباره انتظار)
- Чудеса пророков: Аудио рассказы (معجزات پیامبران: داستانهای صوتی)
- Нравственность Ахль аль-Байт: Аудио (اخلاق اهلبیت: صوتی)
- Имам Риза: Аудио наследие (امام رضا: میراث صوتی)
خروجی نمونه:
Found 31 podcasts in database
Creating 10 playlists...
✓ Created playlist: Лекции о Пророке Мухаммаде
Added 31 podcasts to playlist
Total duration: 1 day, 22:33:23
✓ Created playlist: Истории пророков в аудио формате
Added 31 podcasts to playlist
Total duration: 1 day, 22:33:23
...
✓ Successfully created 10 playlists!
✓ Each playlist contains all 31 podcasts
گزینههای اضافی:
# حالت آزمایشی (بدون ایجاد واقعی)
python manage.py create_podcast_playlists --dry-run
5️⃣ بررسی نتیجه نهایی
برای اطمینان از موفقیتآمیز بودن تمام مراحل:
python manage.py shell -c "
from apps.podcast.models import Podcast, PodcastPlaylist, PodcastCollection, PodcastCategory, PlaylistItem
print('=== Final Database State ===')
print(f'Podcasts: {Podcast.objects.count()}')
print(f'Playlists: {PodcastPlaylist.objects.count()}')
print(f'PlaylistItems: {PlaylistItem.objects.count()}')
print(f'Collections: {PodcastCollection.objects.count()}')
print(f'Categories: {PodcastCategory.objects.count()}')
print('\n=== Sample Podcast ===')
p = Podcast.objects.first()
if p:
print(f'Title: {p.title}')
print(f'Slug: {p.slug}')
print(f'Audio file: {p.audio_file.name if p.audio_file else \"None\"}')
print(f'Duration: {p.audio_time}')
print('\n=== Sample Playlist ===')
pl = PodcastPlaylist.objects.first()
if pl:
print(f'Title: {pl.title}')
print(f'Slug: {pl.slug}')
print(f'Podcasts in playlist: {pl.playlist_items.count()}')
print(f'Total time: {pl.total_time}')
"
خروجی مورد انتظار:
=== Final Database State ===
Podcasts: 31
Playlists: 10
PlaylistItems: 310
Collections: 0
Categories: 0
=== Sample Podcast ===
Title: Жизнь Пророка Мухаммада
Slug: zhizn-proroka-mukhammada
Audio file: podcast/audio/zhizn-proroka-mukhammada.mp3
Duration: 01:30:45
=== Sample Playlist ===
Title: Лекции о Пророке Мухаммаде
Slug: lektsii-o-proroke-mukhammade
Podcasts in playlist: 31
Total time: 1 day, 22:33:23
📋 خلاصه دستورات (به ترتیب)
# 1. اعمال migration
python manage.py migrate podcast
# 2. پاکسازی دادههای قدیمی (اختیاری)
python manage.py cleanup_podcast_data --confirm
# 3. تبدیل ویدیوها به پادکست (مهم!)
python manage.py convert_videos_to_podcasts
# 4. ایجاد پلیلیستها
python manage.py create_podcast_playlists
# 5. بررسی نتیجه
python manage.py shell -c "
from apps.podcast.models import Podcast, PodcastPlaylist
print(f'Podcasts: {Podcast.objects.count()}')
print(f'Playlists: {PodcastPlaylist.objects.count()}')
"
⚠️ نکات مهم
فضای دیسک
- هر ویدیو حدوداً 40-50 MB صدا تولید میکند
- برای 31 ویدیو، حدود 1.5 GB فضا لازم است
زمان پردازش
- هر ویدیو حدوداً 30-60 ثانیه زمان میبرد
- برای 31 ویدیو، حدود 20-30 دقیقه زمان کل
پیشنیازها
- ✅ ffmpeg نصب باشد (از قبل نصب است)
- ✅ اتصال به دیتابیس فعال باشد
- ✅ فضای دیسک کافی موجود باشد
- ✅ ویدیوها در دیتابیس و سرور موجود باشند
🐛 عیبیابی (Troubleshooting)
مشکل: ffmpeg not found
# بررسی نصب ffmpeg
which ffmpeg
ffmpeg -version
مشکل: No space left on device
- فضای دیسک کافی نیست
- فایلهای موقت را پاک کنید
مشکل: Video file not found
- مسیر فایلهای ویدیو را بررسی کنید
- اطمینان حاصل کنید که فایلها در سرور موجود هستند
مشکل: Database connection error
- اتصال به دیتابیس را بررسی کنید
- صبر کنید و دوباره تلاش کنید
✅ پس از اتمام
پس از اجرای موفقیتآمیز تمام مراحل، شما خواهید داشت:
- ✅ 31 پادکست (استخراج شده از ویدیوها)
- ✅ 10 پلیلیست (با محتوای روسی)
- ✅ 310 آیتم در پلیلیستها (هر پلیلیست شامل همه پادکستها)
- ✅ Thumbnail ها و توضیحات کپی شده
- ✅ سیستم آماده برای استفاده
سیستم پادکست شما کاملاً آماده است! 🎉