🖼 Изменение разрешения и расширения файла при помощи библиотеки PIL (Pillow)
➡️ Открытие изображения
Первая команда, которую мы рассмотрим, это открытие изображения. С помощью функции
➡️ Изменение размера изображения
Вторая команда, которую мы рассмотрим, это изменение размера изображения. Библиотека PIL предоставляет функцию
➡️ Сохранение изображения
Третья команда, которую мы рассмотрим, это сохранение изображения. После выполнения всех необходимых операций с изображением, вы можете сохранить его в файл с помощью функции
Вот тут можно почитать про примеры, да и в целом полистать доку
https://pillow.readthedocs.io/en/stable/handbook/tutorial.html
➡️ Открытие изображения
Первая команда, которую мы рассмотрим, это открытие изображения. С помощью функции
open() из библиотеки PIL вы можете загрузить изображение из файла и сохранить его в переменную. Например, следующий код загрузит изображение с названием "image.jpg":from PIL import ImageПосле выполнения этого кода, изображение будет загружено и готово к дальнейшей обработке.
image = Image.open("image.jpg")
➡️ Изменение размера изображения
Вторая команда, которую мы рассмотрим, это изменение размера изображения. Библиотека PIL предоставляет функцию
resize(), которая позволяет изменять размер изображения. Например, следующий код изменит размер изображения до 500 пикселей по ширине и 300 пикселей по высоте:resized_image = image.resize((500, 300))Вы можете указать любые значения для ширины и высоты в пикселях, чтобы получить нужный размер изображения.
➡️ Сохранение изображения
Третья команда, которую мы рассмотрим, это сохранение изображения. После выполнения всех необходимых операций с изображением, вы можете сохранить его в файл с помощью функции
save(). Например, следующий код сохранит измененное изображение в файл с названием "resized_image.jpg":resized_image.save("resized_image.jpg")
Вы также можете указать другой формат файла, добавив соответствующее расширение к названию файла.Вот тут можно почитать про примеры, да и в целом полистать доку
https://pillow.readthedocs.io/en/stable/handbook/tutorial.html
Pillow (PIL Fork)
Tutorial
Using the Image class: The most important class in the Python Imaging Library is the Image class, defined in the module with the same name. You can create instances of this class in several ways; e...
👍2❤1🔥1🥰1
👍4
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
Вся фишка в функции filter. Я думаю, что из названия и контекста понятно, что мы можем вызывать какую-то свою функцию для фильтрации итерируемого объекта. Здесь мы передали список на фильтрацию, получили объект типа filter, после чего привели его к списку и высчитали длину.
По какому алгоритму выбирали числа? Только четные И отрицательные —> -2.
У нас только одно такое число, так что и ответ: 1.
По какому алгоритму выбирали числа? Только четные И отрицательные —> -2.
У нас только одно такое число, так что и ответ: 1.
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4
python -m pip install pyrogram
python -m pip install TgCrypto
Импорт тут максимально простой. Просто из pyrogram импортируем модули через from / import:
from pyrogram import Client # потом ещё будем добавлять
Как и в любом другом боте нам нужен объект, с помощью которого уже и осуществляется работа.
В пироге это екземпляр принято называть app.
В него нужно передать
Название, строкаAPI_ID, строка либо число (int)API_HASH, строкаПро API_ID и API_HASH поговорим чуток позже.
app = Client("MyFirstUserBot", api_id, api_hash)Обработчики (хендлеры, handler) — это функции, которые срабатывают при определенном событии, например, при новом сообщении.
В Pyrogram они в виде декорратора который начинается на "on" (с англ - при), наример @app.on_message, @app.on_chat_join_request.
В декоратор следует передать фильтр, по которому будут выбираться случаи когда нужно чтобы обработчик сработал.
В библиотеке есть встроенные фильтры, их надо импортировать, но их можно и самому написать (научимся позже)
Как я говорил в предыдущем посте, нам нужно обрабатывать команды. Для этого, логично, надо создать обработчик сообщений, с фильтром, что это команда, и то что написали ее мы (мы ведь не хотим чтобы другие командовали вашим ботом?)
@app.on_message(filters.command(["start"], prefixes=".") & filters.me)
async def start(_, msg):
pass
Правильный порядок хендлеров сообщений должен выглядеть так:
Обработчики прописали, теперь пора это все дело запустить!
Тут всё просто:
app.run()
И, самое главное, без чего наш код ни в коем случае не заработает - данные телеграмма.
Как я говорил выше, ЮзерБота, как бы входит в твой аккаунт. Ему конечно же нужны данные. Это и есть api_id и api_hash
пишем свой номер телефона, на котором тг, и вводим код.
Далее там будет бланк, вы его заполняете. Данные можете писать какие угодно, они ни на что не влияют. Вы должны дойти то страницы с конфигурацией приложение (App Configuration). Там копируете app api_id и app api_hash, и вставляете в код, там где создавали екземпляр бота (app = ...)
from pyrogram import Client, filters
app = Client("тут", "ваши", "данные")
@app.on_message(filters.commands(["start"], prefixes=".") & filters.me)
async def start(_, msg):
pass
app.run()
Сегодня мы разобрались в базовой структуре ЮзерБота: поговорили про нужные классы, обработчики, их порядок, API данные. В следующем посте поговорим про отправку сообщений, редактирование, итп, так что
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Pyrogram
Welcome to Pyrogram — Pyrogram Documentation
Telegram MTProto API Framework for Python
Сразу под названием видим описание метода, то что он делает
Send text messages.
перевод:
(отправляет текстовое сообщение)
chat_id (int | str) – Unique identifier (int) or username (str) of the target chat. For your personal cloud (Saved Messages) you can simply use “me” or “self”. For a contact that exists in your Telegram address book you can use his phone number (str).
перевод:
(chat_id (int | str) — уникальный идентификатор (int) или имя пользователя (str) целевого чата. Для вашего личного облака (сохраненных сообщений) вы можете просто использовать «me» или «self». Для контакта, который существует в вашей адресной книге Telegram, вы можете использовать его номер телефона (str))
В самое первое — название параметра далее в скобках тип данных. "|" - это "или", "либо". Если в скобках есть оptional, то это значит что этот аргумент не обязательный.
И последнее - описание.
Второй параметр разберите сами
text (str) – Text of the message to be sent.
text (str) – Текст отправляемого сообщения.
В итоге, отправлять сообщения надо так:
await app.send_message(chat_id, "text")
await. Если вы новичок - то просто ставьте перед методами await и все, а если вы уже что-то знаете, то объяснять не надо Их фишка в том, что это методы сообщений которые мы получаем из хендлера (параметр
msg). Например, чтобы изменить сообщение, не обязательно писатьapp.edit-бла-бла-бла, а можно просто msg.edit(). В него просто передаем строку и готово!
Теперь вспоминаем все что учили и соберём знания вместе. Сделаем так, чтобы при написании команды .start сообщение изменялось на Python Pyrogram!
from pyrogram import Client, filters
app = Client("UserBot", 123, "abc")
@app.on_message(filters.command(["start"], prefixes=".") & filters.me)
async def start(_, msg):
await msg.edit("Python Pyrogram!")
app.run()
Сегодня мы научились работать с документацией, и научились изменять сообщения. А следующем посте научимся получать из сообщения данные - его текст, отправитель, итп. Так что
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2👨💻2🤯1
https://t.me/pythonhub001/s/1
Хотите больше сторисов? Голосуйте за наш канал:
t.me/pythonhub001?boost
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⁉️ Как выгрузить историю чата телеграм в HTML?
⁉️ А потом еще и спарсить на Python?
☺️ Комментарии и лайки приветствуются ☺️
https://youtu.be/5z3BreWGmQg
⁉️ А потом еще и спарсить на Python?
☺️ Комментарии и лайки приветствуются ☺️
https://youtu.be/5z3BreWGmQg
YouTube
Парсим чат в TELEGRAM при помощи PYTHON | HTML экспорт + BeautifulSoup
В этом видео мы разберемся, как можно спарсить чат в телеграм, предвартительно экспортировав html документ со всеми сообщениями этого чата. Использовать будем библиотеку bs4 (BeautifulSoup)
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001…
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001…
👍9
Что выдаст код выше?
Anonymous Quiz
26%
[(1, 2), ('a', 'b')]
3%
[('a', 'b'), (1, 2)]
21%
[1, 'a', 2, 'b']
31%
[(1, 'a'), (2, 'b')]
12%
Error
7%
Не знаю
👍4🔥1
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
Как работает zip? То есть функция берёт на вход несколько списков и создаёт из них список (в Python 3 создаётся не list, а специальный zip-объект) кортежей, такой, что первый элемент полученного списка содержит кортеж из первых элементов всех списков-аргументов.
Пример:
s = 'abc'
>>> t = (10, 20, 30)
>>> u = (-5, -10, -15)
>>> list(zip(s,t,u))
[('a', 10, -5), ('b', 20, -10), ('c', 30, -15)
Я думаю, что такой пример будет вполне хорош для описания
Пример:
s = 'abc'
>>> t = (10, 20, 30)
>>> u = (-5, -10, -15)
>>> list(zip(s,t,u))
[('a', 10, -5), ('b', 20, -10), ('c', 30, -15)
Я думаю, что такой пример будет вполне хорош для описания
👍10
str.join(). Это как волшебная палочка, которая соединяет слова, фразы или элементы списка в одну большую строку. Представьте себе, что вы устраиваете вечеринку и хотите объединить всех друзей в круг. str.join() — это как магия, которая собирает всех вместе!# Допустим, у нас есть список слов
words = ["Привет", "мир", "я", "Python"]
# И мы хотим объединить их в предложение
sentence = ' '.join(words)
print(sentence)В результате каждый элемент списка становится частью большой строки, разделенной пробелами или любым другим символом, который мы укажем перед join().
users = ["RimMirK", "Anuke", "compuser"]
result = ', '.join(users)
print(result) # "RimMirK, Anuke, compuser"Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Forwarded from RimMirK
@app.on_message(filters.command(["start"], prefixes="."))
async def start(_, msg):
print(msg)
id, text, from_user, chat reply_to_message(сообщение на которое ответили).@app.on_message(filters.chat([123,456]) & filters.new_chat_members)
async def welcome(_, msg):
new_members = [u.mention for u in msg.new_chat_members]
text = 'Привет, ' + ", ".join(new_members) + "!"
await msg.reply(text, True disable_web_page_preview=True)
[123,456])И тут начинается самое то, что нас интересует
mention - имя с ссылкой. Мы научились доставать данные из сообщения и вспомнили фильтры с обработчиками.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1🤯1
Что вы хотите видеть в сторисах на этом канале? (можно выбрать несколько вариантов)
Anonymous Poll
44%
Уведомления о новых роликах на YouTube
25%
Уведомления о викторинах
25%
Уведомления о новых постах
72%
Разные новости про python
3%
Свой вариант в коменты
Что выдаст код выше?
Anonymous Quiz
32%
[1, 2, 3, 4, 5, 6]
26%
[1, 2], [3], [4, 5, 6]
16%
21
1%
3
5%
1, 2, 3, 4, 5, 6
12%
Error
7%
Не знаю
👍5😱2
Вечер пятницы! Наступают выходные!
Это значит, что на канале вышло новое видео 📹
Особенно полезно будет тем, кто пилит игрушки на Python (Pygame) 🎲🎮
p.s. случайно проспал выход видоса
(лайк,если можешь тоже отрубиться вечером 😴)
https://youtu.be/eR0KnH2Zxaw
Это значит, что на канале вышло новое видео 📹
Особенно полезно будет тем, кто пилит игрушки на Python (Pygame) 🎲🎮
p.s. случайно проспал выход видоса
(лайк,если можешь тоже отрубиться вечером 😴)
https://youtu.be/eR0KnH2Zxaw
YouTube
Как СОЗДАВАТЬ ИГРЫ на PYTHON? | ОСНОВЫ PYGAME | Добавление NPC, группы, движение ботов
В этом видео мы продолжим делать нашу игру на Pygame. Добавим ботов (NPC), которые будут передвигаться. Делать это будем при помощи группы.
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001 🖇
👨💻 И вступай в чат 👨💻
🖇 https://t.me/pythonhub_chat…
👨💻 Подписывайся на наш телеграм канал! 👨💻
🖇 https://t.me/pythonhub001 🖇
👨💻 И вступай в чат 👨💻
🖇 https://t.me/pythonhub_chat…
👍9😁1😴1
Python Hub - сборище Питонистов
Photo
Разбор 👨💻
Мы привыкли использовать функцию sum() для подсчета суммы элементов в списке.
Но тут немного другая история.
Как видно из кейса, мы передаем в sum два аргумента. Первый - это список со списками. А второй - это список, в который мы все будем собирать.
То есть, если бы наш второй аргумент был НЕ пустым списком, а имел в себе какие-то элементы, то наш финальный результативный список начинался бы как раз с этих элементов.
Но тут немного другая история.
Как видно из кейса, мы передаем в sum два аргумента. Первый - это список со списками. А второй - это список, в который мы все будем собирать.
То есть, если бы наш второй аргумент был НЕ пустым списком, а имел в себе какие-то элементы, то наш финальный результативный список начинался бы как раз с этих элементов.
👍5
‼️Создать базу данных SQLite через Python‼️
В Python для работы с SQLite мы будем использовать модуль sqlite3, который входит в стандартную библиотеку Python. Начнем с импорта модуля и создания соединения с базой данных:
После создания соединения мы можем создать таблицы в нашей базе данных. Вот пример создания таблицы "users":
Вставка данных в базу данных
После создания таблицы мы можем добавить данные в базу данных. Для этого мы можем использовать метод
В Python для работы с SQLite мы будем использовать модуль sqlite3, который входит в стандартную библиотеку Python. Начнем с импорта модуля и создания соединения с базой данных:
import sqlite3
# Создание соединения с базой данных
conn = sqlite3.connect('mydatabase.db')
После создания соединения мы можем создать таблицы в нашей базе данных. Вот пример создания таблицы "users":
# Создание таблицы "users"
conn.execute('''CREATE TABLE users
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL);''')
Вставка данных в базу данных
После создания таблицы мы можем добавить данные в базу данных. Для этого мы можем использовать метод
execute() и executemany() для вставки одной или нескольких строк данных соответственно. Вот пример вставки данных в таблицу "users":# Вставка данных в таблицу "users"
conn.execute("INSERT INTO users (name, age) VALUES ('John Doe', 25)")
conn.execute("INSERT INTO users (name, age) VALUES ('Jane Smith', 30)")
conn.executemany("INSERT INTO users (name, age) VALUES (?, ?)", [('Alice Johnson', 35), ('Bob Brown', 40)])
👍6