import requests
from bs4 import BeautifulSoup
import json
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
def get_news_info(card):
"""
Функция для получения информации об одной новости
"""
# Получаем заголовки новости
article_title = card.find("a").text.strip()
# Получаем описание новости
article_desc = card.find("p").text.strip()
# Получаем url новости
article_url = f'https://www.irk.ru{card.find("a").get("href")}'
# Получаем время новости
article_date_time = card.find("time").get("datetime")
id = article_date_time.replace(' ', '').replace('-', '').replace(':', '')
news = {
"article_date_timestamp": article_date_time,
"article_title": article_title,
"article_url": article_url,
"article_desc": article_desc
}
return (id, news)
def get_site_news(file_news_dict, articles_cards):
"""
Функция для добавления новых новостей в словарь,
возвращает словари со всеми новостями и с новыми новостями
"""
new_news_dict = dict()
for article in articles_cards:
id, news = get_news_info(article)
if id not in file_news_dict.keys():
file_news_dict[id] = news
new_news_dict[id] = news
return (file_news_dict, new_news_dict)
def main():
url = "https://www.irk.ru/news/"
r = requests.get(url=url, headers=headers)
soup = BeautifulSoup(r.text, "lxml")
articles_cards = soup.find_all("li", class_="b-news-article-list-item")
# Открываем файл с новостями
with open("src/test_dict.json", "r+") as news_file:
# Получаем словарь новостей из файла
try:
file_news_dict = json.load(news_file)
except:
# Если в файле не словарь, создаем пустой словарь
file_news_dict = dict()
# Обновляем новости
file_news_dict, new_news_dict = get_site_news(file_news_dict, articles_cards)
# Сохраняем новости
json.dump(file_news_dict, news_file, indent=4, ensure_ascii=False)
print(new_news_dict)
if __name__ == '__main__':
main()
import telebot
# import configure
from telebot import types
bot = telebot.TeleBot(token)
@bot.message_handler(commands=['get_info', 'info'])
def get_user_id(message):
markup_inline = types.InlineKeyboardMarkup()
but_yes = types.InlineKeyboardButton(text='Да', callback_data='yes')
but_no = types.InlineKeyboardButton(text='Нет', callback_data='no')
markup_inline.add(but_yes, but_no)
bot.send_message(message.chat.id, 'Желаете узнать небольшую информацию о вас', reply_markup=markup_inline)
@bot.callback_query_handler(func = lambda call: True)
def answer(call):
if call.data == 'yes':
markup_reply = types.ReplyKeyboardMarkup(resize_keyboard=True)
but_ID = types.KeyboardButton('МОЙ ID')
but_username = types.KeyboardButton('МОЙ НИК')
markup_reply.add(but_ID, but_username)
bot.send_message(call.message.chat.id, 'Нажмите на одну из кнопок', reply_markup=markup_reply)
elif call.data == 'no':
pass
@bot.message_handler(content_types=['text'])
def get_text(message):
if message.text.lower() == 'привет':
bot.send_message(message.chat.id, 'Привет, неизвестный юзер!')
elif message.text.lower() == 'как дела?':
bot.send_message(message.chat.id, 'Все хорошо, как у тебя?')
@bot.message_handler(content_types=['text'])
def get_text(message):
if message.text() == 'МОЙ ID':
bot.send_message(message.chat.id, f'Your ID: {message.from_user.id}')
elif message.text() == 'МОЙ НИК':
bot.send_message(message.chat.id, f'Your ID: {message.from_user.first_name}, {message.from_user.last_name}')
bot.polling()