پس از کنکور سخت و طاقتفرسا، مهدی تصمیم گرفته سریال جدیدی را شروع کند.
برای این منظور، چند قسمت از آن سریال را دانلود کرده (ویدیوهایی با فرمت mkv
) و همچنین از آنجا که زبانش خوب نیست، یک سری زیرنویس (با فرمت srt
) هم برای برخی قسمتها دانلود کرده است.
او همهی فایلها را در یک پوشه ریخته، اما مشکلی که وجود دارد این است که برای این که زیرنویسها به درستی کنار ویدیوها پخش شوند، باید هر زیرنویس دقیقاً همنام فایل ویدیویی باشد، با این تفاوت که extension ها متفاوت است.
جزئیات پروژه
پروژهی اولیه را از این لینک دانلود کنید. ساختار فایلهای پروژه بهصورت زیر است:
subtitles
├── go.mod
├── go.sum
├── main.go
├── main_sample_test.go
├── sub.srt
└── video.mkv
مهدی میخواهد در فایل main.go
تابعی با نام Renamify
پیادهسازی کند که زیرنویسها را همنام با ویدیوها کند. این تابع آدرس یک دایرکتوری را دریافت کرده و باید عملیات تغییر نام را انجام دهد:
func Renamify(path string) {
// TODO: Implement
}
مثلاً پوشهی ورودی میتواند به این شکل باشد:
Serial1.S01E01.mkv
Serial1.sub.S01E01.srt
ولی میخواهیم زیرنویسها به ویدیوی متناظر خود تغییر نام داده شوند؛ مثلاً پوشهی نهایی چنین محتویاتی داشته باشد:
Serial1.S01E01.mkv
Serial1.S01E01.srt
مثال
نمونه پوشهی ورودی
serial1.S1E1.mkv
serial1.S1E2.mkv
serial1.S1E3.mkv
subof.series1.S01E01.srt
subof.series1.S01E02.srt
subof.series1.S01E03.srt
نمونه پوشهی خروجی
serial1.S1E1.mkv
serial1.S1E2.mkv
serial1.S1E3.mkv
serial1.S1E1.srt
serial1.S1E2.srt
serial1.S1E3.srt
نکات
- دقیقاً یک سریال در پوشه موجود است.
- از هر قسمت حداکثر یک زیرنویس و حداکثر یک ویدیو داریم.
- به جز فایلهای
mkv
(ویدیوها) و فایلهایsrt
(زیرنویسها) هیچ فایل دیگری در پوشه موجود نیست. - نام همهی فایلها، اطلاعات شماره قسمت و فصل مربوطه را به فرم
S01E01
در خود دارد. - در این سؤال مجاز به استفاده از کتابخانههای شخص ثالث نیستید.
- شما تنها مجاز به اعمال تغییرات در فایل
main.go
هستید.
آنچه باید آپلود کنید
پس از پیادهسازی تابع Renamify
، فایل main.go
را آپلود کنید.
ارسال پاسخ برای این سؤال