آموزش ساخت اسکریپت دریافت تلفظ کلمات از گوگل ترنسلیت - بخش سوم

خب این بار می خواهیم معنی اون کلمه رو به صورت نوتیفیکیشن نشون بدیم. اگه در جریان این پست نیستید حتما قسمت های قبلی رو مطالعه کنید.

اگر هم بخوام خلاصه ای از قسمت های قبلی بگم :

توی قسمت اول سعی کردیم تلفظ رو از گوگل ترنسلیت با ابزار wget دریافت و و اون رو توی مسیری که با آرایه $config مشخص کرده بودیم قرار بدیم.

قسمت دوم اومدیم گفتیم که اگر قبلا این تلفظ رو دانلود کرده بودیم دوباره حجم اینترنتمون رو مصرف نکنیم و از همون فایل قبلی استفاده کنیم.

حالا این قسمت می خواهیم به وسیله api مترجم یاندکس ترجمه اون کلمه رو توی اعلانات سیستممون نمایش بدیم

  • دلیل استفاده نکردن از سرویس گوگل تحریم بودن اون برای ما هست.

خب توی قسمت قبل در مورد notify-send به طور مختصر توضیح دادیم که برای نمایش اعلان استفاده میشه پیشنهاد می کنم man page این ابزار رو بخونید.

برای اتصال به api یاندکس اول باید توی سایتش ثبت نام کنید و کلید api تون رو دریافت کنید: yandex

بعد کلید api تون رو توی متغیر $config بریزید.

حالا مطابق مستندات خود یاندکس من یه تابع به شکل زیر برای دریافت ترجمه از سایت می نویسیم.

function yandex($_text)
{
    global $config;
    $text = trim($_text);
    $url = "https://translate.yandex.net/api/v1.5/tr.json/translate?key={$config['yandex_key']}&text=$text&lang={$config['from_lang']}-{$config['to_lang']}";
    $json = file_get_contents($url);
    $decode = json_decode($json);
    if ($decode->code == 200) 
    {
        return $decode->text["0"];
    }
    return null;
}

توجه به ارایه کانفیگ من کنید مقادیری رو بهش اضافه کردم و به این صورت در آوردمش :

$config = 
[
    "directory"     => "/home/javadkhof/.translate/",
    "from_lang"     =>  "en",
    "to_lang"   =>  "fa",
    "table_name"    =>  "words",
    "yandex_key"    =>  "API_KEY"
];

حالا فقط کافیه تابع جلسه قبلمون رو به این صورت ویرایش کنیم :

function get_voice()
{
    global $config;
    if ( empty(shell_exec('xsel -o')) ) 
    {
        return shell_exec("notify-send -t 5000 'please select text'");  
    }
    if ( empty($config["directory"]) ) 
    {
        return shell_exec("notify-send -t 5000 'please check configure var'");  
    }

    $text = shell_exec('xsel -o');
    if (file_exists($config['directory'].$text.'.mp3') === true) 
    {
        $answer = yandex($text);
        shell_exec("notify-send -t 5000 '{$text}' '{$answer}'");
        shell_exec("mpv ".$config['directory'].$text.'.mp3');
        return true;
    }
    else
    {
        $shell = "wget -q -U Mozilla \"https://translate.google.com/translate_tts?ie=UTF-8&total=1&idx=0&client=tw-ob&tl={$config['from_lang']}&q={$text}&textlen=4\" -O {$config["directory"]}{$text}.mp3";
        shell_exec($shell);
        shell_exec("mpv ".$config['directory'].$text.'.mp3');
        $answer = yandex($text);
        shell_exec("notify-send -t 5000 '{$text}' '{$answer}'");
        return true;
    }

}

خب دیگه به پایان این مجموعه رسیدیم امیدوارم مورد استفادتون قرار گرفته باشه اگر که خواستید می تونید این اسکریپت رو به همراه مستندات کامل در گیت هاب بنده مشاهده کنید. PronunciationWord

موفق و پیروز باشید.