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

راهنمای راه‌اندازی کامل سیستم 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 پلی‌لیست با عناوین روسی درباره پیامبران و امامان ایجاد می‌کند
  • 🎵 تمام پادکست‌های موجود را به هر پلی‌لیست اضافه می‌کند
  • ⏱️ مدت زمان کل هر پلی‌لیست را محاسبه می‌کند
  • 💾 همه را ذخیره می‌کند

پلی‌لیست‌های ایجاد شده:

  1. Лекции о Пророке Мухаммаде (لکچرهای صوتی درباره پیامبر محمد)
  2. Истории пророков в аудио формате (داستان‌های پیامبران به صورت صوتی)
  3. Имам Али: Аудио наставления (امام علی: راهنمایی‌های صوتی)
  4. Имам Хусейн: Аудио о Кербеле (امام حسین: صوتی درباره کربلا)
  5. Двенадцать Имамов: Аудио курс (دوازده امام: دوره صوتی)
  6. Фатима аз-Захра: Аудио лекции (فاطمه زهرا: لکچرهای صوتی)
  7. Имам Махди: Аудио о ожидании (امام مهدی: صوتی درباره انتظار)
  8. Чудеса пророков: Аудио рассказы (معجزات پیامبران: داستان‌های صوتی)
  9. Нравственность Ахль аль-Байт: Аудио (اخلاق اهل‌بیت: صوتی)
  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 ها و توضیحات کپی شده
  • سیستم آماده برای استفاده

سیستم پادکست شما کاملاً آماده است! 🎉