LINUX.ORG.RU

[Qt] прошу помощи в разработке программы

 


0

0

Граждане, помогите, кто чем может!
Пролетавшая на ЛОРе программа vsTranslator зависла в разработке, и я очень прошу помощи у людей заинтересованных, или кому просто не лень.
Сорцы находятся здесь: http://steplton.ho.ua/vstranslator.html

Цитирую суть проблемы прямо с указанной страницы:
-------------------
К сожалению, сайт m.translate.ru переехал на новый движок, всвязи с чем перевод системой Promt в текущей версии (0.4) невозможен.
Однако остаётся возможность перевода с помощью Google translator. Я искренне прошу помощи у знающих программистов по следующим пунктам:
1) разобраться с форматом корректного запроса на перевод текста к m.translate.ru (vstranslator.cpp, void vsTranslator::transl() , строка 294 и ниже)
2) прикрутить файлы локализации (qm) в программу, написанную в Qt Creator - автор ниасилил :(
-------------------
Заранее благодарен за любую помощь.
Мыло: olin (пёс) gala.net
Прямая ссылка на исходники: http://steplton.ho.ua/soft/vsTranslator04_src.tar.gz

★★★★★

Запрос выглядит:

http://m.translate.ru/translator/result/?text=текст+запроса+на+перевод&di...

Где dirCode в данном случае русско-английский (re). Остальеые коды легко рассмотреть на сайте.

Ответ берётся с этой же страниы из <div class="tres">результат</div>.

P.S. c++ умею плохо, код не смотрел.

anonymous
()
Ответ на: комментарий от anonymous

>код не смотрел.
В том-то и дело. Я и сам знаю, как выглядит запрос, да только работает он ТЕПЕРЬ только в браузере. Попробуй вытянуть с помощью wget - поймёшь :(

Steplton ★★★★★
() автор топика
Ответ на: комментарий от Steplton

Если работает только в браузере, значит сайт может отличить браузер от робота. Попробуй с помощью --header мянять HTTP заголовки. Трафик отследить можно с помощью wireshark, фильтр "http".

И спроси ещё prog.org.ru.

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

>Попробуй с помощью --header мянять HTTP заголовки

Обязательно попробую.
Т.к. я дуб в инет-серверах, то расширяю вопрос, пока не забыл.
Вот что получает программа на запрос вида /translator/result/?text=test+request&usev2=0&dirCode=er
===================

<html>
<head>
<title>В экземпляре объекта не задана ссылка на объект.</title>
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Lucida Console";font-size: .9em}
.marker {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
</style>
</head>

<body bgcolor="white">

<span><H1>Ошибка сервера в приложении '/'.<hr width=100% size=1 color=silver></H1>

<h2> <i>В экземпляре объекта не задана ссылка на объект.</i> </h2></span>

<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

<b> Описание: </b>Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

<br><br>

<b> Сведения об исключении: </b>System.NullReferenceException: В экземпляре объекта не задана ссылка на объект.<br><br>

<b>Ошибка источника:</b> <br><br>

<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code>

Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.</code>

</td>
</tr>
</table>

<br>

<b>Трассировка стека:</b> <br><br>

<table width=100% bgcolor="#ffffcc">
<tr>
<td>
<code><pre>

[NullReferenceException: В экземпляре объекта не задана ссылка на объект.]
Advertizer.GenerateAdvertNewBanners(String page, String site) +747
Advertizer.GetAdvert(String page, String site) +5
_Default.GenerateWMLVersion(String dirCode, String text, String res) +106
_Default.Render(HtmlTextWriter writer) +1719
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266
</pre></code>

</td>
</tr>
</table>

<br>

<hr width=100% size=1 color=silver>

<b>Информация о версии:</b>&nbsp;Платформа Microsoft .NET Framework, версия:2.0.50727.3053; ASP.NET, версия:2.0.50727.3053

</font>

</body>
</html>
<!--
[NullReferenceException]: В экземпляре объекта не задана ссылка на объект.
в Advertizer.GenerateAdvertNewBanners(String page, String site)
в Advertizer.GetAdvert(String page, String site)
в _Default.GenerateWMLVersion(String dirCode, String text, String res)
в _Default.Render(HtmlTextWriter writer)
в System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
в System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
в System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
[HttpUnhandledException]: Выдано исключение типа &quot;System.Web.HttpUnhandledException&quot;.
в System.Web.UI.Page.HandleError(Exception e)
в System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
в System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
в System.Web.UI.Page.ProcessRequest()
в System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
в System.Web.UI.Page.ProcessRequest(HttpContext context)
в ASP.translator_result_default_aspx.ProcessRequest(HttpContext context) в c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\0c099c2e\83016fbb\App_Web_jrycuxrc.0.cs:строка 0
в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication. IExecutionStep.Execute()
в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
--><!--
Эта страница ошибки может содержать важные данные, так как ASP.NET настроено на показ подробных сообщений об ошибках с помощью &lt;customErrors mode="Off"/&gt;. Используйте на предприятиях &lt;customErrors mode="On"/&gt; или &lt;customErrors mode="RemoteOnly"/&gt;.-->

Steplton ★★★★★
() автор топика
Ответ на: комментарий от Steplton
sphinx@blizzard ~ $ curl 'http://m.translate.ru/translator/result/?text=hello+world&dirCode=er'
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8

"/>
<link href="/styles.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<title>PROMT - Результат перевода</title>
<style type="text/css">
</style>
</head><body>
<div>
<div class="tlogo"><img src="/images/promt_logo2.gif" style="vertical-align:middle;" alt=""/> <big><b>m.translate.ru</b></big></div>
<div class="tcouTop"><div class="adv_top"><a href="/banner/click/?id=19&amp;ver=xhtml&amp;page=/translator/result/default.aspx&amp;rnd=0903750"><img src="http://show.multiclick.ru/image.php?placement=3432&amp;sid=7861&amp;rnd=0903750" alt="" border="0" /> </a></div></div>
Результат перевода текста<br/><div class="tblue">hello world</div>с английского на русский:<br/><div class="tres">привет мир</div><div class="tinfo">Перевод выполнен системой перевода текстов PROMT</div><br/><span style="color: #cb6e66"><b>#</b></span> <a href="/translator/form/?usev2=1&amp;dirCode=er" accesskey="#">Перевести новый текст</a><br/><span style="color: #cb6e66"><b>*</b></span> <a href="/translator/?usev2=1&amp;text=hello world" accesskey="*">Другое направление перевода</a><br/><div class="tpromo"><div class="adv_text"><a href="/banner/click/?id=11&amp;ver=xhtml&amp;page=/translator/result/default.aspx">Полезные программы для мобильного</a></div>
<div class="adv_text"><a href="/banner/click/?id=13&amp;ver=xhtml&amp;page=/translator/result/default.aspx">Здесь Бесплатно! Игры, mp3, Видео. Чат+Знакомства</a></div>
<div class="adv_text"><a href="/banner/click/?id=14&amp;ver=xhtml&amp;page=/translator/result/default.aspx">Мобильный WAP-портал! Загрузки, ICQ, Общение</a></div></div>
<br/><a href="/?usev2=1">« На главную страницу</a><br/>
<div class="divV">Версия: <span class="nLink">xhtml</span> | <a href="/translator/result/Default.aspx?usev2=0&amp;text=hello+world&amp;dirCode=er">wml</a><br/>
<a href="/changeLang.aspx?usev2=1">Изменить язык</a><br/>(C)2003-2009, ПРОМТ<br/>
<div class="tcou"><a href="http://waplog.net/ru/c.shtml?40368"><img src="http://c.waplog.net/ru/40368.cnt" alt="waplog" /></a></div>
</div></div>
</body></html>
Sphinx ★★☆☆
()
Ответ на: комментарий от Sphinx

Спасибо! Я уже разобрался. Спасибо alex_custov за наводку!
Вобщем, вместо QHttp.Get нужно конструировать header и потом делать QHttp->request

В данный момент как раз переделываю связанные с этим функции.

Теперь бы ещё кто-нибудь меня просветил, как бы локализовать... В этом долбаном Qt develop не могу никуда приткнуть загрузку локализации. Смотрел как сделано в других программах - везде по разному, и такое ощущение, что через задницу.
Наверное, плюну, и сделаю лисапет - рукописные .lng файлы.

Steplton ★★★★★
() автор топика
Ответ на: комментарий от alex_custov

Документацию я читал. Дело в том что локализация в Qt, и локализация в Qt Develop оказались совсем разными вещами. О_О
Оно напихало в moc_ файлы каких-то заготовок для локализации, в результате сплошные конфликты а=ля эта функция уже определена и т.п.
У меня просто голова квадратной стала, и чем больше я дуплил в исходники, тем более бараном становился :-/

Steplton ★★★★★
() автор топика
Ответ на: комментарий от Steplton

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

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

Ещё раз большое спасибо за наводку на хидер и особенно на wireshark. Скомпилировал его - прелесть!
Программа заработала и уже выложена исправленная версия.
С локализацией сейчас не помню точно, где оно ругалось (мучился с этим где-то месяц назад), поэтому не могу уточнить вопрос. Буду разбираться позже.

Steplton ★★★★★
() автор топика
Ответ на: комментарий от alex_custov

>уже что-то подобное было
Я воспользовался для гугла вот этим адресом: http://alexsnet.ru/2009/02/google-translate-non-ajax-api/
Спасибо автору со ссылкой есть в About моей программы.

Но. Дело в том, что гугл мерзко переводит на русский, поэтому настолько остро стояла проблема с translate.ru - там движок ПРОМТ

Steplton ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.