• Как отправить фото через telegram api?

    @dronmaxman
    VoIP Administrator
    Какую библиотеку пользуете?

    import telebot
    from  telebot import types
    
    img = open(imageFile, 'rb')
    bot.send_photo(chatID, img, caption="New image")
    Ответ написан
    2 комментария
  • Как верстать и сразу же натягивать на WP?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Как понимать верстаю ли я или натягиваю на ВП? Понимаете, это разные абсолютно вещи.
    И вообще верстка не связана с натягиванием на ВП.
    Все начинается с работы дизайнера. После чего дизайн отдается верстальщику. Верстальщик с учетом ТЗ верстает шаблон используя html, css, js (тут он может подключить кучу разных сборщиков, препроцессоров и т.д. - gulp, haml, less, scss и т.д.).
    Далее разработчик создает тему для WordPress на основе верстки, т.е. пишет рнр код зная кодекс ВП.
    Ответ написан
    Комментировать
  • Как в requests получить куки, правильно сохранить в файл, потом использовать?

    @dgk
    как-то так:
    import requests, json
    
    session = requests.session()
    session.get('https://httpbin.org/cookies/set/my-cookie/my-value')
    print(session.get('https://httpbin.org/cookies').json())
    
    with open('cookies.json', 'w') as f:
        json.dump(requests.utils.dict_from_cookiejar(session.cookies), f)
    
    session = requests.session()
    print(session.get('https://httpbin.org/cookies').json())
    
    with open('cookies.json') as f:
        session.cookies.update(json.load(f))
    
    print(session.get('https://httpbin.org/cookies').json())
    Ответ написан
    3 комментария
  • Как сделать ссылку на сайте, чтобы открыть Телеграмм?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Вариант для РФ (ибо домены t.me и telegram.me заблокированы)
    <a href="https://tele.click/{username}">{username}</a>


    UPD 08.04.2019
    Любые альтернативы t.me добавляют со временем рекламу и редиректы на сторонние сайты.
    Пришлось запилить собственное решение https://github.com/tgrm/tgrm.github.io
    Ответ написан
    Комментировать
  • Как сделать ссылку на сайте, чтобы открыть Телеграмм?

    А в чём проблема была посмотреть, как это на t.me сделано?

    <a href="tg://resolve?domain=username">username</a>
    Ответ написан
    Комментировать
  • Как отправить файл через бота в телеграмм?

    @LimerBoy
    from io import BytesIO
    
    with open(file, 'rb') as tmp:
        obj = BytesIO(tmp.read())
        obj.name = '1.txt'
        bot.send_document(message.from_user.id, data=obj, caption='your file')
    Ответ написан
    Комментировать
  • Как использовать метод sendMediaGroup в Telebot?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    При этом обычный список из ссылок на фото возвращает ошибку. В чём проблема?

    В том, что метод не приинмает список ссылок на фото. Вы же сами приложили скриншот из документации.

    Параметр media принимает список из типов
    InputMediaAudio, InputMediaDocument, InputMediaPhoto and InputMediaVideo
    . Открываете нужный вам тип в документации и смотрите, какие параметры он принимает
    https://core.telegram.org/bots/api#inputmediaphoto

    Допустим, у типа InputMediaPhoto параметры media, caption и parse_mode.
    Все типы в Telebot лежат в telebot.types

    medias = [types.InputMediaPhoto('https://habrastorage.org/webt/61/99/de/6199de8312758776787774.png'), types.InputMediaPhoto('https://habrastorage.org/getpro/habr/upload_files/1fd/40a/c44/1fd40ac441a0aee55fc90e67997437af.png')]
    bot.send_media_group(chat_id, medias)
    Ответ написан
    Комментировать
  • Как исправить ошибку dictionary changed size during iteration?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Проблема связана с тем, что вы пытаетесь модифицировать словарь, по элементам которого итерируетесь.
    В условиях вашего кода это не проблема. Но вы должны сначала прежде чем начнётся цикл с удалениями) взять список пар элементов из вашего словаря.
    products.items() возвращает не список, а итератор по элементам словаря. Само собой этот итератор ломается как только вы удаляете из словаря первый элемент.
    Но если этот итератор до первого удаления полностью превратить в список, то удалять потом можно что хотите.
    for product_id, value in list(products.items()):
        if value['g_1'] == 0:
            del products[product_id]

    Или так:
    new_products_dict = {k: v for k, v in products.items() if v['g_1'] != 0}

    Здесь создаётся новый словарь из элементов, которые удовлетворяют вашим условиям.
    Ответ написан
    1 комментарий
  • API гибдд, как узнать о штрафах по номеру автомобиля?

    @sergei66666
    C#, .net core
    Здравствуйте. Более 4 лет работаю в сфере, где нужны данные по штрафам и вот к чему пришёл:

    1) Как сказали выше все данные есть в СМЭВ. Из неё можно взять данные напрямую из ГИБДД или из ГИС ГМП. Но чтобы получить к СМЭВ доступ нужно пройти 9 кругов ада и потратить еще больше денег (шифрованный канал связи и спец оборудование). Для большинства компаний смысла в этом нет.

    2) К ГИС ГМП можно получить доступ иным способом. Есть сервисы (например НКО МОНЕТА и А 3) для оплаты различных услуг, в том числе штрафов ГИБДД. Вот они предоставляют доступ к ГИС ГМП. Но чтобы пользоваться этим каналом надо либо очень много оплачивать штрафов, либо доплачивать из кармана. Речь о 5-30 тысячах рублей в месяц.
    Также стоит отметить, что в ГИС ГМП нет фотографий.

    3) Использование парсеров. Выше были указаны api-parser.ru и gibdd-api.mchanges.com. Для небольшого числа проверок весьма неплохо, но если запросов много, то дороговато выходит. Также стоит иметь ввиду, что парсеры использую сайт ГИБДД, который частенько бывает недоступен.

    4) На данный момент (март 2020 года) на сайте ГИБДД стоит Google reCAPTCHA. Можете выбрать любой сервис для решения reCAPTCHA и напрямую брать данные с ГИБДД.
    Из минусов:
    4.1) На сайте ГИБДД иногда происходят изменения и вам придётся адаптировать своё решение.
    4.2) При формировании бюджета для сервиса решения reCAPTCHA стоит иметь ввиду тот факт, что до 100% процентов токенов могут быть неработоспособны, но за них все равно придётся платить.
    Но с учетом минусов есть и плюс - это всё равно ГОРАЗДО дешевле, чем существующие парсеры.

    5) Если нужны не только штрафы ГИБДД, но и штрафы ФССП (которые лежат в ГИС ГМП), штрафы АМПП и МАДИ, то можно воспользоваться специализированными сервисами, которые будут проверять все ваши автомобили на штрафы по всем базам. Вам нужно добавить свои авто (вручную или посредством api), а обратно уже выгружать штрафы.
    Например, у сервиса Твоя ГИБДД - Бизнес минимальный тариф в два раза меньше чем у api-parser.com. Вам не придётся думать о работоспособности сайта ГИБДД и иных баз - в любой момент через api сервиса можете получить все штрафы + фотографии.
    Если не понравится этот сервис, есть еще пара сервисов-гигантов: штрафов нет и онлайн гибдд.

    Также думаю, что с любым из этих сервисов можно договориться и получить доступ к их парсеру ГИБДД. Думаю, будет дешевле, чем у api-parser.com. Попробуйте написать в поддержку и уточнить при желании.

    Дополнено (ноябрь 2020). На данный момент для получения именно штрафов ГИБДД использую два сервиса:
    1) Дешевый, но временами сбоит - Твоя ГИБДД - Парсинг
    2) Дорогой, но надежный - api-parser.ru.
    Если не работает первый, то использую второй. По итогу дешево и сердито.
    Ответ написан
    Комментировать
  • Как опубликовать таблицу в интернете без названия таблицы и листа?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Сделайте метод doGet() в котором возвращайте HTML код. Разверните приложение и сохраните ссылку.
    const HTML_CODE = "HTML код страницы";
    function doGet(e){
        return HtmlService.createHtmlOutput(HTML_CODE);
    };
    Ответ написан
    2 комментария
  • Как предотвратить спам через форму обратной связи?

    Zakonoposlushniy
    @Zakonoposlushniy Автор вопроса
    Решил проблему таким способом :
    В форму добавил поле
    <input id="check" name="check" type="hidden" value="" />

    Потом в кнопку, через которую идёт отправка, добавил
    onclick="document.getElementById('check').value = 'secretcode';"

    Вышло что-то вроде этого
    <button onclick="document.getElementById('check').value = 'secretcode';" type="submit">Отправить</button>

    И в php-обработчике, добавил это
    if ($_POST['check'] != 'secretcode') exit('Spam decected');


    Возможно кому-то поможет.
    Удачи!
    Ответ написан
    9 комментариев
  • Как запретить просмотр директории?

    @reservist
    Достаточно добавить всего одну простую строчку в .htaccess в корень сайта:

    # запрет выдачи листинга
    Options -Indexes
    Ответ написан
    Комментировать
  • Где сейчас регать домен, чтобы была хорошая цена на регистрацию и продление?

    @sergeyshat Автор вопроса
    Решение нашёл
    Стоимость услуг по регистрации и продлению доменных имён одинакова
    dnar.ru - 162 рубля
    Ответ написан
    Комментировать
  • Как отрисовать точки на плоскости по широте и долготе?

    joeberetta
    @joeberetta Куратор тега JavaScript
    Читай: https://epdf.pub/google-for-dummies.html
    1 комментарий
  • Как узнать код станции по ее названию? Яндекс.Расписание API?

    Можете попробовать заюзать одну из систем отсюда https://tech.yandex.ru/rasp/doc/concepts/coding-sy... , например, эту osm.sbin.ru/esr
    Ответ написан
    Комментировать
  • Как лучше парсить excel файл?

    AnnTHony
    @AnnTHony
    Интроверт
    Я писал макрос в самом экселе (на VBA), открывал по очереди файлы, искал нужные строки и копировал в свой документ. (подробных примеров с открытием и считыванием файлов в сети достаточно)
    Инструмент можно использовать любой, каким умеете пользоваться / нравится / работает с экселем.
    Можно просто вытащить эти строки и потом на их основании сформировать файл. Тут как удобнее уже Вам. (такое бы провернул на Delphi или VB).
    В самом экселе есть функция ВПР, но придется прописывать формулу для каждого документа. Для этого может сгодиться и Python.
    Ответ написан
    Комментировать