lLyrics – پلاگین ریتم‌باکس

پلاگین‌نویسی به نظرم یکی از جذاب‌ترین نوع برنامه‌نوشتن هست و وقتی که اون پلاگین کدباز باشه و بتونی به توسعه‌اش کمک کنی، اون موقع هست که به اوج لذت این کار می‌رسی. پلاگین lLyrics یک پلاگین مخصوص ریتم‌باکس هست که از سایت‌های مختلف توی اینترنت لیریک و یا متن آهنگ‌ها رو دانلود می‌کنه و توی پنل کنار ریتم‌باکس نشون می‌ده و این پلاگین‌ها رو هم فقط یک بار دریافت میکنه و کش می‌کنه! این پلاگین به زبان پایتون ۲ و برای gtk3 نوشته شده.

البته خود ریتم‌باکس هم یک افزونه‌ی رسمی برای لیریک داره ولی بشدت مزخرفه، مخصوصا با فیلترینگ ما همراه بشه و اون موقع هست که به هیچ دردی نمی‌خوره. lLyrics با استفاده از تگ‌های هر آهنگ و جستجو توی بیشتر از ۱۰ تا سایت انتشاردهنده‌ی لیریک،‌ بعد از پیدا کردن اون‌ها، اضافات هر صفحه رو حذف می‌کنه و یک متن خوشگل و خوانا به شما میده! لینک پروژه توی گیت‌هاب: https://github.com/dmo60/lLyrics

همخوانی با ریتم‌باکس ۲.۹۹

این افزونه تا تقریبا چند روز پیش برای آخرین نسخه‌ی ریتم‌باکس یعنی ۲.۹۹ کار نمی‌کرد و جالب بود که خود توسعه‌دهنده‌اش سه ماه پیش این موضوع رو گزارش داده بود و تا حالا تغییری روش اعمال نکرده بود! من هم که دربه‌در دنبال یه برنامه برای نمایش لیریک‌هام میگشتم یک پیغام براش گذاشتم که پروژه در چه وضعیتی هست، علی‌وا هم که دنبال این پلاگین بود، براش کامنت گذاشت و بعد از کمتر از یک روز، توسعه‌دهنده‌اش نسخه‌ی هماهنگ با ۲.۹۹ رو منتشر کرد 🙂 اول توی یه برنچ آزمایشی گذاشت و بعد از این که من و علی‌وا تستش کردیم و بهش فیدبک دادیم، یک سری اصلاحات انجام داد و توی برنچ اصلی منتشرش کرد!

باگ در اسم خواننده‌ها

خب، در اولین استفاده خیلی عالی عمل میکرد و برای اکثر آهنگ‌ها حداقل یک سایت بود که هم فیلتر نباشه و لیریک رو بیاره، اما یک آهنگ خاص باعث شد که من یک ریپورت دیگه توی گیت‌هاب بفرستم و اون پیدا نکردن لیریک آهنگ معروف Macklemore and Ryan Lewis – Thrift Shop بود! تقریبا اول کار هیچ ایده‌ای نداشتم و فکر می‌کردم مشکل از فیلترنت باشه، پس سعی کردم به اینترنت وصل بشم و بعد دیدم باز هم مشکل داره. با استفاده از آپشن -D ریتم‌باکس رو توی حالت دیباگ اجرا کردم:!

➜ ~>rhythmbox -D lLyrics

خب یه توضیح کوچیک بدم که -d تمام لاگ‌های ریتم‌باکس رو نمایش میده (خیلی خیلی زیاد هستن!) و -D و متنی که به دنبالش هستین فقط لاگ‌هایی که اون عبارت توشون باشه رو نشون میده. بعد از یکمی صبر دیدم که پارسر سایت MetroLyrics که این لیریک رو داره (گوگل کرده بودم!) داره به وبسایت اشتباه میفرسته، مشکلش هم کمی ساده بود، لینکی که ساخته میشد macklemore-and-ryan-Lewis-lyrics-thrift-shop بود ولی توی سایت اصلی and رو حذف کرده بود.

طبیعیه که نمیشه به سادگی and رو حذف کرد، ممکنه and قسمتی از اسم خواننده باشه. چند ساعت بعد توسعه‌دهنده‌اش یه ایده‌ی جالب داد! اون هم استفاده از ‌api سایت معروف last.fm برای اصلاح تگ‌های آهنگ قبل از سرچ کردنشه! و بعد از چند ساعت بعد این امکان رو اضافه کرد و باگ بسته شد!

اضافه کردن یک وبسایت جدید

من کمی پایتون بلدم، داشتم فکر می‌کردم که چه خوب میشه سایتی مثل rapgenius.com رو هم داشته باشیم! از اون جایی که دولوپرش خیلی فعال بود و اگه میگفتم این رو هم اضافه کنیم تا چند ساعت بعدش اضافه میکرد این سری اول اضافه کردم و بعد pull request فرستادم :دی با یکمی “قرائت کدش” به راحتی پارسری که برای MetroLyrics نوشته بود رو برای rapgenius.com بهبود دادم و به برنامه اضافه کردم.

پکیج AUR

خب، این تغییرات همش روی گیت‌هاب انجام شد و هنوز توی هیچ ریپوزیتوری اضافه نشده بود، از اونجایی که پکیج ‌‌AUR  رو کسی هندل نمی‌کرد، من گرفتمش و با اضافه کردن یک دپندنسی و تغییر دادن نسخه و …، یک ‌PKGBUILD که به خوبی نصب و به روزرسانی میکنه پکیج رو فرستادم به ‌AUR!

پانوشت: بلاخره پشتکار امید باعث شد من هم حوس نوشتن به سرم بزنه باز هم و اینجا رو بعد از ۲ سال آپدیت کنم!

آپدیت ۱: از اونجایی که چند نفر با جستجوی آهنگ MACKLEMORE به این پست رسیدن، این لینک یوتیوب این آهنگ هست که حدودا ۵۰۰ میلیون بار پخش شده، ۵۰۰ میلیون بار فقط توی یوتیوب!

پاسخی بگذارید