Легко. Давайте напишемо бота який перекладатиме нам всяке з німецької:
Для цього нам треба поговорити з botFather-ом:
А зараз трохи не по темі цієї статті. Ось код який перетворює вікідані на словник, шукаючи всі сутності які мають мітки однією мовою, а потім показучи їх мітки іншою мовою, використовуючи хитрий запит SPARQL:
import json import requests def translate(from_lang, to_lang, word): ''' Переклдає мітки елементів вікіданих з мови на мову. Повертає список варіантів перекладу ''' res = sparql(''' SELECT ?ukLabel WHERE { ?item ?label "%s"@%s. ?item rdfs:label ?ukLabel filter(lang(?ukLabel) = "%s") } LIMIT 10 ''' % (word, from_lang, to_lang)) return list(map( lambda e: e['ukLabel']['value'], res['results']['bindings'] )) def sparql(query): ''' Отримує JSON дані запиту SPARQL до вікіданих ''' res = requests.get( 'https://query.wikidata.org/sparql', params={ 'query': query, 'format': 'json' } ) return json.loads(res.text)
А тепер повертаємось до теми телеграмного бота. Аби його написати треба поставити бібліотеку:
pip install pyTelegramBotAPI
Ось її Github: https://github.com/eternnoir/pyTelegramBotAPI
А далі – елементарно як писати консольну програму:
import telebot TOKEN = '' # тут вставити те що BotFather сказав bot = telebot.TeleBot(TOKEN) @bot.message_handler(content_types=["text"]) # Якщо прийдуть нові повідомлення def respond_to_message(message): translations = translate('de', 'uk', message.text) # Отримати переклади тексту повідомленя resp = '\n'.join(translations) if translations else 'На жаль, перекладу слова %s не знайдено' % message.text bot.send_message( # відправити назад message.chat.id, # в той самий чат з якого прийшло (можна напевне й в інший) resp ) if __name__ == '__main__': bot.polling(none_stop=True) # Запустити бота аби той сидів на лінії і слухав повідомлення.
Поки що все, бо й висипатись іноді треба. Пізніше нагадайте мені не забути написати більше про SPARQL, як поставити собі локальну mediawiki і розширення до неї, як логінити сторонні застосунки через OAuth, і як переписати інтерфейс вікіпедії на Vue.js.
Filed under: Кодерство, Павутина Tagged: вікіпедія, Python