Python Proga
2.27K subscribers
40 photos
12 videos
1 file
133 links
Всем привет! В этом телеграмм канале ты сможешь найти много кодов на Python. В общем будет интересно, так что подписывайся!
Мой аккаунт в тг: @local_id
Download Telegram
!ВНИМАНИЕ!

Сейчас у меня не очень много свободного времени, и поэтому примерно следующие две недели посты будут выходить довольно редко.
Всем привет! Я 3 недели ничего не публиковал, но вот решил начать.

Я решил сделать копию бота Дай Винчик. Если что, это бот для знакомств в котором в основном сидят школьники. Так вот, я уже написал код, и даже запустил бота. Но так как скорее всего в боте куча багов я прошу вас протестить этот код. Вот бот - @leomatchprogabot . Этот бот будет работать до вечера. Если найдёте баг, то просьба скинуть его в чат - @pythonprogachat . Я постараюсь сегодня пофиксить все баги, и завтра с утра выложить код.

А этот текст для тех, кто уже запустил этого бота. Просто очистите сообщения, нажмите на кнопочку start и всё у вас будет Чики пуки. А если всё же найдете баг, то просьба о нём написать в чате.
1
А вот и код Дайвинчика. Вчера он у меня поработал пару часов и даже без ошибок. И кстати, успели создать аж 66 анкет. Правда когда кто-то пытался посмотреть анкеты, ему высылалось сообщение 'Упс... Анкеты не найдены'. И на самом деле так и должно было быть. Код искал анкеты в радиусе 80 км, но к сожалению даже две анкеты на том расстоянии не было.

А теперь насчёт того, как работает поиск анкет. Код получается все анкеты, которые подходят определённому пользователю. Потом он смотрит на каком индексе остановился пользователь. Допустим он смотрит анкеты в первый раз, то индекс у него само собой будет 0. Тогда код высылает анкету пользователю, которая находится на нулевом индексе среди всех анкет. После этого индекс пользователя повышается на 1, и он становится равен одному. Теперь бот отошлёт анкету, которая стоит на 1 индексе, потом на 2, на 3 и т.д. Если что в бд индекс хранится в колонке ind.

А как работает уведомление пользователя о том, что его кто-то лайкнул? Когда пользователь находится в одной из двух менюшек, создаётся второй поток, в котором в цикле while код проверяет, лайкнул ли кто-то пользователя или нет. Если кто-то его лайкнул, то бот отменяет все register_next_step_handler, и сообщает пользователю о том, что его кто-то лайкнул. А если пользователя не кто ещё не лайкнул, но он уже нажал на какую-то кнопку в менюшке, то цикл while прекращается.

Внимание! Бот будет работать только с версией python 3.9!

Вот инструкция и исходный код:
А вот и небольшое обновление Дайвинчика. Сейчас я покажу, что добавил:
1. Теперь если тебя лайкнула много человек, и все лнр одного пола, то так и будет показываться. Например - 'Ты понравился 2 девушкам', вместо 'Ты понравился 2 людям'.
2. Теперь у каждой анкеты есть свой ID, и по нему любой может найти твою анкету. Для этого есть кнопка, которая появляется во время начала просмотра анкет.
3. Также можно указать возраст, в пределах которого будут искаться анкеты для тебя. То есть если указать возраст от 15 до 25, то анкеты будут попадаться только в этом диапазоне.
4. Ещё можно указать свой Instagram.
5. А также можно анкете отправить не только текст или видео, но ещё и фото. Для этого во время просмотра анкету нужно нажать на кнопку 💌/🎥.
6. И последнее. Если раньше, чтобы указать город нужно было обязательно отправить геометку, то теперь можно написать название города в виде текста.

Внимание! Бот будет работать только с версией python 3.9!
👍6🔥1
А вот и ответы на вопросы:
А вот фото и видео, которые мне отправляли.
👍3
Наверное многие не знали, но с Google диском можно работать даже на Python, для этого у гугла есть свой API. Инструкция по его настройке ниже👇:

1. Перейдите в консоль API и создайте свой собственный проект.
2. Найдите «Google Drive API», выберите запись и нажмите «Enable».
3. Выберите «Credentials» в меню слева, нажмите «Create Credentials», выберите «OAuth client ID».
4. Теперь необходимо установить название продукта и экран согласия -> нажмите «OAuth client ID» и следуйте инструкциям. После завершения:
a. Выберите «Application type» как Web application.
b. Введите подходящее имя.
c. Введите https://localhost:8080 для «Authorized JavaScript origins».
d. Введите https://localhost:8080/ для «Authorized redirect URIs».
e. Нажмите «Save».
5. Нажмите «Download JSON» справа от идентификатора клиента, чтобы загрузить client_secret_<действительно длинный идентификатор>.json .

Загруженный файл содержит всю информацию об аутентификации вашего приложения. Переименуйте файл в «client_secrets.json» и поместите его в свой каталог с кодом.

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

