google translate api

R
На сайте с 10.12.2010
Offline
2
1172

к своему новому проекту прикрутил переводчик для автоматического перевода статей. Скрипт трудился сильно и упорно и в итоге гугл меня заблокировал. после чего я начал передавать гуглу

$_SERVER['HTTP_USER_AGENT'] это помогла минуты на 3 и гугл опять меня заблокировал. Кто прикручивал подобные скрипты, как избежать бана? через пару дней куплю новый ip и хочу продолжить..

<?php 

/**
* Translating language with Google API
* @author gabe@fijiwebdesign.com mod BY GANJAR icq:993770 http://mytu.ru
* @version $Id$
* @license - Share-Alike 3.0 (http://creativecommons.org/licenses/by-sa/3.0/)
*
* Google requires attribution for their Language API, please see: http://code.google.com/apis/ajaxlanguage/documentation/#Branding
*
*/
class Google_Translate_API {
/**
* Translate a piece of text with the Google Translate API
* @return String
* @param $text String
* @param $from String[optional] Original language of $text. An empty String will let google decide the language of origin
* @param $to String[optional] Language to translate $text to
*/
function translate($text, $from = '', $to = 'en') {
$url = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.rawurlencode($text).'&langpair='.rawurlencode($from.'|'.$to);
$response = file_get_contents(
$url,
null,
stream_context_create(
array(
'http'=>array(
'method'=>"GET",
'user_agent'=> $_SERVER['HTTP_USER_AGENT']
)
)
)
);
if (preg_match("/{\"translatedText\":\"([^\"]+)\"/i", $response, $matches)) {
return self::_unescapeUTF8EscapeSeq($matches[1]);
}
return false;
}
/**
* Convert UTF-8 Escape sequences in a string to UTF-8 Bytes. Old version.
* @return UTF-8 String
* @param $str String
*/
function __unescapeUTF8EscapeSeq($str) {
return preg_replace_callback("/\\\u([0-9a-f]{4})/i", create_function('$matches', 'return html_entity_decode(\'&#x\'.$matches[1].\';\', ENT_NOQUOTES, \'UTF-8\');'), $str);
}
/**
* Convert UTF-8 Escape sequences in a string to UTF-8 Bytes
* @return UTF-8 String
* @param $str String
*/
function _unescapeUTF8EscapeSeq($str) {
return preg_replace_callback("/\\\u([0-9a-f]{4})/i", create_function('$matches', 'return Google_Translate_API::_bin2utf8(hexdec($matches[1]));'), $str);
}
/**
* Convert binary character code to UTF-8 byte sequence
* @return String
* @param $bin Mixed Interger or Hex code of character
*/
function _bin2utf8($bin) {
if ($bin <= 0x7F) {
return chr($bin);
} else if ($bin >= 0x80 && $bin <= 0x7FF) {
return pack("C*", 0xC0 | $bin >> 6, 0x80 | $bin & 0x3F);
} else if ($bin >= 0x800 && $bin <= 0xFFF) {
return pack("C*", 0xE0 | $bin >> 11, 0x80 | $bin >> 6 & 0x3F, 0x80 | $bin & 0x3F);
} else if ($bin >= 0x10000 && $bin <= 0x10FFFF) {
return pack("C*", 0xE0 | $bin >> 17, 0x80 | $bin >> 12 & 0x3F, 0x80 | $bin >> 6& 0x3F, 0x80 | $bin & 0x3F);
}
}
}

function google_transl($original_text, $inp_lan = '', $out_lan){
$output_text = ''; //Значение на вывод
if(mb_strlen($original_text ,'UTF-8')>300){
preg_match_all('!(.{200,300})(\s|,|\.|-|\?|\!|\(|\)|\")!Us', $original_text, $text);
$text_2 = $text;
$text_2 = array_pop($text_2[1]);
preg_match_all('!'.preg_quote ( $text_2 ).'(.*)$!Us', $original_text, $text_end);
$text[0][] = array_pop($text_end[1]);
$text = $text[0];
foreach($text AS $key=>$value){
$trans_text = Google_Translate_API::translate($value, $inp_lan, $out_lan);
if ($trans_text !== false) {
$output_text .= $trans_text.' ';
}
}
} else {
$trans_text = Google_Translate_API::translate($original_text, $inp_lan, $out_lan);
if ($trans_text !== false) {
$output_text = $trans_text;
}
}
return str_replace(' ', ' ',str_replace('<br>', "\n",str_replace('\n', ' ',str_replace('\r', ' ',$output_text))));
}
?>
php+mysql+html Пишу парсеры. Продаю cms для сателитов, которая парсит новости и формирует готовый сайт за пару минут. icq:55-91-35 skype:r00we_home
[umka]
На сайте с 25.05.2008
Offline
456
#1
R00We:
как избежать бана?

Очевидно, не насиловать гугл.

Лог в помощь!
R
На сайте с 10.12.2010
Offline
2
#2

мои 3 запроса в секунду это не насилование гугла. он даже не заметит. Жду дельных предложений

[umka]
На сайте с 25.05.2008
Offline
456
#3

Значит, нужно внимательно читать Terms of Service и там наверняка написано, по каким причинам они могут заблокировать.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#4

Так если это API, наверное как-то там нужно регистрировать свой IP или сайт... или это чаво за API то такое?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
AK
На сайте с 27.05.2009
Offline
34
#5

Раньше гугл позволял пользоваться API без получения ключа. Сейчас нужно получать ключ ( хотя без ключа тоже пока все работает). Если почитать TOS, то станет ясно, что за сутки можно перевести только 100k текста.

TC, если хотите счастья, то ищите или покупайте Promt у них есть версия которая может работать как WebService.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий