# перечисляешь в списке изображения. цикл остановится на первом найденном.
for image in ['link.png', 'link1.png']:
location = pyautogui.locateOnScreen(image)
if location is not None:
break
else:
image, location = None, None
location is not None
- значит, что-то нашли. Что именно - лежит в image. Где именно - лежит в location.for image in ['link.png', 'link1.png']:
try:
location = pyautogui.locateOnScreen(image)
except pyautogui.ImageNotFoundException:
pass
else:
break
else:
image, location = None, None
@formatter(p1, p2)
def csv_reader(filename, request):
...
def csv_reader(filename, request):
...
_temp = formatter(p1, p2)
csv_reader = _temp(csv_reader)
def formatter(parse_func):
def output_func(*args):
... # тут обращаемся к output_func.p1, например
output_func.p1 = p1
output_func.p2 = p2
return output_func
@formatter
def csv_reader(filename, request):
...
csv_reader.p1 = a1
csv_reader.p2 = a2
data.forEach(function(rowData.name)
data.forEach(function(rowData) { ... }
{ name: 'John', age: 25 }
data.forEach(function(rowData) { console.log(rowData.name); } );
for (let i = 0; i < data.length; i++)
{
console.log(data[i].name);
}
from typing import NamedTuple
class Result(NamedTuple):
text: str # текст запроса
success: bool # успешен ли запрос
status: str # статус
async def check_text(text: str) -> Result:
url = f'https://сайт.com/?query={text}'
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
if response.status != 200:
return Result(text=text, success=False, status='Не удалось определить результат')
html = await response.text()
soup = BeautifulSoup(html, 'html.parser')
status_element = soup.find('div', class_='table-block')
if not status_element:
return Result(text=text, success=False, status='Не удалось определить результат')
status_text = status_element.get_text().strip()
# тебе нужно будет решить, когда запрос был успешен (True), а когда нет (False)
if "ok" in status_text:
return Result(text=text, success=True, status='Можно')
elif "no" in status_text:
return Result(text=text, success=False, status='Данный вариант недоступен')
elif "no1" in status_text:
return Result(text=text, success=True, status='Можно под заказ')
else:
return Result(text=text, success=False, status='Неизвестно')
result = await check_text(text)
if result.success:
... # реагируем на успешный запрос
logger.info('%s: %s', result.text, result.status)
else:
... # реагируем на неудачный запрос
logger.info('%s: %s', result.text, result.status)
@bot.callback_query_handler(func=lambda call: True)
# обрабатываем то, что начинается с 'city.'
@bot.callback_query_handler(func=lambda call: call.data.startswith('city.'))
def callback(call):
city = call.data[len('city.'):] # отрезаем префикс 'city.'
if city == 'istanbul':
bot.send_message(call.message.chat.id,'Вы выбрали город: Стамбул')
elif city == 'moscow':
bot.send_message(call.message.chat.id,'Вы выбрали город: Москва')
else:
bot.send_message(call.message.chat.id,'Я не знаю такого города')
keyboard = types.InlineKeyboardMarkup()
# обрати внимание, callback_data всегда начинается с 'city.'
keyboard.add(types.InlineKeyboardButton('Стамбул', callback_data='city.istanbul'))
keyboard.add(types.InlineKeyboardButton('Москва', callback_data='city.moscow'))
Cookies in Firefox are stored in an SQLite format database found in the file cookies.sqlite in the currently-active user profile directory (exact path is system-dependent).
%APPDATA%\Mozilla\Firefox\Profiles
, в ней каждый подкаталог - профиль браузера, часто один, но может быть несколько. Внутри подкаталога лежит файл cookies.sqlite
.os.path.expandvars()
(и модуля os.path
в целом), файл открыть стандартным модулем sqlite3
, а дальше смотри что внутри таблицы moz_cookies
.with open(filename, 'rb') as file:
media = MediaFileUpload(
filename, chunksize=1024 * 1024,
mimetype=message.document.mime_type, resumable=True)
request = service.files().create(
body=metadata, media_body=media)
file.close()