Задать вопрос
  • Как можно опубликовать пост в группе через телеграм бот от имени групы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    От имени группы нельзя, только от имени канала. Есть два способа:

    1. Сделать группу "группой обсуждения канала", тогда новые посты в канал будут публиковаться в группе.

    2. Делать форвард сообщений из канала в группу.
    Ответ написан
    1 комментарий
  • Как установить пакет libsndfile1 для librosa без прав sudo?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Можно скомпилировать самому. Или взять из пакетов такого же дистрибутива, как на хостинге, положить к себе, через LD_LIBRARY_PATH подсунуть... Но как тут уже правильно сказали, лучше не страдать фигнёй.
    Ответ написан
    Комментировать
  • Как получить данные со страницы сайта, для последующего парсинга?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Этот сайт с помощью этого js выставляет куки, потом редиректит на себя же ещё раз, при этом с правильной кукой выдаёт уже нормальный контент.

    Основная логика тут:

    salt="1524556899";
    document.cookie="ipp_sign="+e+"_"+salt+"_"+md5(e+salt)+"; expires=Tue, 31 Dec 2030 23:59:59 GMT; path=/;";
    ipp.setCookie();
    window.location.href = "https://galaxystore.ru/discount/?utm_referrer=" + window.location.hash;


    Соответственно, сайт вычисляет fingerprint, по которому идентифицирует пользователя, далее солит его и считает md5. Можно пытаться брать что-нибудь рандомное, похожее на этот fingerprint, и воспроизводить такую же логику. Но при активном трафике на эту страницу там могут и начать с этим бороться, в том числе банить по IP, вносить какие-нибудь мелкие изменения в алгоритм итд итп.

    PS: К вопросу об этической стороне. Все мы любим иногда получить что-то подешевле, это не грех. Но иногда есть деятели, которые хотят подешевле покупать десятками, затем продавать дороже каким-нибудь лохам и на этом наживаться. Именно они и любят делать такие вот парсеры. Это некрасиво, я бы отказался от такого заказа.
    Ответ написан
    2 комментария
  • Как узнать какой юзер заблокировал бота?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Ну exception случается при отправке конкретному id - вот и вывести этот id.

    Кстати, в except лучше указывать конкретный тип exception. Потому что может случиться ConnectionError из-за упавшей сети или сбоя Телеграма - и бот решит что все его заблокировали.
    Ответ написан
    Комментировать
  • Почему не выполняется команда save() в Django?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В модель внесены изменения, но не произведены миграции:

    python manage.py makemigrations
    python manage.py migrate
    Ответ написан
    Комментировать
  • Как оформить форму "Да/Нет" в программе?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    if pizza == "да":
      print ("Круто!")
    elif pizza == "нет":
      print ("Как же так?")
    else:
      print ("Моя твоя не понимать...")
    Ответ написан
    Комментировать
  • Как при новом заказе Woocommerce отправлять сообщения в Viber, WhatsApp, Telegram?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Тут надо начать с того, какие есть легальные способы посылать сообщения в каждый из мессенджеров.

    Telegram. Тут можно бесплатно создать бота и бесплатно посылать подписавшимся на бота сообщения. Но номера телефонов пользователей известны не будут, только их id.

    Как это использовалось на примере одного сайта трекинга посылок: нужно было написать боту команду /id, полученный id вбить в свой профиль на сайте, после этого бот начинал присылать тебе обновления по твоим посылкам.

    WhatsApp. Тут есть API для бизнесов, который позволяет работать в двух режимах: либо посылать по номеру телефона сообщения, удовлетворяющие согласованным с WA шаблонам (платно), либо если пользователь сам напишет входящее сообщение, открывается 24-часовое окно неогранинного общения с ним с любыми текстами (окно открыто 24 часа с момента последнего сообщения от пользователя), что позволяет делать чат-ботов, осуществлять поддержку итд, но не даёт слать что попало.

    В отличие от Viber, у бизнес-аккаунта есть свой телефонный номер. WhatsApp продаёт это через партнёров, которые могут брать 20-30 тыс. рублей в месяц даже при минимальном объёме трафика.

    Viber. У Viber есть два разных сервиса: Viber Business Messages (Viber Services) и Viber Public Accounts (VIber Bot).

    Второй похож на Telegram: можно создать Public Account, пользователи могут на него подписаться, после чего им можно писать сообщения. Но вместо номера телефона пользватели определяются по некоторому id.

    Первый похож на WhatsApp: можно посылать по номеру телефона, правда, спам запрещён, но технически на это нет специальных ограничений (но уже при 5% пожаловавшихся пользователей будет бан, который не обойти просто сменой номера, потому что у бизнес-аккаунта и номера-то никакого нет). Но шаблоны тоже есть, сообщения по утверждённым шаблонам считаются транзакционным трафиком и стоят дешевле. Это Viber продаёт только через партнёров, есть лимит на минимальный месячный ценник, который для маленьких интернет-магазинчиков будет заградительным. Плюс популярность Viber в России не очень велика и продолжает падать.

    Суммируя всё вышесказанное: посылать в мессенджеры по номеру телефона при создании нового заказа либо невозможно, либо неоправданно дорого по сравнению с обычными СМС.

    Есть также менее легальные способы для WhatsApp, основанные на имитации работы через браузерный клиент WhatsApp Web, их цена намного ниже официального метода, но все они чреваты баном со стороны WhatsApp, так что на живом нужном номере с таким уж точно не стоит играться.

    В случае Telegram можно также пытаться пилить взаимодействие на базе обычного клиента (у него открытый код), включая поиск аккаунтов по номеру (если пользователь не запретил это настройками приватности), но при активном поиске по номеру телефона Telegram быстро забанит.
    Ответ написан
    Комментировать
  • Как переименовать файлы по регулярному выражению?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Самое простое - взять в CPAN вот этот perl-модуль. В составе есть готовый скрипт массового переименования по регулярному выражению.

    Либо написать скрипт на любом другом знакомом языке (python, ruby итд), в котором есть поддержка регулярных выражений - задача не выглядит сильно сложной.
    Ответ написан
    Комментировать
  • Не могу подключить ссылку viber, как исправить?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Самое простое - сделать отдельную маленькую страницу, которая редиректит на вайбер через секунду, и уже на неё делать ссылку. Заодно там можно написать "если у вас не установлен вайбер ляляля скачайте его тут и всё такое"

    Нечтно похожее тут обсуждали, правда, в связи с public account Внешння ссылка на Viber-bot. Продвижение чат-бота Viber в Facebook Ads?
    Ответ написан
    1 комментарий
  • Ошибка при работе с postgres?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Достигнут предел max_connections у базы. Надо или увеличить, или (что лучше) разобраться, почему вдруг стало так много?
    Ответ написан
    Комментировать
  • Как докер работает с логами?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Докер удаляет наиболее старые записи из лога.
    Ответ написан
  • Почему команда curl -I (--head) отдает код 404, а curl -i отдает код 200?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В зависимости от используемых библиотек и технологий обработчик HEAD может быть необходимо ещё и явным образом надо написать. Поэтому нет ничего удивительного, что сервер и не обязан возвращать одинаково.

    Например, вот у меня есть сто лет назад написанный скрипт на базе библиотеки BaseHTTPServer:

    def do_GET(self):
      url = self.path
      for mm in self.methodmap.keys():
        if re.match(mm, url):
          return self.methodmap[mm](url, None)
      self.send_response(404)
      self.send_header('Content-Type', 'text/plain')
      self.end_headers()
      self.wfile.write('URL not defined')
    
    def do_HEAD(self):
      self.send_response(200)
      self.send_header('Content-type', 'application/json')
      self.end_headers()


    Здесь HEAD всегда будет возвращать 200, даже на кривые URL, в то время как GET может возвращать 404. Потому что писать красиво для HEAD мне не было никакой потребности, и я просто оставил тот вариант, который был в шаблоне скрипта по умолчанию.
    Ответ написан
    Комментировать
  • Как решить проблему с round в python (PostgreSQL)?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    round(cast(cash as numeric), 0)

    Или более коротко:

    round(cash::numeric, 0)

    А так как precision у нас 0 (значение по умолчанию), то его можно опустить, тогда будет без перевода в numeric:

    round(cash)
    Ответ написан
    1 комментарий
  • Как авторизоватся на сайте через python?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Дык vk не поддерживает HTTP Auth, смысл передавать такие параметры? Конечно же, будет возвращена главная страница сайта.

    Можно посмотреть, как устроена авторизация в том же vk_api
    Ответ написан
  • Как выделить слово жирным шрифтом?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    bot.send_message(chat_id, "Тут есть <b>жирный</b> текст", parse_mode="html")


    или

    bot.send_message(chat_id, "Тут есть **жирный** текст", parse_mode="Markdown")
    Ответ написан
  • Как решить проблему с хостом (pythonanywhere)?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Для бесплатного использования список возможных доступных доменов ограничен белым списком https://www.pythonanywhere.com/whitelist/

    (Хотя вижу что discord.com в него входит. Видимо, в список может не входить какой-то из новых IP-адресов discord.com)
    Ответ написан
    2 комментария
  • Какое решение подобрать, если нужны карты?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Leaflet в чистом виде позволяет быстро отображать карту, остальной функционал придётся дорабатывать. Есть сервисы и софт для роутинга (brouter, osrm) по OSM, есть готовые реализации сайтов для добавления всяких меток (например, umap, но тут по контексту скорее всего нужно будет делать своё). В отличие от ЯГуглов, тут нет такого, чтобы в одном месте было всё и сразу. Зато бесплатно и открыто.
    Ответ написан
    Комментировать
  • Есть ли возможность парсить сообщения в сообществах Viber?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Правильно, нет такой возможности. В Viber боты могут только отвечать на сообщения явным образом подписавшихся на них пользователей.
    Ответ написан
    Комментировать