The asyncio event loop must not change after connection
обычно возникает, когда вы пытаетесь изменить цикл событий asyncio после того, как он уже был запущен. Или пытаетесь запустить асинхронные операции вне асинхронного контекста или пытаетесь изменить цикл событий после его запуска.import asyncio
from telethon import TelegramClient
class TelegramBot:
def __init__(self, api_id, api_hash, session_name):
self.client = TelegramClient(session_name, api_id, api_hash)
async def start(self):
await self.client.start()
async def chat_prepare(self, chat_to_work):
messages = await self.client.get_messages(chat_to_work, limit=1)
if len(messages) == 0:
return -1
m1 = messages[0].id
return m1
async def run(self, chat_to_work):
await self.start()
result = await self.chat_prepare(chat_to_work)
print(f'Result: {result}')
# Пример использования
api_id = 'YOUR_API_ID'
api_hash = 'YOUR_API_HASH'
session_name = 'YOUR_SESSION_NAME'
chat_to_work = 'YOUR_CHAT_ID'
bot = TelegramBot(api_id, api_hash, session_name)
# Запуск асинхронного контекста
asyncio.run(bot.run(chat_to_work))
import pdfplumber
import re
def extract_unique_words_with_tag(pdf_path, tags, remove_duplicates=False):
"""
Извлечение слов с тегом из PDF с указанием номера страницы.
Args:
pdf_path (str): Путь к PDF файлу.
tags (list): Список тегов, по которым фильтруются слова (например, ['UPS', 'SW']).
remove_duplicates (bool): Если True, удаляет дубли на всех страницах.
Returns:
list: Список кортежей (слово, номер страницы).
"""
try:
with pdfplumber.open(pdf_path) as pdf:
all_words_with_pages = []
for i, page in enumerate(pdf.pages):
text = page.extract_text()
if text:
lines = text.split("\n")
page_words = []
for line in lines:
words = line.split()
tagged_words = [
re.sub(r'[^a-zA-Z0-9\.\-]', '', word)
for word in words
if re.search(rf'\b\w*({"|".join(tags)})\w*\b', word)
]
page_words.extend([(word, i + 1) for word in tagged_words])
if remove_duplicates:
page_words = list(set(page_words))
all_words_with_pages.extend(page_words)
if remove_duplicates:
all_words_with_pages = list(set(all_words_with_pages))
unique_words_with_pages = sorted(all_words_with_pages, key=lambda x: (x[0], x[1]))
return unique_words_with_pages
except Exception as e:
print(f"[ERROR] Произошла ошибка: {e}")
return []
def find_unique_to_each_pdf(pdf_path1, pdf_path2, tags, remove_duplicates_for_pdf1=False, remove_duplicates_for_pdf2=False):
"""
Находит слова, уникальные для каждого PDF файла, с указанием номера страницы.
Args:
pdf_path1 (str): Путь к первому PDF файлу.
pdf_path2 (str): Путь ко второму PDF файлу.
tags (list): Список тегов для поиска.
remove_duplicates_for_pdf1 (bool): Если True, удаляет дубли в первом PDF.
remove_duplicates_for_pdf2 (bool): Если True, удаляет дубли во втором PDF.
Returns:
tuple: Два списка — слова с номерами страниц, уникальные для первого и второго PDF.
"""
unique_words_pdf1 = extract_unique_words_with_tag(pdf_path1, tags, remove_duplicates=remove_duplicates_for_pdf1) or []
unique_words_pdf2 = extract_unique_words_with_tag(pdf_path2, tags, remove_duplicates=remove_duplicates_for_pdf2) or []
words_only_pdf1 = set(word for word, _ in unique_words_pdf1)
words_only_pdf2 = set(word for word, _ in unique_words_pdf2)
unique_to_pdf1 = [(word, page) for word, page in unique_words_pdf1 if word not in words_only_pdf2]
unique_to_pdf2 = [(word, page) for word, page in unique_words_pdf2 if word not in words_only_pdf1]
return sorted(unique_to_pdf1), sorted(unique_to_pdf2)
# Пример использования
pdf_path1 = 'path/to/first/pdf'
pdf_path2 = 'path/to/second/pdf'
tags = ['UPS', 'SW']
unique_to_pdf1, unique_to_pdf2 = find_unique_to_each_pdf(pdf_path1, pdf_path2, tags)
print("Уникальные слова в первом PDF файле:")
for word, page in unique_to_pdf1:
print(f"{word} (страница {page})")
print("\nУникальные слова во втором PDF файле:")
for word, page in unique_to_pdf2:
print(f"{word} (страница {page})")
import socket
import re
import subprocess
import platform
# Функция для проверки доступности IP
def is_ip_reachable(ip):
# Параметры для команды ping в зависимости от операционной системы
param = '-n' if platform.system().lower() == 'windows' else '-c'
command = ['ping', param, '1', ip]
return subprocess.call(command) == 0
# Функция для проверки доступности IP:port
def check_ip_port(ip, port):
if not is_ip_reachable(ip):
return False
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2) # 2 секунды таймаут
result = sock.connect_ex((ip, port))
sock.close()
return result == 0
# Чтение списка IP:port из файла
with open('ip.txt', 'r') as file:
lines = file.readlines()
# Регулярные выражения для извлечения IP и порта
re_ip_port = re.compile(r"^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}):(\d+)$")
# Список для хранения доступных IP:port
available_ips = []
# Проверка каждого IP:port
for line in lines:
match = re_ip_port.match(line.strip())
if match:
ip, port = match.groups()
port = int(port)
if check_ip_port(ip, port):
available_ips.append(f"{ip}:{port}")
# Запись доступных IP:port в новый файл
with open('ipUP.txt', 'w') as file:
for ip_port in available_ips:
file.write(ip_port + '\n')
print("Проверка завершена. Доступные IP:port записаны в файл ipUP.txt")
Эта ошибка возникает при попытке редактировать только текст поста, который изначально включает в себя и текст, и изображение. Для таких типов постов необходимо указать, помимо текста, URL исходного изображения или URL нового изображения.
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import Chrome, ChromeOptions
from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException
driver = Chrome()
url = 'https://sc2arcade.com/map-list'
driver.get(url)
maps_names = driver.find_elements(By.CLASS_NAME, 'title')
options = ChromeOptions()
options.add_argument("--disable-notifications")
required_letters = 'qwertyuiopasdfghjklzxcvbnm'
class MapMaker:
def __init__(self, username, social_media_link, link_to_profile):
self.username = username
self.social_media_link = social_media_link
self.link_to_profile = link_to_profile
def __eq__(self, other):
if isinstance(other, MapMaker):
return self.value == other.value
return False
def __hash__(self):
return hash(self.value)
mapmakers = set()
for map_name in maps_names:
for required_letter in required_letters:
for letter in map_name.text:
if letter == required_letter:
driver.execute_script("arguments[0].click();", map_name)
map_name.click()
try:
author = driver.find_element(By.CLASS_NAME, 'v-avatar v-list-item__avatar rounded-0 v-avatar--tile').text
link_on_profile = driver.find_element(By.CLASS_NAME, 'player-link').text
social_media_link = driver.find_element(By.CLASS_NAME, 'v-btn__content').text
mapmaker = MapMaker(author, link_on_profile, social_media_link)
mapmakers.add(mapmaker)
driver.back()
driver.refresh()
except NoSuchElementException:
pass
print(mapmakers)