API Яндекс Облака для перевода текста.

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
Всем привет, у меня две новости плохая и хорошая.

Возможно, вы уже знаете, что Яндекс приостановил выдачу бесплатных ключей для использования в его сервисе перевода текстов, старые ключи, полученные ранее, будут заблокированы.

с 15 августа 2020 года старая схема использования API Яндекс переводчика не работает, и теперь для работы с переводчиком и другими сервисами Яндекса нужно использовать API Яндекс Облака.

Хорошая новость в том, что в этой статье я расскажу, как можно использовать Яндекс Облако для работы с переводчиком Яндекса. На тестирование сервиса предоставляется грант, средства из которого можно частично использовать для работы с переводчиком. После придется переходить на платный тариф для дальнейшего использования сервисами Яндекса через его АПИ.

Теперь обо всем по порядку

Переходим в Яндекс Облако по ссылке https://cloud.yandex.ru/docs/translate/ и нажимаем кнопку Подключиться

image001.png


Для входа в аккаунт используйте свою Яндекс почту

68633


Подтверждаете свое согласие с условиями использования, и нажимаете Войти.

68634


Попадаете в консоль управления облаком. В дальнейшем перейти в консоль, вы сможете перейти через одноименную кнопку.

68635


Нажимаете на кнопку Активировать пробный период

68636


Открывается страница с созданием платежного аккаунта.
68637

Заполняете все поля формы своими данными.

68638


Добавляете свою карту

68639


При ошибке добавления карты попробуйте другую. У меня, например карта Альфа-Банка не захотела привязываться, а карта Сбербанка привязалась без проблем.

68640

После добавления карты нажимаете желтую кнопку Активировать, без добавления карты, эта кнопка будет серой и нажатие не сработает.

68641


При успешном создании платежного аккаунта, пробный период будет успешно активирован, информацию о нем и сроках действия грантов и расходах вы всегда сможете по смотреть в разделе Обзор.

Если вы удалите привязанную карту из аккаунта, то аккаунт облака будет заблокирован, а платежный аккаунт приостановлен.

68642



После активации платежного аккаунта возвращаемся на страницу https://cloud.yandex.ru/docs/translate/

И выбираем там раздел Начало работы

image012.png


Выбираем 2 пункт для получения IAM токена

68644


Откроется страница, на которой будет 2 варианта получения токена, через командную строку или через API. Нам нужен 2 вариант, если хотите, то можете выбрать 1 вариант, но тогда надо будет установить интерфейс для работы по указанной в сообщении ссылке? но зачем что то устанавливать, если можно обойтись без установки. :-)

68645


Переключаемся на 2 вариант (вкладка API) и нажимаем там ссылку для получения OAuth токена

68646


Нажимаем желтую кнопку разрешить

68647


Копируем полученный токен

68648


Возвращаемся на вкладку с информацией о получении IAM токена и выполняем пункт для получения и обмена OAuth токена на IAM токен.

68659


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

Я использую стандартный PowerShell из Windows так как для использования этих команд через консоль командной строки CMD нужно, чтобы был установлен curl.

Открываем PowerShell (найти можно через кнопку поиска)

68650


Берем первую строку команды из сообщения и подставляем свой OAuth токен, вставляем полученную команду в PowerShell и нажимаем энтер.

68651

Повторяем копирование и вставку всех строк по одной.
В итоге получаем IAM токен который нужно скопировать.

68652


Этот скопированный токен нам будет нужен при работе с API

68653


Возвращаемся на страницу Начало работы

Выбираем 3 пункт для получения id папки в нашем облаке. (Рекомендуется для работы использовать Сервисный аккаунт. О том как его настроить, вы можете посмотреть самостоятельно)

68654


Посмотреть идентификатор каталога по умолчанию или создать новый каталог, можно на главной странице консоли управления облаком.

68655


Название каталога можете изменить на более удобное

68657


Теперь используем полученные данные для перевода текста.

