۱۳۹۲ آبان ۸, چهارشنبه

گنو/لینوکس دوست داشتنی: دانلود تلفظ کلمات برای GoldenDict

دیکشنری چی استفاده می‌کنید؟!
من یکی که با GoldenDict خیلی حال می‌کنم
امکانات زیادی داره که می‌تونید اینجا یه نگاهی بهشون بندازین
ولی چیزایی که من خیلی دوست دارم
۱. پشتیبانی از فایل‌های دیکشنری بابیلون و چندتا دیکشنری دیگه
۲. معنی کردن کلمه فقط با انتخاب کردن کلمه (هایلایت کردن)
۳. ظاهری با قابلیت کاستومایز بالا
۴. سرعت اجرای بالا
۵. نسخه‌ی آندروید عالی

خوب بعد از این که ظاهر برنامه رو دست کاری می‌کنی، دیکشنری‌های فارسی به انگلیسی، انگلیسی به فارسی وانگلیسی به انگلیسی رو بهش اضافه می‌کنی
میای و دیکشنری‌ها رو دسته بندی می‌کنی و فقط می‌مونه تلفظ
هرچی تو سر خودت می‌زنی، کمتر راه حلی پیدا می‌کنی.

تا همین چند وقت پیش اگه می‌خواستم تلفظ یه کلمه رو گوش کنم توی گوگل می‌نوشتم define x که البته به جای x کلمه‌ی مورد نظرو می‌نوشتم. و خوب خبری هم از تلفظ آفلاین نبود.

یه بار سعی کردم از تلفظ ماشینی text to speech استفاده کنم که نتیجش واقعا افتضاح بود.
به نظرم رسید که بگردم و اگه بشه جایی توی اینترنت فایل‌های تلفظ پیدا کنم، حالا یا بلد نبودم درست بگردم یا هر چیز دیگه، نتیجه‌ای بدست نمی‌یومد.

مدتی بود تو فکر این بودم که ای کاش می‌شد تلفظ‌های دیکشنری‌های آنلاینو دانلود کنم.
امروز وقتی توی گوگل یه کلمه رو سرچ کردم، حوس کردم انگولکش کنم و ببینم راهی هست که بشه یه کاریش کرد.
نتیجه‌ی اون انگولک بازی‌ها شد ۴۲ هزارتا فایل صوتی تلفظ که الآن روی GoldenDict استفاده می‌کنم. (یعنی از این به بعد استفاده خواهم کرد.)

ولی چطور؟!
خیلی ساده

توی گوگل سرچ می‌کنیم define student
گوگل هم معنی رو به علاوه‌ی تلفظ بهمون نشون می‌ده

روی دکمه‌ی تلفظ یه راست کلیک ناقابل می‌کنیم و می‌ریم به inspect element (دارم توی کروم اینکارو می‌کنم، صد البته که فایر فاکس و مرورگرهای دیگه هم امکان دیدن سورس صفحه رو فراهم می‌کنن)

می‌بینیم که آیکن تلفظ درواقع یه url رو صدا می‌زنه

یه خورده با آدرس بازی می‌کنیم و می‌فهمیم امکان دسترسی به فولدر‌های ریشه‌ی این آدرس وجود نداره. یعنی گوگل نمی‌زاره برای مثال وارد https://ssl.gstatic.com/dictionary/static/sounds/de/0/ بشید و کل فایل‌ها رو ببینید

نا امید نمی‌شیم

با یکم دستکاری دیگه می‌بینیم که هر کلمه‌ای رو جای student بنویسیم، فایل mp3 اون دانلود می‌شه.

چقدر خوب بود که لینک تموم این فایل‌های ‌‌‌‌‌mp3 رو داشتیم
نداریم؟!
پس سعی می‌کنیم معکوس عمل کنیم
می‌سازیمشون

یه سرچ می‌زنیم و لیست لغاتی که در زبان انگلیسی هست رو پیدا می‌کنیم
این آدرس لیستیه که من پیدا کردم.
کلماتو توی فایل words.txt ذخیره می‌کنیم
و دست به دامان bash میشیم
#! /bin/sh

while read line
do
 echo "http://www.gstatic.com/dictionary/static/sounds/de/0/$line.mp3" >> ~/Desktop/list.txt
done < ~/Desktop/word.txt
خیلی ساده می‌گیم که بیا و فایل word.txt رو خط به خط بخون
هر خط از این فایل که خونده می‌شه ریخته می‌شه توی متغیر line که اگه توجه کنید توی آدرسمون به صورت ‌line $ استفاده کردیم.
دستور echo  رشته‌ی ایجاد شده‌ی مارو به خروجی می‌فرسته و ما هم به کمک << ریختیمش توی فایل list.txt

حالا فایلی داریم که حدود ۶۰ هزارتا لینک توش قرار داره
با دستور زیر به دانلود منیجرمون می‌گیم که بیا و این ۶۰ هزار تارو دانلود کن و بریز توی پوشه‌ی sounds
آپشن s هم اینجا تعداد کانکشن‌ها رو مشخص می‌کنه که ۱۰ تا ۱۰ تا دانلود بشه و سرعت بالاتر بره
aria2c -d ~/Desktop/sounds/ -s 10 -i Desktop/list.txt 
بعد از دانلود تموم لینکا که البته یه سریشون ارور می‌دن، چون همچین کلمه‌ای وجود نداشته، یا حالا از شانس ما فیلتر بوده چون کلمه‌ی چیز دار بوده، فولدری داریم با حدود ۴۰ هزارتا فایل صوتی که می‌تونیم توی GoldenDict استفاده کنیم
شاید همه‌ی کلماتو دانلود نکرده باشیم ولی ۴۰ هزارتای دانلود شده کلمات اصلی انگلیسی هستن و کافیه.
اگه خواستین می‌تونید لینک‌هایی که اون بالا با اسکریپتمون ساختیم به صورت https بسازید که مشکل فیلترینگ نداشته باشه ولی من امتحان کردم سرعت دانلود خوبی نداشتن.

یه نکته این که  فولدر تلفظ‌ها هم به صورت یک دیکشنری شناخته می‌شه، پس اگه دیکشنری‌هاتون رو دسته بندی کردید،  باید این دیکشنری جدید رو توی دسته بندی‌ها اضافه کنید تا مثلا اگه دارید کلمه‌ای رو توی دسته‌ی دیکشنری‌های انگلیسی به انگلیسی جست‌وجو می‌کنید، تلفظ‌ها هم جست‌وجو بشن.