چرا سی‌شارپ رو دوست دارم: چند ساعت موزیک یا ویدیو روی کامپیوترم هست؟

توی دات‌نت یه کتاب‌خونه‌ی خیلی خوب برای متادیتای موسیقی‌ها هست به اسم taglib-sharp که دست‌رسی راحت و تقریبا کامل به متادیتای موسیقی‌ها میده و توی ویندوز فون هم اپلیکیشن‌هایی ازش استفاده کردن (و کارش هم خوبه).

من هم با استفاده از همین کتابخونه تو سی‌شارپ یه برنامه نوشتم که طول همه‌ی آهنگ‌ها رو جمع بزنه نشون بده. برنامه‌ی ساده اینه:

string path = Console.ReadLine();
float all = (float)((new DirectoryInfo(path).GetFiles("*.*", SearchOption.AllDirectories)).Count());
TimeSpan lenght = new TimeSpan();
foreach (var item in new DirectoryInfo(path).GetFiles("*.*", SearchOption.AllDirectories))
{
    try
    {
        using (TagLib.File f = TagLib.File.Create(item.FullName))
        {
            lenght += f.Properties.Duration;
        }
    }
    catch { }
}
Console.WriteLine(lenght.ToString("c"));

و برای خوشگل‌تر شدن‌ش هم یک‌سری کد دیگه اضافه کردم که توی خط اول درصد پیشرفت، توی خط دوم تعداد فایل‌هایی که بررسی شدن و توی خط سوم تعداد کل فایل‌ها و توی خط چهارم هم مجموع زمان فایل‌هایی که بررسی شدن رو نشون می‌ده:

Console.Title = "FileAide Tests";
string path = Console.ReadLine();
float all = (float)((new DirectoryInfo(path).GetFiles("*.*", SearchOption.AllDirectories)).Count());
float i = 0;
TimeSpan lenght = new TimeSpan();
Console.Clear();
foreach (var item in new DirectoryInfo(path).GetFiles("*.*", SearchOption.AllDirectories))
{
    i++;
    Console.SetCursorPosition(0, 0);
    Console.Write("{0}%", ((float)(i / all * 100)).ToString("0.00"));
    Console.SetCursorPosition(0, 1);
    Console.Write(i);
    Console.SetCursorPosition(0, 2);
    Console.Write(all);
    Console.SetCursorPosition(0, 3);
    Console.Write(lenght.ToString("c"));

    try
    {
        using (TagLib.File f = TagLib.File.Create(item.FullName))
        {
            lenght += f.Properties.Duration;
        }
    }
    catch { }
}

Console.ReadLine();

حالا اگه خیلی وسواسی هستید می‌تونید کد بالا رو کامپایل کنید وگرنه می‌تونید برنامه‌ی اجرایی رو از این‌جا دانلود کنید. دقت کنید که وقتی برنامه باز می‌شه اول باید آدرس پوشه‌ای که موزیک‌هاتون توی اونه رو بهش بدید.

پی‌نوشت: Taglibsharp با فایل‌های mp4 و mkv هم کار می‌کنه (تا جایی که می‌دونم) ولی مطمئن نیستم که فرمت‌های دیگه‌ی ویدیویی رو هم پشتیبانی کنه. در هر صورت می‌تونید از این برنامه برای ویدیوهاتون هم استفاده کنید.

2 دیدگاه در “چرا سی‌شارپ رو دوست دارم: چند ساعت موزیک یا ویدیو روی کامپیوترم هست؟

    1. بحث کردن روی این‌جور مسائل خیلی مسخره‌ست! سی‌شارپ ابزار منه و جاوا ابزار شما. شما بیش‌تر با جاوا حال می‌کنید و من سراغ جاوا نرفتم و یک‌راست رفتم سراغ سی‌شارپ و با اون خیلی حال می‌کنم :)
      پیش‌نهاد می‌کنم وقت‌تون رو صرف بحث‌ها و کارهای مفیدتری بکنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.