Не буду нагружать техническими подробностями. Для удобства я подготовил шаблон, в котором нужно будет подставлять токены и текст для перевода, поэтому дальше будет описание этого шаблона, куда вставлять полученные токены и получать перевод текста.

Кубик Получение IAM токена:
string OAuth_TOKEN = "Ваш OAuth_TOKEN";

/// <summary>
/// Яндекс OAuth_TOKEN
/// </summary>
ZennoLab.OwnCode.CommonCode.OAuth_TOKEN = OAuth_TOKEN;

// получаем IAM токен
string iam_token = ZennoLab.OwnCode.CommonCode.GetIAM_Token(OAuth_TOKEN);
Кубик С# для перевода текста:
/// <summary>
/// Яндекс IAM_TOKEN
/// </summary>
ZennoLab.OwnCode.CommonCode.IAM_TOKEN = "Ваш IAM Token";
 
/// <summary>
/// Значение folder_id
/// </summary>
ZennoLab.OwnCode.CommonCode.FolderID = "Ваш id каталога на облаке";


// Язык с которого переводим определяется автоматически

/// <summary>
/// Язык на который переводим
/// </summary>
string langTo = "ru";

// Текст для перевода
string textToTranslate = "Ваш текст для перевода Learning Translate";

project.SendInfoToLog("Переводим текст: " + textToTranslate, true);

try{
 
// Обращаемся к методу в общем коде, для перевода текста.
       string textResult = ZennoLab.OwnCode.CommonCode.GetTranslate(textToTranslate, langTo);

       project.SendInfoToLog("Результат перевода: " + textResult, true);
}
catch (Exception ex)
{// Если будет ошибка, выводим ее в лог.
       project.SendErrorToLog(ex.Message, true);
}
Оба кубика используют методы из общего кода.

Содержимое блока Общий код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;

using Newtonsoft.Json;
using System.Net;

using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;

namespace ZennoLab.OwnCode
{
       /// <summary>
       /// A simple class of the common code
       /// </summary>
       public class CommonCode
       {
             /// <summary>
             /// Lock this object to mark part of code for single thread execution
             /// </summary>
             public static object SyncObject = new object();
       
             /// <summary>
             /// URL для API
             /// </summary>
             public static string urlApi = @"https://translate.api.cloud.yandex.net/translate/v2/translate";

             /// <summary>
             /// Яндекс IAM_TOKEN
             /// </summary>
             public static string IAM_TOKEN {get; set;}
       
             /// <summary>
             /// Яндекс OAuth_TOKEN
             /// </summary>
             public static string OAuth_TOKEN {get; set;}
       
             /// <summary>
             /// Значение folder_id
             /// </summary>
             public static string FolderID {get; set;}
       