С этим кодом мне помог он:
@egor_brownie2022
🤩4👍2
А это парсер для следующего сайта - https://www.qifa.ru/catalog/obuv.

Он берёт и сохраняет информацию о каждом товаре. И кстати. В самом начале кода есть переменная SPEED. Сейчас в ней записана строка 'h'. С этим значением парсер за 13 минут сохраняет в excel таблицу около 36 тысяч товаров. В этом режиме я немного ускорил скорость парсинга с помощью асинхронности и многопоточности.
А если записать в эту константу строку 'l', то парсинг будет длиться больше 10 часов, но зато будет более подробная информация о каждом товаре. На самом деле эту цифру можно уменьшить, если добавить асинхронность и многопоточность ещё и в этот режим, но я не успел сегодня это сделать, так что ждите завтра.
Но запомните, в константу SPEED можно записать либо 'h', либо 'l', и никакое больше значение.

И ещё. Перед запуском кода не забудьте скачать библиотеку lxml. Я её не импортировал, но она нужна.
👍6
Я обещал ещё вчера выложить обновлённую версию парсера, но немного опоздал. И кстати, старая версия не будет работать, потому что на момент публикации её в канал, сайт который я парсил немного изменился. А ещё во время теста парсера я сделал так, что он сохраняет только первые 10 страниц, и забыл потом убрать это ограничение. Так что ловите новый. Он должен работать, потому что я протестировал его сегодня утром. И ещё раз повторю. У него есть две скорости работы. Они определяются константой SPEED в начале кода. Если в неё записать строку 'h', то он будет работать в быстром режиме, а если записать строку 'l', то в медленном.

И ещё. Последняя версия кода Дайвинчик имела пару ошибок, которые я не заметил. Я их исправил, и новый код можно найти в этом сообщении -https://t.iss.one/pythonproga/267 .
👍10🔥21
А это код бота телеграмм, который позволяет скачивать видео с Ютуба.

Для начала нужно создать сервисный аккаунт в Google Cloud.
Для этого прочитайте эту страницу - https://support.google.com/a/answer/7378726?hl=ru .
И когда вы будете включать API, то найдите Google Drive API.

Затем зайдите в гугл диск в том аккаунте, в котором вы создали сервисный аккаунт. Создайте любую пустую папку и откройте в ней доступ для email сервисного аккаунта. Этот email выглядит примерно так - [email protected] .

Потом в коде в константе SERVICE_ACCOUNT_FILE
нужно будет указать путь к JSON файлу, который вы получите. А в константе TOKEN необходимо указать токен телеграмм бота.

И теперь выполняем эту команду: pip install --upgrade google-api-python-client
Как скачать другие библиотеки надеюсь вы поймёте
👍10😱2
А вот и ответы на вопросы:
А вот фото и видео, которые мне отправили в боте:
👍4
А это новая версия бота, который скачивает видео с Ютуба. Чтобы этот код заработал, нужно сделать всё тоже самое, что и раньше (прочитайте этот пост - https://t.iss.one/pythonproga/274).

А теперь давайте я объясню, что изменилось.
1. Теперь вместе с видео будет скачиваться и звук (но в отдельном файле).
2. Если раньше я сохранял id загруженных файлов в гугл диск в список, и через 10 минут просто удалял файлы по id из этого списка, то теперь я получаю список загруженных файлов, и проверяю дату их создания.
3. Если был плохой интернет, то поднимались ошибки по типу TimeoutError или Connection Error, и код их просто не обрабатывал. Сейчас я это исправил.

И ещё в старой версии было куча багов (и скорее всего ни есть и в этой)
👍79
А это третья версия Дайвинчика, и давайте я расскажу, почему я её выпустил.
Две предыдущие версии в принципе работали, но только если пользователей было меньше 50-60.
А проблема заключалась в том, что для каждого пользователя создавался отдельный поток, и в нём проверялось лайкнул ли кто-то пользователя, или нет. И если было слишком много потоков, то появлялась ошибка, которая говорила о том, что невозможно создать ещё один поток.
Теперь я изменил систему лайков, и все лайки стали проверятся в одном потоке для всех пользователей.

Внимание! Бот будет работать только с версией python 3.9!
👍26
Этот код читает запросы из txt файла, а затем задаёт их в гугле и выбирает вкладку фото, а затем сохраняет в таблицу ссылку на первое попавшееся изображение.

Чтобы этот код заработал необходимо кроме импортированных библиотек, скачать ещё и библиотеку 'lxml'.
Затем необходимо создать файл 'queries.txt' и в нём писать каждый запрос на разной строчке. Пример:
машина
гайка
болт
самолёт
Дальше необходимо скачать Firefox и geckodriver.exe (драйвер для управления браузером Firefox). Ну или же вы можете изменить код и использовать любой другой браузер.
И последний шаг. В начале кода есть две константы - TOKEN и ID. В TOKEN вам необходимо записать токен вашего телеграмм бота (если его нет, то создайте), а в ID ваш message.from_user.id, ну либо message.chat.id (точно не помню).
👍10