|
| Дата |
|
USD/RUB | 88.4375 | BTC/USD | 67333.2839 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
01.04.2018, 12:35
|
#1
|
Senior Member
Регистрация: 25.12.2012
Сообщений: 134
Бабло: $39500
|
Помогите скриптом/сервисом перевода текста
есть много текста, допустим на английском, его нужно перевести на, например, тайский, японский, испанский, лучше через гугл ну или яндекс можно. Руками нереально, сам не нашел ничего рабочего( может плохо искал...
|
|
|
01.04.2018, 13:40
|
#3
|
Senior Member
Регистрация: 30.11.2012
Сообщений: 596
Бабло: $93300
|
Зеброид переводит и гуглом и яндексом
|
|
|
01.04.2018, 13:50
|
#4
|
Senior Member
Регистрация: 25.12.2012
Сообщений: 134
Бабло: $39500
ТС -->
|
ТС
не хочется покупать только ради переводчика(
Последний раз редактировалось admin; 03.04.2018 в 14:46.
|
|
|
01.04.2018, 13:59
|
#5
|
Хитрожопый
Регистрация: 15.07.2008
Сообщений: 594
Бабло: $93800
|
Для зенки есть очень шустный шаблон от Orka13 на форуме зеннолаба, работает через гугл транслейт
|
|
|
03.04.2018, 00:24
|
#6
|
Senior Member
Регистрация: 25.12.2012
Сообщений: 134
Бабло: $39500
ТС -->
|
ТС
нашел скрипт у себя, переводил через яндекс в свое время, замечательно переводил) сча не пашет, так понимаю такая строка там уже не пашет -
https://translate.yandex.net/api/v1/...ru&reason=auto
может поможет поправить кто нить?)
|
|
|
03.04.2018, 05:59
|
#7
|
Senior Member
Регистрация: 25.12.2013
Сообщений: 6,549
Бабло: $785925
|
Цитата:
Сообщение от boomerok
|
Посмотри на скрин выше, сейчас нужны API ключи для авто переводчика Яндекса, либо Зенкой работать, как вы уже написали. Каждому свое.
__________________
Надежный и отзывчивый VPS хостинг для серьезных проектов
Проверенная годами пуш партнерка с ежедневными выплатами
|
|
|
03.04.2018, 08:04
|
#8
|
Senior Member
Регистрация: 25.12.2012
Сообщений: 134
Бабло: $39500
ТС -->
|
ТС
Цитата:
Сообщение от Skyworker
Посмотри на скрин выше, сейчас нужны API ключи для авто переводчика Яндекса, либо Зенкой работать, как вы уже написали. Каждому свое.
|
так с ними вроде проблем нет, как скрипт поправить?)
|
|
|
03.04.2018, 08:29
|
#9
|
Senior Member
Регистрация: 25.12.2013
Сообщений: 6,549
Бабло: $785925
|
Цитата:
Сообщение от boomerok
Цитата:
Сообщение от Skyworker
Посмотри на скрин выше, сейчас нужны API ключи для авто переводчика Яндекса, либо Зенкой работать, как вы уже написали. Каждому свое.
|
так с ними вроде проблем нет, как скрипт поправить?)
|
Надо ковырять, но у меня сейчас нет на это времени. Найди спеца за 50-100$, чтобы подправил и дописал тебе как надо, может быть и под API надо какие-то правки вносить.
__________________
Надежный и отзывчивый VPS хостинг для серьезных проектов
Проверенная годами пуш партнерка с ежедневными выплатами
|
|
|
03.04.2018, 14:36
|
#10
|
Senior Member
Регистрация: 25.12.2012
Сообщений: 134
Бабло: $39500
ТС -->
|
ТС
Цитата:
Сообщение от Skyworker
Надо ковырять, но у меня сейчас нет на это времени. Найди спеца за 50-100$, чтобы подправил и дописал тебе как надо, может быть и под API надо какие-то правки вносить.
|
PHP код:
<?php
$langs = 'sq,en,ar,hy,az,af,eu,be,bg,bs,cy,vi,hu,ht,gl,nl,el,ka,da,he,id,ga,it,is,es,kk,ca,ky,zh,ko,la,lv,lt,mg,ms,mt,mk,mn,de,no,fa,pl,pt,ro,ru,sr,sk,sl,sw,tg,th,tl,tt,tr,uz,uk,fi,fr,hr,cs,sv,et,ja';
$x = 0;
$opt = arguments($argv);
$proxyf = isset($opt['options']['proxy']) ? $opt['options']['proxy'] : false;
$in = isset($opt['options']['in']) ? $opt['options']['in'] : false;
$out = isset($opt['options']['out']) ? $opt['options']['out'] : false;
$oneline = isset($opt['options']['oneline']) ? $opt['options']['oneline'] : false;
if ($proxyf !== false) {
$proxyList = proxy_update();
} else {
exit('Proxy file not exists'."\r\n");
}
if($in === false or strpos($langs, trim($in)) === false or strlen($in) > 2) {
exit('Type input language in parametr "in"!!!'."\r\n");
}
if($out !== false) {
if(strpos($out, ',') !== false) {
$out = explode(',',trim($out));
} else {
$out = array(trim($out));
}
} else {
exit('Type output language in parametr "out"!!!'."\r\n");
}
$proxy = trim($proxyList[$x]);
do {
$token = updateToken();
if(!$token) {
echo 'BAD PROXY'."\r\n";
$x++;
if(isset($proxyList[$x])) {
$proxy = trim($proxyList[$x]);
} else {
$proxylist = proxy_update();
$x = 0;
$proxy = trim($proxyList[$x]);
}
}
} while(!$token);
$all = php(dirname(__FILE__).'/in');
for($j = 0; $j < count($all); $j++) {
$file = file(trim($all[$j]));
if (!$oneline) {
$file = goodFile($file);
}
$count = count($file);
if(strpos(trim($all[$j]), '/') !== false) {
$name = substr(trim($all[$j]), strripos(trim($all[$j]), '/')+1);
} else {
$name = substr(trim($all[$j]), strripos(trim($all[$j]), '\\')+1);
}
for($k = 0; $k < count($out); $k++) {
if(strpos($langs, $out[$k]) !== false) {
for($i = 0; $i < $count; $i++) {
//https://translate.yandex.net/api/v1/tr.json/translate?id=531dcc51.56f3bebd.e8999712-0-0&srv=tr-text&lang=en-ru&reason=auto
$post = 'srv=tr-text&text='.trim($file[$i]).'&lang='.$in.'-'.$out[$k].'&reason=auto&options=4';
$aa = getUrl('https://translate.yandex.net/api/v1/tr.json/translate?id='.$token,$post,$proxy);
if(strpos($aa, '"code":200') !== false) {
$aa = json_decode($aa, true);
if(is_array($aa['text'])) {
foreach($aa['text'] as $key => $value) {
file_put_contents(dirname(__FILE__).'/out/'.$out[$k].'_'.$name, $value."\r\n",FILE_APPEND);
}
} else {
file_put_contents(dirname(__FILE__).'/out/'.$out[$k].'_'.$name, $aa['text']."\r\n",FILE_APPEND);
}
echo 'FILE: '.($j+1).' of '.count($all).' STRING: '.$i.' of '.$count."\r\n";
} else {
echo 'BAD PROXY'."\r\n";
$x++;
$i--;
if(isset($proxyList[$x])) {
$proxy = trim($proxyList[$x]);
} else {
$proxylist = proxy_update();
$x = 0;
$proxy = trim($proxyList[$x]);
}
do {
$token = updateToken();
if(!$token) {
echo 'BAD PROXY'."\r\n";
$x++;
if(isset($proxyList[$x])) {
$proxy = trim($proxyList[$x]);
} else {
$proxylist = proxy_update();
$x = 0;
$proxy = trim($proxyList[$x]);
}
}
} while(!$token);
}
}
} else {
echo 'Not support language: '.$out[$k]."\r\n";
}
}
}
function updateToken() {
global $proxy;
$aa = getUrl('https://translate.yandex.ru/','',$proxy);
if(preg_match('%SID: \'(.*?)\',%', $aa, $ret)) {
return crypt_token($ret[1]);
}
return false;
}
function crypt_token($token) {
$bits = explode('.', $token);
for($i = 0; $i < sizeof($bits); $i++) {
$bits[$i] = strrev($bits[$i]);
}
$token = implode('.', $bits).'-0-0';
return $token;
}
function goodFile($file) {
$count = count($file);
$temp = '';
$out = array();
for($i = 0; $i < $count; $i++) {
if($temp === '') {
if(substr(trim($file[$i]), -1) === '.' or substr(trim($file[$i]), -1) === '!' or substr(trim($file[$i]), -1) === ';' or substr(trim($file[$i]), -1) === ':' or substr(trim($file[$i]), -1) === '?') {
$out[] = trim($file[$i]);
} else {
$temp .= trim($file[$i]);
}
} else {
if(substr(trim($file[$i]), -1) === '.' or substr(trim($file[$i]), -1) === '!' or substr(trim($file[$i]), -1) === ';' or substr(trim($file[$i]), -1) === ':' or substr(trim($file[$i]), -1) === '?') {
$out[] = $temp.' '.trim($file[$i]);
$temp = '';
} else {
$temp .= trim($file[$i]);
}
}
}
return $out;
}
function getUrl($url, $post = '',$proxy='', $cooka='',$header = array('Expect: '), $opt = '', $he = 0,$fol = 1) {
$curl = curl_init();
if($opt !== '') {
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $opt);
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, $he);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
if($post != ''){
@curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
}
if($proxy != ''){
curl_setopt($curl, CURLOPT_PROXY, trim($proxy));
curl_setopt($curl, CURLOPT_HTTPPROXYTUNNEL, 0);
}
curl_setopt($curl, CURLOPT_COOKIE, $cooka);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, $fol);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$response = @curl_exec($curl);
if (false === $response) {
return false;
}
curl_close($curl);
return $response;
}
function proxy_update() {
global $proxyf;
if(strpos($proxyf, '.txt') !== false and strpos($proxyf, 'http') === false) {
if(file_exists(dirname(__FILE__).'/'.trim($proxyf))) {
$proxylist = file(dirname(__FILE__).'/'.trim($proxyf));
return $proxylist;
} else {
exit('file with proxy not exists!');
}
} elseif(strpos($proxyf, 'http://') !== false or strpos($proxyf, 'https://') !== false) {
$proxylist = getUrl($proxyf);
if($proxylist and strpos($proxylist, '404 Not Found') === false) {
$proxylist = explode("\n", $proxylist);
$proxylist = array_map('trim', $proxylist);
return $proxylist;
} else {
return false;
}
} else {
'Put link or name of file ("http://site.com/proxy.html" or "proxy.txt")';
}
return false;
}
function arguments($args) {
$ret = array(
'options' => array(),
'flags' => array(),
);
while (($arg = array_shift($args)) != NULL) {
// Is it a option? (prefixed with --)
if ( substr($arg, 0, 2) === '--' ) {
$option = substr($arg, 2);
// is it the syntax '--option=argument'?
if (strpos($option,'=') !== FALSE) {
list($key, $value) = explode('=', $option, 2);
$ret['options'][$key] = $value;
} else {
$ret['options'][$option] = true;
}
continue;
}
$buf = false;
// Is it a flag or a serial of flags? (prefixed with -)
if ( substr( $arg, 0, 1 ) === '-' ) {
for ($i = 1; isset($arg[$i]) ; $i++) {
if (is_numeric($arg[$i]) && $buf) {
$ret['flags'][$buf] = $arg[$i];
} else {
$buf = $arg[$i];
$ret['flags'][$arg[$i]] = true;
}
}
continue;
}
continue;
}
return $ret;
}
function php($files) {
$files1 = scandir($files);
$scan = array();
$scand = array();
for($i = 0; $i < count($files1); $i++) {
if(trim($files1[$i]) != '.' and trim($files1[$i]) != '..') {
if(is_dir( $files.'/'.$files1[$i])){
$scan = array_merge((php($files.'/'.$files1[$i])), $scan);
} else {
// if(substr($files1[$i], -4) == '.php'){
$scan[] = $files.'/'.$files1[$i];
//}
}
}
}
return $scan;
}
выложу тут, может добрые люди поправят, да и прогодится кому нить)
не думаю, что тут на 50-100 баксов делов)
|
|
|
|