Jacek Kowalski
2012-06-30 64d3114c3eeb933152732e024b81b2a94c8db87f
Zmiany w Microsoft Translator, tj:
- przeniesienie systemu do Azure Datamarket,
- zmiany w API,
- nowy klucz, tzw. Account Key.
4 files modified
2 files added
101 ■■■■ changed files
INSTALL 15 ●●●● patch | view | raw | blame | history
UPGRADE 14 ●●●●● patch | view | raw | blame | history
class/config.php 2 ●●● patch | view | raw | blame | history
modules/80_lang/handler.php 21 ●●●● patch | view | raw | blame | history
modules/80_lang/msapi.php 44 ●●●●● patch | view | raw | blame | history
modules/80_lang/msapi_config.php 5 ●●●●● patch | view | raw | blame | history
INSTALL
@@ -16,17 +16,18 @@
* wykonuj za pomocą crona polecenie `/sciezka/do/bota/data/update.sh` ok.
  20 minut po każdej pełnej godzinie
* uruchom /data/update_all.sh (będąc w katalogu ./data) od razu po instalacji
* pobierz Application ID ze strony http://www.bing.com/developers/appids.aspx
  (wymaga identyfikatora Windows Live ID), a następnie wpisz go w pliku
  ./modules/80_lang/handler.php w miejsu:
* pobierz Account Key ze strony https://datamarket.azure.com/
  (wymaga identyfikatora Windows Live ID), uzyskaj subskrybcję Microsoft Translator:
  https://datamarket.azure.com/dataset/1899a118-d202-492c-aa16-ba21c33c06cb
  a następnie Account Key w pliku ./modules/80_lang/msapi_config.php w miejscu:
class bot_lang_module implements BotModule {
    private $APPID = '';
class msapi_config {
    protected $accountKey = '';
  które po edycji ma wyglądać tak:
class bot_lang_module implements BotModule {
    private $APPID = 'A123BC9238...ADD';
class msapi_config {
    protected $accountKey = 'A123BC9238...ADD';
------------
UPGRADE
@@ -1,4 +1,18 @@
===========================
 AKTUALIZACJA Z WERSJI 2.2
===========================
* usuń zawartość katalogu ./modules/80_lang
* wgraj ./module/80_lang z paczki
* uzyskaj Azure Datamarket acoount key ze strony:
  https://datamarket.azure.com/
  oraz uzyskaj jakąkolwiek subskrypcję Microsoft Translator pod adresem:
  https://datamarket.azure.com/dataset/1899a118-d202-492c-aa16-ba21c33c06cb
* Account Key wpisz w przewidzianym miejscu w pliku
  ./modules/80_lang/msapi_config.php
* zastąp plik ./class/legacy/main.php
===========================
 AKTUALIZACJA Z WERSJI 2.1
===========================
class/config.php
@@ -13,4 +13,4 @@
        ),
    );
}
?>
?>
modules/80_lang/handler.php
@@ -1,7 +1,7 @@
<?php
require_once(dirname(__FILE__).'/msapi.php');
class bot_lang_module implements BotModule {
    private $APPID = '';
    function handle($msg, $params) {
        $args = trim($msg->args);
        
@@ -23,13 +23,22 @@
        $data = jsarray::parse($data);
        
        if(!$data OR count($data)==0 OR count($data[1])==0) {
            $data = file_get_contents('http://api.microsofttranslator.com/v2/Http.svc/Translate?appId='.urlencode($this->APPID).'&text='.urlencode($args).'&from='.$params[0].'&to='.$params[1]);
            $api = new msapi('https://api.datamarket.azure.com/Bing/MicrosoftTranslator/');
            $data = $api->execute(array(
                'From' => $params[0],
                'To' => $params[1],
                'Text' => $args,
                '$skip' => 0,
                '$top' => 1
            ));
            
            if(!$data) {
                return new BotMsg('Błąd podczas pobierania danych ze słownika. Przepraszamy.');
            if(!$data || !isset($data['d']['results'][0]['Text'])) {
                return new BotMsg('Błąd podczas pobierania danych z tłumacza. Przepraszamy.');
            }
            
            return new BotMsg('<u>Tłumaczenie (by Microsoft Translator):</u><br />'."\n".strip_tags($data));
            $data = $data['d']['results'][0]['Text'];
            return new BotMsg('<u>Tłumaczenie (by Microsoft Translator):</u><br />'."\n".htmlspecialchars($data));
        }
        else
        {
modules/80_lang/msapi.php
New file
@@ -0,0 +1,44 @@
<?php
require_once(dirname(__FILE__).'/msapi_config.php');
class msapi extends msapi_config {
    public $url;
    function __construct($url) {
        $this->url = $url;
    }
    function execute($params) {
        if(!is_array($params)) {
            throw new Exception('Przekazany parametr nie jest tablicą');
        }
        foreach($params as $name => &$param) {
            if(substr($name, 0, 1)!='$' && is_string($param)) {
                $param = '\''.$param.'\'';
            }
        }
        unset($param);
        $params['$format'] = 'json';
        $context = stream_context_create(array(
            'http' => array(
                'request_fulluri' => TRUE,
                'header' => 'Authorization: Basic '.base64_encode(':'.$this->accountKey)
            ),
        ));
        $content = file_get_contents($this->url.'?'.http_build_query($params, '', '&'), FALSE, $context);
        if(!$content) {
            return FALSE;
        }
        $content = json_decode($content, TRUE);
        if(!$content) {
            return FALSE;
        }
        return $content;
    }
}
?>
modules/80_lang/msapi_config.php
New file
@@ -0,0 +1,5 @@
<?php
class msapi_config {
    protected $accountKey = '';
}
?>