# راهنمای راه‌اندازی کامل سیستم Podcast ## مراحل به ترتیب اجرا ### 1️⃣ اعمال Migration ابتدا باید migration های podcast را اجرا کنید: ```bash python manage.py migrate podcast ``` **خروجی مورد انتظار:** ``` Operations to perform: Apply all migrations: podcast Running migrations: Applying podcast.0003_refactor_podcast_models... OK ``` --- ### 2️⃣ پاکسازی داده‌های قدیمی (اختیاری) اگر داده‌های قدیمی پادکست دارید، ابتدا آنها را پاک کنید: ```bash 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️⃣ ایجاد دسته‌بندی‌های پادکست ابتدا باید 8 دسته‌بندی برای پادکست‌ها ایجاد کنید: ```bash python manage.py create_podcast_categories ``` **این دستور چه کاری انجام می‌دهد:** - ✅ 8 دسته‌بندی با عناوین روسی ایجاد می‌کند - ✅ ترتیب (order) برای هر دسته تعیین می‌کند - ✅ همه را فعال (status=True) می‌کند **دسته‌بندی‌های ایجاد شده:** 1. Пророки и посланники (پیامبران و فرستادگان) 2. Имамы Ахль аль-Байт (امامان اهل‌بیت) 3. Коранические истории (داستان‌های قرآنی) 4. Исламская философия (فلسفه اسلامی) 5. Нравственность и этика (اخلاق و آداب) 6. История ислама (تاریخ اسلام) 7. Кербела и Ашура (کربلا و عاشورا) 8. Духовное развитие (رشد معنوی) **خروجی نمونه:** ``` ✓ Created category: Пророки и посланники ✓ Created category: Имамы Ахль аль-Байт ... ✓ Successfully created 8 categories! ``` **گزینه‌های اضافی:** ```bash # پاک کردن دسته‌بندی‌های قبلی و ایجاد مجدد python manage.py create_podcast_categories --clean ``` --- ### 4️⃣ تبدیل ویدیوها به پادکست این مرحله **مهم‌ترین مرحله** است. ویدیوها را به پادکست (صدا) تبدیل می‌کند: ```bash python manage.py convert_videos_to_podcasts ``` **این دستور چه کاری انجام می‌دهد:** - 🎥 تمام ویدیوهای موجود را پیدا می‌کند - 🎵 با ffmpeg صدای هر ویدیو را استخراج می‌کند (به فرمت MP3) - 🖼️ Thumbnail ویدیو را کپی می‌کند - 📝 Title و Description را کپی می‌کند - ⏱️ مدت زمان (duration) را کپی می‌کند - 💾 همه را به عنوان Podcast ذخیره می‌کند **گزینه‌های اضافی:** ```bash # فقط 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** نصب شده دارد (قبلاً نصب شده است) - فضای **دیسک کافی** برای فایل‌های صوتی لازم است --- ### 5️⃣ ایجاد 10 پلی‌لیست پادکست حالا پادکست‌ها را در 10 پلی‌لیست سازماندهی می‌کنیم: ```bash 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 ``` **گزینه‌های اضافی:** ```bash # حالت آزمایشی (بدون ایجاد واقعی) python manage.py create_podcast_playlists --dry-run ``` --- ### 6️⃣ بررسی نتیجه نهایی برای اطمینان از موفقیت‌آمیز بودن تمام مراحل: ```bash 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 ``` --- ## 📋 خلاصه دستورات (به ترتیب) ```bash # 1. اعمال migration python manage.py migrate podcast # 2. پاکسازی داده‌های قدیمی (اختیاری) python manage.py cleanup_podcast_data --confirm # 3. ایجاد دسته‌بندی‌ها (8 category) python manage.py create_podcast_categories # 4. تبدیل ویدیوها به پادکست (مهم!) python manage.py convert_videos_to_podcasts # 5. ایجاد پلی‌لیست‌ها (با اتصال به categories) python manage.py create_podcast_playlists # 6. بررسی نتیجه python manage.py shell -c " from apps.podcast.models import Podcast, PodcastPlaylist, PodcastCategory print(f'Podcasts: {Podcast.objects.count()}') print(f'Categories: {PodcastCategory.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 ```bash # بررسی نصب ffmpeg which ffmpeg ffmpeg -version ``` ### مشکل: No space left on device - فضای دیسک کافی نیست - فایل‌های موقت را پاک کنید ### مشکل: Video file not found - مسیر فایل‌های ویدیو را بررسی کنید - اطمینان حاصل کنید که فایل‌ها در سرور موجود هستند ### مشکل: Database connection error - اتصال به دیتابیس را بررسی کنید - صبر کنید و دوباره تلاش کنید --- ## ✅ پس از اتمام پس از اجرای موفقیت‌آمیز تمام مراحل، شما خواهید داشت: - ✅ **31 پادکست** (استخراج شده از ویدیوها) - ✅ **10 پلی‌لیست** (با محتوای روسی) - ✅ **310 آیتم در پلی‌لیست‌ها** (هر پلی‌لیست شامل همه پادکست‌ها) - ✅ Thumbnail ها و توضیحات کپی شده - ✅ سیستم آماده برای استفاده سیستم پادکست شما کاملاً آماده است! 🎉