             /// <summary>
        /// Переводим текст
        /// </summary>
        /// <param name="TextIn"></param>
        /// <param name="langTo"></param>
        /// <param name="langFrom"></param>
        /// <returns></returns>
        public static string GetTranslate(string textToTranslate, string langTo)
        {
            if (textToTranslate.Length > 1)
            {
                textToTranslate = System.Web.HttpUtility.UrlEncode(textToTranslate);

                           // Формируем json параметры запроса
                   string json = "{" +
                       string.Format(@"""folder_id"": ""{0}"",
                               ""texts"": [""{1}""],
                               ""targetLanguageCode"": ""{2}""
                               ", FolderID, textToTranslate, langTo).Trim()
                               + "}";

                /*
                Передайте файл на перевод с помощью метода translate:
                $ export IAM_TOKEN=CggaATEVAgA...
                $ curl -X POST \
                    -H "Content-Type: application/json" \
                    -H "Authorization: Bearer ${IAM_TOKEN}" \
                    -d '@body.json' \
                    "https://translate.api.cloud.yandex.net/translate/v2/translate"
                */

                //var request1 = WebRequest.Create(urlApi);
                var request = (HttpWebRequest)WebRequest.Create(urlApi);

                request.ContentType = "application/json";
                request.Headers["Authorization"] = "Bearer " + IAM_TOKEN;

                request.Method = "POST";

                using (var streamWriter = new StreamWriter(request.GetRequestStream()))
                {
                    streamWriter.Write(json);
                }

                           // Делаем запрос и получаем ответ сервера
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                using (Stream responseStream = response.GetResponseStream())
                {
                    StreamReader reader = new StreamReader(responseStream, Encoding.UTF8-);
                    Console.WriteLine(reader.ReadToEnd());
                    string line;

                    if ((line = reader.ReadLine()) != null)
                    {
                             /*
                                        //------- Вариант json ответа-----------------
                                    {
                                     "translations": [
                                      {
                                       "text": "Здравствуй, Мир",
                                       "detectedLanguageCode": "en"
                                      }
                                     ]
                                    }
                                  
                                        //------- Еще вариант json ответа-----------------
                                            {
                                     "translations": [
                                      {
                                       "text": "Привет",
                                       "detectedLanguageCode": "en"
                                      },
                                      {
                                       "text": "Мир",
                                       "detectedLanguageCode": "en"
                                      }
                                     ]
                                    }
                             */
                                  
                                        // Разбираем ответ JSON
                        Translation translation = JsonConvert.DeserializeObject<Translation>(line);

                        //textToTranslate = "";

                        foreach (string str in translation.text)
                        {// Формируем результат из всех значений text
                            textToTranslate += str;
                        }
                    }
                }
            }
              
                    return textToTranslate;
        }
       
        /// <summary>
        /// JSON ответ из примера или из конвертера https://json2csharp.com
        /// </summary>
        private class Translation
        {
            public string code { get; set; }
            public string lang { get; set; }
            public string[] text { get; set; }
        }
       
       
             /// <summary>
        /// Получение IAM_Token из OAuth_TOKEN
        /// </summary>
        /// <param name="OAuth_TOKEN"></param>
        /// <returns></returns>
        public static string GetIAM_Token(string OAuth_TOKEN)
        {
            string IAM_Token = string.Empty;

            /*
                           Нужно выполнить команды через PowerShell
              
                           $yandexPassportOauthToken = "<OAuth-Token>"
                           $Body = @{ yandexPassportOauthToken = "$yandexPassportOauthToken" } | ConvertTo-Json -Compress
                           Invoke-RestMethod -Method 'POST' -Uri 'https://iam.api.cloud.yandex.net/iam/v1/tokens' -Body $Body -ContentType 'Application/json' | Select-Object -ExpandProperty iamToken
                                         
                    */

            string[] arrCommands =
            {
                string.Format("$yandexPassportOauthToken = \"{0}\"", OAuth_TOKEN),
                "$Body = @{ yandexPassportOauthToken = \"$yandexPassportOauthToken\" } | ConvertTo-Json -Compress",
                "Invoke-RestMethod -Method 'POST' -Uri 'https://iam.api.cloud.yandex.net/iam/v1/tokens' -Body $Body -ContentType 'Application/json' | Select-Object -ExpandProperty iamToken"
            };

            Runspace runspace = RunspaceFactory.CreateRunspace();//Формируем пространство повершел для выполнения команд
            runspace.Open(); // открытие процесса
            Pipeline pipeline = runspace.CreatePipeline();
            pipeline.Commands.AddScript(arrCommands[0]); //добавление 1 строки с командой
            pipeline.Commands.AddScript(arrCommands[1]); //добавление 2 строки с командой
            pipeline.Commands.AddScript(arrCommands[2]); //добавление 3 строки с командой
            pipeline.Commands.Add("Out-String"); // эта команда форматирует вывод. Без нее возвращаются реальные объекты.

            Collection<PSObject> results = pipeline.Invoke();// Выполняем все команды
            runspace.Close(); // закрытие процесса

            // Проверка статуса ответа. Преобразование в строку.
            IAM_Token = results[0].BaseObject.ToString().Trim();

            return IAM_Token;
        }

       }
}

Вот и все. Можно вставлять свои данные и использовать переводчик в своих проектах.
 
Тема статьи
Другое
Номер конкурса статей
Четырнадцатый конкурс статей

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 760
Благодарностей
2 399
Баллы
113
Спасибо за отличный материал!
Будем использовать по назначению!
 
Регистрация
23.03.2015
Сообщения
1 128
Благодарностей
657
Баллы
113
Сама схема стара как мир, а вот за код Спасибо!
 

Rimen

Client
Регистрация
28.10.2019
Сообщения
405
Благодарностей
235
Баллы
43
Статья что надо!
Просто и сердито.
Только не понял сколько будет стоить Яндекс для перевода контента на конвейере. Не подскажете где посмотреть?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
Статья что надо!
Просто и сердито.
Только не понял сколько будет стоить Яндекс для перевода контента на конвейере. Не подскажете где посмотреть?
Можете смотреть статистику расхода гранта. и эту ссылку https://cloud.yandex.ru/docs/translate/pricing там же есть ссылка на калькулятор https://cloud.yandex.ru/prices#calculator
 
  • Спасибо
Реакции: Rimen

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 942
Благодарностей
4 334
Баллы
113
Можете смотреть статистику расхода гранта. и эту ссылку https://cloud.yandex.ru/docs/translate/pricing
Я правильно понимаю, что для среднего переводного сайта, который постит по 15 статей по 3000 символов в среднем в сутки переведенные на 20 языков, нужно платить 400 р. в сутки?
orka13 тут должна быть твоя реклама)
 
  • Спасибо
Реакции: orka13

orka13

Client
Регистрация
07.05.2015
Сообщения
2 165
Благодарностей
2 165
Баллы
113
Я правильно понимаю, что для среднего переводного сайта, который постит по 15 статей по 3000 символов в среднем в сутки переведенные на 20 языков, нужно платить 400 р. в сутки?
orka13 тут должна быть твоя реклама)
У меня руки не дошли до Яндекс-переводчика, спрос на Google-переводчик изначально был выше, поэтому не видел смысла заморачиваться. Даже потом как альтернативу гуглу запил Deepl.
Статья раскрывает для фанатов Яндекса полу-бесплатную возможность пощупать их переводчик. Но кому под доры надо гигабайты текстовки переводить в сутки, то схема я так понял не подойдет. Ну велкам тогда ко мне за покупками, и готовьтесь к новому геморрою с поиском прокси под перевод :-).
 
  • Спасибо
Реакции: Astraport

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
Я правильно понимаю, что для среднего переводного сайта, который постит по 15 статей по 3000 символов в среднем в сутки переведенные на 20 языков, нужно платить 400 р. в сутки?
я не занимался подсчетами, поэтому не могу по этому поводу ничего сказать
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
Статья раскрывает для фанатов Яндекса полу-бесплатную возможность пощупать их переводчик.
Вот именно, сам недавно начал только щупать яндекс переводчик. Поэтому если есть готовый продукт под гугл, то конечно лучше купить готовое. :az:
 

porileenvej

Client
Регистрация
09.05.2020
Сообщения
99
Благодарностей
130
Баллы
33
К чему такие сложности?
Все намного проще
Перевод текста снипет:
string text = "If you don't have a license or your updates expired, download a demo from our website. Test-drive all the advancements of the new automation era that starts today. Join us.";
string proxy = "";
string data = "";
string source = "";
string sid = "";
string resSid = "";

source = ZennoPoster.HTTP.Request(
    ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET,
    "https://translate.yandex.com/", "", "",
    proxy, "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly
);

sid = Macros.TextProcessing.Regex(source, @"(?<=SID:\ ')[^']+?(?=')", "0")[0].FirstOrDefault();

var lst = sid.Split('.').ToList();
foreach(string str in lst)
{
    resSid += new string(str.Reverse().ToArray())+".";
}   
resSid = resSid.TrimEnd('.');


data = "text="+ZennoLab.Macros.TextProcessing.UrlEncode(text);
source = ZennoPoster.HTTP.Request(
    ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.POST,
    "https://translate.yandex.net/api/v1/tr.json/translate?id="+resSid+"-0-0&srv=tr-text&lang=en-ru",
    data, "application/x-www-form-urlencoded; charset=utf-8",
    proxy, "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly
);

project.Json.FromString(source);
return project.Json.text.ToString();
 

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
229
Благодарностей
203
Баллы
43
Когда разрабатывал свой софт по фильтрации аккаунтов Instagram, решил прикрутить определение языка аккаунта по тексту в его описании. Перепробовал много разных сервисов, добрался и до Яндекс.Облака. Часа 2 я мудохался только с тем, чтобы получить нужный мне api ключ. Это как в сказке о Кощее Бессмертном: смерть Кощеева — на конце иглы, та игла в яйце, то яйцо в утке, та утка в зайце, тот заяц в сундуке, а сундук стоит на высоком дубу. Вот примерно так же я получал заветный api ключ.

Когда же ключ был получен, протестирован и прикручен к шаблону, я запустил на ночь фильтрацию 300 000 аккаунтов. В итоге к утру у меня за 300 000 запросов сняли что-то около 2000 руб. Благо я закинул только минималку на баланс (500 руб.) и мой баланс стал минусовым. Удалил к херам привязанную карту и забил на этот сервис.

Через час поисков нашёл бесплатный способ определения языка - через специальный post/get запрос к переводчику Bing (не по api, а так, как будто я вставил в поле для перевода текста сам текст (в веб версии), а переводчик его определил).

P.S. Через месяц стали названивать из Яндекса и спрашивать почему я не пользуюсь их мега крутой разработкой. Честно хотел ответить, но ехал в лифте, попросил специалиста перезвонить через 5 минут, но он так и не перезвонил :(
 

strannic

Client
Регистрация
05.12.2010
Сообщения
224
Благодарностей
10
Баллы
18
а как сделать установку языка с которого переводим ? потому что автоматическое определение языка увеличивает цену перевода в два раза
 

strannic

Client
Регистрация
05.12.2010
Сообщения
224
Благодарностей
10
Баллы
18
Кто пользуется данным решение у вас все работает норм ?
У меня почему то не хочет переводить

71636
 

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Python парсер New York Times с авто переводом текста

Парсер сайта New Yourk Times с переводчиком.:
import requests
from bs4 import BeautifulSoup
import translators as ts
import textwrap
import os


os.system('cls||clear')
print('=' * 50)
print("New Yourk Times")
print('=' * 50)
nav = input("1 = Мировые новости \n"
            "2 = U.S. \n"
            "3 = Политика \n"
            "4 = N.Y \n"
            "5 = Бизнесс \n")

if nav == '1':
    os.system('cls||clear')
    nav = input("1 = Африка \n"
                "2 = Америка \n"
                "3 = Азия \n"
                "4 = Австралия \n"
                "5 = Канада \n"
                "6 = Европа \n"
                "7 = Средний Восток \n")
    if nav == '1':
        link = "https://www.nytimes.com/section/world/africa"
    elif nav == '2':
        link = "https://www.nytimes.com/section/world/americas"
    elif nav == '3':
        link = "https://www.nytimes.com/section/world/asia"
    elif nav == '4':
        link = "https://www.nytimes.com/section/world/australia"
    elif nav == '5':
        link = "https://www.nytimes.com/section/world/canada"
    elif nav == '6':
        link = "https://www.nytimes.com/section/world/europe"
    elif nav == '7':
        link = "https://www.nytimes.com/section/world/middleeast"
elif nav == '2':
    link = "https://www.nytimes.com/section/us"
elif nav == '3':
    os.system('cls||clear')
    link = "https://www.nytimes.com/section/politics"
elif nav == '4':
    link = "https://www.nytimes.com/section/nyregion"
elif nav == '5':
    os.system('cls||clear')
    nav = input("1 = Книга сделок \n"
                "2 = Экономика \n"
                "3 = Энергия \n"
                "4 = Рынки \n"
                "5 = СМИ \n"
                "6 = Предпринимательство \n"
                "7 = Ваши Деньги \n"
                "8 = Автомобили \n")
    if nav == '1':
        link = "https://www.nytimes.com/section/business/dealbook"
    elif nav == '2':
        link = "https://www.nytimes.com/section/business/economy"
    elif nav == '3':
        link = "https://www.nytimes.com/section/business/energy-environment"
    elif nav == '4':
        link = "https://www.nytimes.com/section/markets-overview"
    elif nav == '5':
        link = "https://www.nytimes.com/section/business/media"
    elif nav == '6':
        link = "https://www.nytimes.com/section/business/smallbusiness"
    elif nav == '7':
        link = "https://www.nytimes.com/section/your-money"
    elif nav == '8':
        link = "https://www.nytimes.com/section/automobiles"

def cprint(text, color='def'):
    str = ''
    fc = '\033['
    colors = {'def': '0m',
              'red': '91m',
              'under': '04m',
              'green': '32m',
              'blue': '94m',
              'cyan': '96m',
              'yellow': '93m',
              'magenta': '95m',
              'grey': '90m'
              }
    if color not in colors:
        print(str + fc + colors['def'] + text)
    else:
        if color == 'under':
            print(str + fc + colors['under'] + text)
        else:
            print(str + fc + colors[color] + text)

session = requests.session()

link1 = 'https://www.nytimes.com/'

header = {
    'user-agent': "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0"
}

responce = session.post(link1, headers=header)


def get_page_data(link):
    profile_responce = session.get(link, headers=header).text

    soup = BeautifulSoup(profile_responce, "html.parser")
    post = soup.find_all('li', class_='css-ye6x8s')
    for item in post:
        title = item.find('h2', class_='css-1j9dxys e1xfvim30').get_text(strip=True)
        title = ts.bing(title, to_language='ru', if_use_cn_host=False)
        href = item.find('a').get('href')
        try:
            post = item.find('p', class_='css-1echdzn').get_text(strip=True)
            post = ts.bing(post, to_language='ru', if_use_cn_host=False)
            title = textwrap.fill(title, width=90)
            print('-' * 50)
            cprint("["+title+"]", color='green')
        except AttributeError:
            print('Нет описания')
        print('-' * 50)
        post = textwrap.fill(post, width=90)
        cprint(post)
        print(' ' + '\n' + 'https://www.nytimes.com' + href)



os.system('cls||clear')
get_page_data(link)

Питону только учусь, сильно за код не пинайте

Peek 2021-02-05 10-51.gif
 
  • Спасибо
Реакции: PlayerT7 и Khaan27

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Вот без парсера без API регистраций и смс, просто переводчик, зенка же умеет cmd запускать.
Вам нужно установить python
И библиотеку translators pip install translators
Просто переводчик на python:
import translators as ts


fileEN = open("text_en.txt", "a")
fileRU = open("text_ru.txt", "a")

with open("text_en.txt") as file:
    textEN = file.read()
    text = ts.bing(textEN, to_language='ru', if_use_cn_host=False)
fileRU.write(text)
В text_en.txt кладете то что нужно перевести
В text_ru.txt соответственно получаете результат

3942 символа закидывал, переводит...

Peek 2021-02-05 11-55.gif
 
Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
3942 символа закидывал, переводит...
А ты попробуй больше 10-15 тыс. символов в сутки перевести. Точнее не символов, а чистого текста для перевода.
Python парсер New York Times с авто переводом текста
Лучше оформи это как отдельную статью, во внеконкурсных, и распиши с нуля, что и как нужно новичкам сделать и как это можно связать с зенкой для автоматизации. :az:
 

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
А ты попробуй больше 10-15 тыс. символов в сутки перевести. Точнее не символов, а чистого текста для перевода.

Лучше оформи это как отдельную статью, во внеконкурсных, и распиши с нуля, что и как нужно новичкам сделать и как это можно связать с зенкой для автоматизации. :az:
Антон ты же знаешь я в постере не разбираюсь, сам у тебя простенькие шаблоны заказывал, даже XPath поменять не мог, там то без раскрашивалки текста в терминале и меню, строк 30 кода описывать то особо нечего :ah:

А ты попробуй больше 10-15 тыс. символов в сутки перевести. Точнее не символов, а чистого текста для перевода.
Опытным путем выяснено что текста влазиет 5000 символов, русский текст дописывается в конец файла, 3 раза в сутки запустить не составит труда, можно же просто напиливать текст по 5к и потихоньку скармливать скрипту, на перевод уходит полторы секунд --- 1.514275312423706 seconds ---


100к за 25 секунд бан не поймал, задержек не ставил, пользуйтесь!
2021-02-05_21-18.png
 
Последнее редактирование:

BPOH

Client
Регистрация
11.04.2019
Сообщения
116
Благодарностей
26
Баллы
28
Я правильно понимаю, что для среднего переводного сайта, который постит по 15 статей по 3000 символов в среднем в сутки переведенные на 20 языков, нужно платить 400 р. в сутки?
orka13 тут должна быть твоя реклама)
Список языков тут https://pypi.org/project/translators/
'af', 'ar', 'as', 'bg', 'bn', 'bs', 'ca', 'cs', 'cy', 'da', 'de', 'el', 'en', 'es', 'et', 'fa', 'fi', 'fil', 'fj', 'fr', 'fr-ca', 'ga', 'gu', 'he', 'hi', 'hr', 'ht', 'hu', 'id', 'is', 'it', 'iu', 'ja', 'kk', 'kmr', 'kn', 'ko', 'ku', 'lt', 'lv', 'mg', 'mi', 'ml', 'mr', 'ms', 'mt', 'mww', 'nb', 'nl', 'or', 'otq', 'pa', 'pl', 'prs', 'ps', 'pt', 'pt-pt', 'ro', 'ru', 'sk', 'sl', 'sm', 'sr-Cyrl', 'sr-Latn', 'sv', 'sw', 'ta', 'te', 'th', 'tlh-Latn', 'tlh-Piqd', 'to', 'tr', 'ty', 'uk', 'ur', 'vi', 'yua', 'yue', 'zh-Hans', 'zh-Hant'

Код переводчика одного текста на разные языки:
# Переводит до 5к символов
import translators as ts
import time

# Вписать нужные языки
lang = ['ru', 'ar', 'af', 'de', 'es', 'pt', 'it', 'ja', 'ko', 'el', 'nl', 'hi', 'tr', 'ms', 'th', 'vi', 'id', 'he',
        'pl', 'mn']
start_time = time.time()


def transl(b):
    fileEN = open("text_en.txt", "a")
    fileRU = open("text_ru.txt", "a")
    with open("text_en.txt") as file:
        textEN = file.read()
        text = ts.bing(textEN, to_language=f'{lang[b]}', if_use_cn_host=False)
    fileRU.write(text)
    print("--- %s seconds ---" % (time.time() - start_time))


b = 0
# Вписать сколько языков указано, счет начинается с 0 для 20 языков значение 19
for __ in range(19):
    print(lang[b])
    # задержка на всякий случай 10 секунд
    time.sleep(3)
    transl(b)
    b += 1

Всетаки у гугла глаз дергаться начал, сейчас на пару языков всего дает переводить и стопит, если не критично ставьте задержку. в общей сложности без задержек гдето на 400-500к знаков перевел, а вообще эта штука поддерживает 9 переводчиков не обязательно гугл драконить можно чередовать

C#:
ru
--- 4.168996095657349 seconds ---
ar
--- 8.649657249450684 seconds ---
af
--- 13.27710747718811 seconds ---
de
--- 17.478077173233032 seconds ---
es
--- 22.20062232017517 seconds ---
pt
--- 26.694364309310913 seconds ---
it
--- 31.469526767730713 seconds ---
ja
--- 35.333019733428955 seconds ---
ko
--- 39.792784452438354 seconds ---
el
--- 44.22090983390808 seconds ---
nl
--- 48.90277338027954 seconds ---
hi
--- 52.71557831764221 seconds ---
tr
--- 56.769001483917236 seconds ---
ms
--- 61.375394105911255 seconds ---
th
--- 66.01137328147888 seconds ---
vi
--- 70.15671753883362 seconds ---
id
--- 74.56874632835388 seconds ---
he
--- 78.52526187896729 seconds ---
pl
--- 82.77242255210876 seconds ---
mn

Peek 2021-02-05 21-46.gif
 
Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
Антон ты же знаешь я в постере не разбираюсь
Так можешь просто вне конкурсную статью написать без использования зенки (а может и подумать, можно ли как то прикрутить что то туда), заодно и прокачаешь свой скилл и получишь обратную связь и вопросы по теме. Все у тебя получится, я в тебя верю. :az:
 

Warine

Новичок
Регистрация
23.02.2021
Сообщения
5
Благодарностей
0
Баллы
1
А как ещё можно скилл покачать? Всм. способы
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
А как ещё можно скилл покачать? Всм. способы
Берете тему в которой хотите прокачаться, принимаете участие в конкурсе, делаете свои проекты не важно на заказ или для себя. :az:
 

Garry Galler

Новичок
Регистрация
11.03.2021
Сообщения
1
Благодарностей
2
Баллы
3
Новый сервис перевода на старом API яндекса:

Можно (на платных тарифах) переводить гигантские объемы текста. Тарифы человеческие, на каждую заявку может быть составлен индивидуальный тарифный план. Удобное API и читабельная документация для разработчиков.
 
Последнее редактирование:
  • Спасибо
Реакции: Strannik64 и radv

biryukovm

Client
Регистрация
19.05.2019
Сообщения
147
Благодарностей
10
Баллы
18

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113

biryukovm

Client
Регистрация
19.05.2019
Сообщения
147
Благодарностей
10
Баллы
18
Попробуйте заново создать токены и заменить ими старые. У токенов ограниченный срок действия.
Пробовал пересоздать токен даже по несколько разРезультат тот же Он возвращает текст без перевода
 

biryukovm

Client
Регистрация
19.05.2019
Сообщения
147
Благодарностей
10
Баллы
18
А есть такое же но для Гугла ?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113

Azat

Client
Регистрация
06.05.2016
Сообщения
12
Благодарностей
4
Баллы
3
Здравствуйте! Вроде как добавил файл, но выходит ошибка. Подскажите, в чем может быть проблема?
Тип Время Сообщение
16:55:11 "Компиляция кода System.IO.FileNotFoundException: Не удается найти указанный файл. (Исключение из HRESULT: 0x80070002)
в System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
в ZennoLab.AssemblyCompiler.Forms.AssembliesFormGAC.AssemblyCache.ngTTSOxxOJMrS9FErbH2(Int32 )
в ZennoLab.AssemblyCompiler.Forms.AssembliesFormGAC.AssemblyCache.QueryAssemblyInfo(String assemblyName)
в ZennoLab.ZennoPoster.Core.Modules.TemplateExecutor.V5.ExecutorOfStepsV5.T1rB46IEGYa6tmbHP5BA(Object )
в ZennoLab.ZennoPoster.Core.Modules.TemplateExecutor.V5.ExecutorOfStepsV5.CompileCode(Boolean& errorCompile)"
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 674
Благодарностей
1 859
Баллы
113
Здравствуйте! Вроде как добавил файл, но выходит ошибка. Подскажите, в чем может быть проблема?
Тип Время Сообщение
16:55:11 "Компиляция кода System.IO.FileNotFoundException: Не удается найти указанный файл.
в тексте ошибки есть ответ. не может найти какой то файл. Проверьте еще раз настройки и добавление dll файлов. (добавлять надо при закрытых зеннопостер и проджектмейкер)
В тексте ошибки обычно указывает и строку в которой ошибка.
Возможно причина в версии зеннопостер.
 
  • Спасибо
Реакции: Azat

Porosenok

Client
Регистрация
26.09.2010
Сообщения
1 279
Благодарностей
96
Баллы
48
Я так понимаю код уже не пашет?
Такую ошибку выдает
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)