Исходник translate

Dickson

Активный
Автор темы
186
55
This is a simple translator. it has gui interface and console interface


code:
main.py:
import requests

headers = {
    'accept': 'application/json, text/plain, */*',
    'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'content-type': 'application/json',
    'origin': 'https://www.reverso.net',
    'priority': 'u=1, i',
    'referer': 'https://www.reverso.net/',
    'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-site',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'x-reverso-origin': 'translation.web',
}

def translate(word):
    json_data = {
        'format': 'text',
        'from': 'rus',
        'to': 'eng',
        'input': word,
        'options': {
            'sentenceSplitter': True,
            'origin': 'translation.web',
            'contextResults': True,
            'languageDetection': True,
        },
    }

    response = requests.post('https://api.reverso.net/translate/v1/translation', headers=headers, json=json_data)

    if response.status_code == 200:
        data = response.json()
        translation = data['translation']
        print(translation)
    else:
        print(f"Ошибка: {response.status_code}")

while True:
    word = input("Введите слово для перевода (или 'q' для выхода): ")
    if word.lower() == 'q':
        break
    translate(word)


main.py:
import requests
from PySide6.QtWidgets import (
    QApplication, QMainWindow, QPushButton, QLineEdit, QComboBox, QLabel, QVBoxLayout, QHBoxLayout, QWidget
)
import sys
from PySide6.QtGui import QLinearGradient, QBrush, QPalette, QColor

headers = {
    'accept': 'application/json, text/plain, */*',
    'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'content-type': 'application/json',
    'origin': 'https://www.reverso.net',
    'priority': 'u=1, i',
    'referer': 'https://www.reverso.net/',
    'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-site',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'x-reverso-origin': 'translation.web',
}

def translate(word, from_lang, to_lang):
    json_data = {
        'format': 'text',
        'from': from_lang,
        'to': to_lang,
        'input': word,
        'options': {
            'sentenceSplitter': True,
            'origin': 'translation.web',
            'contextResults': True,
            'languageDetection': True,
        },
    }

    response = requests.post('https://api.reverso.net/translate/v1/translation', headers=headers, json=json_data)

    if response.status_code == 200:
        data = response.json()
        translations = data['translation']
        if isinstance(translations, list):
            return '\n'.join(translations)
        else:
            return translations
    else:
        return f"Ошибка: {response.status_code}"

class TranslatorWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle('Переводчик')
        self.setGeometry(100, 100, 400, 100)

        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        self.layout = QVBoxLayout(self.central_widget)

        self.input_layout = QHBoxLayout()
        self.layout.addLayout(self.input_layout)

        self.from_lang_combo = QComboBox()
        self.from_lang_combo.addItems(["rus", "eng", "deu", "fra", "spa", "ita", "por", "jpn", "zho"])
        self.from_lang_combo.setCurrentText("rus")
        self.input_layout.addWidget(self.from_lang_combo)

        self.to_lang_combo = QComboBox()
        self.to_lang_combo.addItems(["rus", "eng", "deu", "fra", "spa", "ita", "por", "jpn", "zho"])
        self.to_lang_combo.setCurrentText("eng")
        self.input_layout.addWidget(self.to_lang_combo)

        self.translate_button = QPushButton('Перевести')
        self.translate_button.clicked.connect(self.on_translate_button_click)
        self.layout.addWidget(self.translate_button)

        self.input_field = QLineEdit()
        self.input_field.setPlaceholderText('Введите текст для перевода')
        self.layout.addWidget(self.input_field)

        self.translation_label = QLabel()
        self.layout.addWidget(self.translation_label)

    def on_translate_button_click(self):
        word = self.input_field.text()
        if word:
            result = translate(word, self.from_lang_combo.currentText(), self.to_lang_combo.currentText())
            self.translation_label.setText(result)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    translator = TranslatorWindow()
    translator.show()
    sys.exit(app.exec())
 
  • Bug
  • Эм
  • Вау
Реакции: malonex, Fott и kyrtion

Fott

Простреленный
3,461
2,378
1715172808267.png


1715172818913.png

И чем тебе гуи на сайте не угодило?
1715172840484.png
 

Dickson

Активный
Автор темы
186
55
И чем тебе гуи на сайте не угодило?
гуи написал чисто для себя, для удобства, поэтому я приложил еще и консольную версию. вообще думал телеграм бота написать, потом как то впадлу стало