Надо посмотреть (с помощью print хот бы), что возвращает item.find_all('div', class_='offer__price-block'). Возможно, там, например, всего 1 элемент или даже ни одного.
Алексей, тогда дёргать url в принципе нормально, хоть и надо понимать, что если что-то пошло не так и вызов был неудачен, то он же не повторится, если делать его прям из скрипта обработки формы с этой кнопкой.
Strabbo, тут каждый день опытные программисты со знаниями и опытом задают вопросы. И на SO задают вопросы. Почему специалисты провайдеров такие особенные, что они не имеют права тоже задавать вопросы, если они не могут в чём-то разобраться?
Soho, можно делать редирект (дёшево) или проксировать запросы через свой сервер (но тот прокачает весь трафик в обе стороны).
В Амазоне CNAME можно настроить. Например, Viber в своих интеграциях передаёт файлы через presigned url в S3, но на поддомене самого вайбера. Что тут нет это конечно грустно, могло бы решить некоторые проблемы.
Это же позиционируется как замена S3. Скорее всего, у них там что-то типа storage.domain.com/bucketname или bucketname.storage.domain.com. Соответственно, нужно будет класть, допустим, в path/to/file.jpg, а потом использовать как https://storage.domain.com/bucketname/path/to/file.jpg. И не забыть разрешить анонимный доступ к этому бакету на чтение.
Советую всё же внимательнее почитать их условия и ограничения. На первый взгляд они заявляют, что data transfer полностью включён в цену, но я бы поостерёгся верить этому на слово.
freedom1b2830, я поэкспериментировал и понял, что трафик завернулся в нужный интерфейс, но в нём он уходит с неправильным IP другого интерфейса. Решение - сделать SNAT
Ну сделайте отдельное уникальное поле и триггер, который его генерирует.
Ещё можно сделать serial, который 1 января принудительно поднимать до 2023XXXXXXX, тогда в обычных ситуациях он сам будет заполнять поле нормальным значением без дополнительных усилий. Главное успевать переключить год до первых записей нового года (хотя, возможно, в вашей ситуации и некритично, если несколько записей останутся в предыдущем году).
Но в целом это дурацкий подход в любом слуаче. Можно добавлять в отображаемые поля что угодно, но первичный id лучше пусть будет сквозным. Так, кстати, часто делают, например, с номерами договоров в разных системах: они монотонны, а для удобства взаимодействия с контрагентами и быстрого определения актуальности договора в них можно добавлять текущий год.
Очень грубо говоря, n log n означает, что у нас цикл двойной вложенности, но за счёт правильной организации алгоритма длительность вложенных циклов становится заметно меньше, чем n.
Sayrus Craft, сделай цикл, который добавляет в $keyboard кнопку. На выходе из цикла в $keyboard будет столько кнопок, сколько итераций цикла. Не забудь перед циклом инициализировать $keyboard пустым набором кнопок.
SendToTelegram надо, разумеется, вызвать вне цикла.
За подробным кодом - читай учебник по PHP. Вопрос очень тривиальный, если даже с таким возникли проблемы, то рано ещё писать что-то сложнее Hello World.
Ага, пользователь не успел прочитать, что от него хотят, или отвлёкся на звонок, а время уже вышло. А если поставить минуту ожидания, то пользователь через 3 секунды ввёл имя, а потом ещё 57 секунд думает не угодила ли в бота неуправляемая ракета с ядерным боезарядом...
freedom1b2830, OUTPUT в таблице filter сработает уже после маршрутизации и никак на неё не повлияет. Нужно менять в таблице mangle. Я уж не говорю о том, что wlp0s21f0u2 это не интерфейс VPN.
Вот рыба того, что можно сделать:
iptables -t mangle -A OUTPUT -m owner --uid-owner 1021 -j MARK --set-mark 2
echo 100 vpn >> /etc/iproute2/rt_tables
ip route add default dev tun123 table vpn
ip rule add fwmark 2 p 100 lookup vpn