А это новая версия бота, который скачивает видео с Ютуба. Чтобы этот код заработал, нужно сделать всё тоже самое, что и раньше (прочитайте этот пост - https://t.iss.one/pythonproga/274).
А теперь давайте я объясню, что изменилось.
1. Теперь вместе с видео будет скачиваться и звук (но в отдельном файле).
2. Если раньше я сохранял id загруженных файлов в гугл диск в список, и через 10 минут просто удалял файлы по id из этого списка, то теперь я получаю список загруженных файлов, и проверяю дату их создания.
3. Если был плохой интернет, то поднимались ошибки по типу TimeoutError или Connection Error, и код их просто не обрабатывал. Сейчас я это исправил.
И ещё в старой версии было куча багов (и скорее всего ни есть и в этой)
А теперь давайте я объясню, что изменилось.
1. Теперь вместе с видео будет скачиваться и звук (но в отдельном файле).
2. Если раньше я сохранял id загруженных файлов в гугл диск в список, и через 10 минут просто удалял файлы по id из этого списка, то теперь я получаю список загруженных файлов, и проверяю дату их создания.
3. Если был плохой интернет, то поднимались ошибки по типу TimeoutError или Connection Error, и код их просто не обрабатывал. Сейчас я это исправил.
И ещё в старой версии было куча багов (и скорее всего ни есть и в этой)
👍79
А это третья версия Дайвинчика, и давайте я расскажу, почему я её выпустил.
Две предыдущие версии в принципе работали, но только если пользователей было меньше 50-60.
А проблема заключалась в том, что для каждого пользователя создавался отдельный поток, и в нём проверялось лайкнул ли кто-то пользователя, или нет. И если было слишком много потоков, то появлялась ошибка, которая говорила о том, что невозможно создать ещё один поток.
Теперь я изменил систему лайков, и все лайки стали проверятся в одном потоке для всех пользователей.
Внимание! Бот будет работать только с версией python 3.9!
Две предыдущие версии в принципе работали, но только если пользователей было меньше 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 (точно не помню).
Чтобы этот код заработал необходимо кроме импортированных библиотек, скачать ещё и библиотеку 'lxml'.
Затем необходимо создать файл 'queries.txt' и в нём писать каждый запрос на разной строчке. Пример:
машина
гайка
болт
самолёт
Дальше необходимо скачать Firefox и geckodriver.exe (драйвер для управления браузером Firefox). Ну или же вы можете изменить код и использовать любой другой браузер.
И последний шаг. В начале кода есть две константы - TOKEN и ID. В TOKEN вам необходимо записать токен вашего телеграмм бота (если его нет, то создайте), а в ID ваш message.from_user.id, ну либо message.chat.id (точно не помню).
👍10
Всем привет! Сегодня я написал код, который мониторит определённый телеграмм канал, и если на нём появится новый пост, то код автоматически его скопирует и выложит на вашем телеграмм канале. Но чтобы код заработал сначала нужно скачать следующие библиотеки:
tgcrypto
pyrogram
Затем заходим сюда, указываем свой номер телефона и переходим по ссылке API development tools. Там мы создаём web приложение. Теперь берём App api_id и App api_hash, и указываем их в коде в константах API_ID и API_HASH.
Теперь нам нужно узнать id телеграмм канала, который код будет мониторить. Сначала подписываемся на этот канал, а затем пересылаем любой пост из этого канала этому боту: @getmyid_bot. Он вам ответ сообщением, в котором будет пунктик Forwarded from chat. И тот ID который в этом пункте указан мы сохраняем в константу CHANNEL_ID. Затем проделываем тоже самое с нашим каналом, и ID указываем уже в константе YOUR_CHANNEL_ID.
Поздравляю! Теперь вы можете запустить код!
tgcrypto
pyrogram
Затем заходим сюда, указываем свой номер телефона и переходим по ссылке API development tools. Там мы создаём web приложение. Теперь берём App api_id и App api_hash, и указываем их в коде в константах API_ID и API_HASH.
Теперь нам нужно узнать id телеграмм канала, который код будет мониторить. Сначала подписываемся на этот канал, а затем пересылаем любой пост из этого канала этому боту: @getmyid_bot. Он вам ответ сообщением, в котором будет пунктик Forwarded from chat. И тот ID который в этом пункте указан мы сохраняем в константу CHANNEL_ID. Затем проделываем тоже самое с нашим каналом, и ID указываем уже в константе YOUR_CHANNEL_ID.
Поздравляю! Теперь вы можете запустить код!
😱12👍6❤5🤔4🔥3
Спустя долгое время я публикую пост. И это спамер для любого мессенджера. Его написал бы каждый из вас за пару минут, но у меня нет идей получше. Текст, которым он будет спамить нужно указать в переменной text. Затем нужно поставить курсор в строку ввода в мессенджере и нажать Ctrl+Space. Чтобы остановить спамер нужно нажать и удерживать Ctrl+Alt. И ещё для нужно будет установить библиотеку keyboard
❤22👍15🤩5🔥2😱2
А это таймер, написанный на tkinter, и логично что для его запуска вам придётся скачать эту библиотеку.
Когда вы запустите его, в первом окошке вам нужно будет указать минуты, а во втором секунды. Когда время истечёт, окошко просто исчезнет, но в 18 строчке, после комментария можно написать код, который будет выполняться по истечении времени.
Когда вы запустите его, в первом окошке вам нужно будет указать минуты, а во втором секунды. Когда время истечёт, окошко просто исчезнет, но в 18 строчке, после комментария можно написать код, который будет выполняться по истечении времени.
👍14❤3👏2
Сетевой Вестник — @netpost, следим за IT-повесточкой и наблюдаем сбои по странам СНГ.
Да и не только новости, но и полезные мануалы, авторская аналитика и оперативный контент из подземелья самого Telegram.
Ссылочка ниже: ⬇️
t.iss.one/netpost
Да и не только новости, но и полезные мануалы, авторская аналитика и оперативный контент из подземелья самого Telegram.
Ссылочка ниже: ⬇️
t.iss.one/netpost
👍5
Научись кодить правильно!
Существуют платные курсы и шпаргалки от SkillBox, GeekBrains и других.. Но зачем они нужны, если все самые свежие шпоры слили в Code Guru! Не упусти возможность, чтобы научиться писать красиво!
https://t.iss.one/+WI23FnNK-JdjZTIy
Твой помощник - Code Guru
Существуют платные курсы и шпаргалки от SkillBox, GeekBrains и других.. Но зачем они нужны, если все самые свежие шпоры слили в Code Guru! Не упусти возможность, чтобы научиться писать красиво!
https://t.iss.one/+WI23FnNK-JdjZTIy
Твой помощник - Code Guru
👍10👎2😁1
Этот код тоже позволяет общаться двум пользователям друг с другом прямо через бот. Админ будет отвечать через консоль на сервере, на котором запущен этот код. А это значит, что ID админов указывать не нужно. Единственое, нужно будет указать токен от бота в 13 строчке.
❤14👍5
Класс — в объектно-ориентированном программировании, модель для создания объектов определённого типа, описывающая их структуру (набор полей и их начальное состояние) и определяющая алгоритмы (функции или методы) для работы с этими объектами.
В Python класс объявляется с помощью ключевого слова class. Вот пример самого простого класса:
class Python:
def __init__(self, value):
self.value = value
def get_value(self):
return self.value
Базовые принципы ООП:
Абстракция — отделение концепции от ее экземпляра;
Полиморфизм — реализация задач одной и той же идеи разными способами;
Наследование — способность объекта или класса базироваться на другом объекте или классе. Это главный механизм для повторного использования кода. Наследственное отношение классов четко определяет их иерархию;
Инкапсуляция — размещение одного объекта или класса внутри другого для разграничения доступа к ним.
В Python класс объявляется с помощью ключевого слова class. Вот пример самого простого класса:
class Python:
def __init__(self, value):
self.value = value
def get_value(self):
return self.value
Базовые принципы ООП:
Абстракция — отделение концепции от ее экземпляра;
Полиморфизм — реализация задач одной и той же идеи разными способами;
Наследование — способность объекта или класса базироваться на другом объекте или классе. Это главный механизм для повторного использования кода. Наследственное отношение классов четко определяет их иерархию;
Инкапсуляция — размещение одного объекта или класса внутри другого для разграничения доступа к ним.
❤21👍2
Магические методы в Python:Создание и удаление объектов
__new__(cls[, ...]) — метод создания типа класса.
__init__(self[, ...]) — конструктор класса. Используется при определении объектов.
__del__(self) — деструктор класса. Вызывается автоматически сборщиком мусора, практически никогда не используется. Вызывается непосредственно перед удалением из памяти экземпляра класса.
Общие свойства объектов
__repr__(self) — информационная строка об объекте. Выводится при вызове функции repr(...) или в момент отладки.
__str__(self) — вызывается при вызове функции str(...), print(...), возвращает строковый объект.
__bytes__(self) — аналогично str(self), только возвращается набор байт.
__format__(self, format_spec) — вызывается при вызове функции format(...) и используется для форматировании строки с использованием строковых литералов.
Методы сравнения объектов между собой
__lt__(self, other) — определяет поведение оператора сравнения «меньше», <.
__le__(self, other) — определяет поведение оператора сравнения «меньше или равно», <=.
__eq__(self, other) — определяет поведение оператора «равенства», ==.
__ne__(self, other) — определяет поведение оператора «неравенства», !=.
__gt__(self, other) — определяет поведение оператора сравнения «больше», >.
__ge__(self, other) — определяет поведение оператора сравнения «больше или равно», >=.
__hash__(self) — вызывается функцией hash(...) и используется, чтобы доказать его уникальность. Например, чтобы добавить объект в set, frozenset, или использовать в качестве ключа в словаре dict.
__bool__(self) — вызывается функцией bool(...) и возвращает True или False в соответствии с реализацией. Если данный метод не реализован в объекте, то при вызове функции bool(...) будет вызываться метод len
Доступ к атрибутам объекта
__getattribute__(self, item) — вызывается при обращении к атрибуту объекта через x.y, где x — объект, а y — атрибут.
__getattr__(self, item) - вызывается если в методе getattribute поднята ошибка AttributeError
__setattr__(self, key, value) — вызывается при обращении к атрибуту объекта с последующим определением значения переданного атрибута. Например: x.y = 1, где x — объект, y — атрибут, а 1 — значение атрибута.
__delattr__(self, item) — вызывается при ручном удалении атрибута у объекта с помощью del x.y, где x — объект, а y — атрибут.
__dir__(self) — вызывается методом dir(...) и выводит список доступных атрибутов объекта.
Создание последовательностей
__len__(self) — вызывается методом len(...) и возвращает количество элементов в последовательности.
__getitem__(self, key) — вызывается при обращении к элементу в последовательности по его ключу (индексу) в таком синтаксисе - x['key'], где x - экземпляр класса.
__setitem__(self, key, value) — вызывается при присваивании какого-либо значения элементу в последовательности в таком синтаксисе - x['key'] = value, где x - экземпляр класса.
__delitem__(self, key) — вызывается при удалении значения в последовательности по его индексу (ключу) с помощью синтаксиса ключевого слова del в таком синтаксисе - вуд x['key'], где x - экземпляр класса.
__missing__(self, key) — вызывается в случаях, когда значения в последовательности не существует.
__iter__(self) — вызывается методом iter(...) и возвращает итератор последовательности, например, для использования объекта в цикле.
__reversed__(self) — вызывается методом reversed(...) и аналогично методу iter возвращает тот же итератор, только в обратном порядке.
__contains__(self, item) — вызывается при проверке принадлежности элемента к последовательности с помощью in или not in.
Унарные операторы
__neg__(self) — определяет поведение для отрицания (-a)
__pos__(self) — определяет поведение для унарного плюса (+a)
__abs__(self) — определяет поведение для встроенной функции abs(...)
__invert__(self) — определяет поведение для инвертирования оператором ~
Обычные арифметические операторы
__add__(self, other) — сложение, оператор +
__sub__(self, other) — вычитание, оператор -
__mul__(self, other) — умножение, оператор *
❤13👍4🥰1
__matmul__(self, other) — умножение матриц, оператор @
__truediv__(self, other) — деление, оператор /
__floordiv__(self, other) — целочисленное деление, оператор //
__mod__(self, other) — остаток от деления, оператор %
__divmod__(self, other) — деление с остатком, определяет поведение для встроенной функции divmod(...)
__pow__(self, other[, modulo]) — возведение в степень, оператор **
__lshift__(self, other) — двоичный сдвиг влево, оператор <<
__rshift__(self, other) — двоичный сдвиг вправо, оператор >>
__and__(self, other) — двоичное И, оператор &
__xor__(self, other) — исключающее ИЛИ, оператор ^
__or__(self, other) — двоичное ИЛИ, оператор |
Преобразования типов
__complex__(self) — преобразование типа в комплексное число
__int__(self) — преобразование типа к int
__float__(self) — преобразование типа к float
__index__(self) — преобразование типа к int, когда объект используется в срезах (выражения вида [start:stop:step])
__round__(self[, ndigits]) — округление числа с помощью функции round(...)
__trunc__(self) — вызывается методом math.trunc(...)
__floor__(self) — вызывается методом math.floor(...)
__ceil__(self) — вызывается методом math.ceil(...)
Вызываемые объекты
__call__(self[, args...]) — позволяет любому экземпляру класса вести себя как обычная функция. Например: x(1, 2), где x - экземпляр класса.
__await__(self) — возвращает итератор, превращая класс в корутину, результат выполнения которой можно получить с помощью await. Подробнее об этом можно узнать в PEP 492.
Контекстные менеджеры
__enter__(self) — определяет начало блока контекстного менеджера, вызванного с помощью with
__exit__(self, exc_type, exc_value, traceback) — определяет конец блока контекстного менеджера.
__aenter__(self) — аналогично enter, только функция возвращает корутину (результат которой можно получить с помощью await)
__aexit__(self, exc_type, exc_value, traceback) — аналогично exit, только функция возвращает корутину (результат которой можно получить с помощью await)
__truediv__(self, other) — деление, оператор /
__floordiv__(self, other) — целочисленное деление, оператор //
__mod__(self, other) — остаток от деления, оператор %
__divmod__(self, other) — деление с остатком, определяет поведение для встроенной функции divmod(...)
__pow__(self, other[, modulo]) — возведение в степень, оператор **
__lshift__(self, other) — двоичный сдвиг влево, оператор <<
__rshift__(self, other) — двоичный сдвиг вправо, оператор >>
__and__(self, other) — двоичное И, оператор &
__xor__(self, other) — исключающее ИЛИ, оператор ^
__or__(self, other) — двоичное ИЛИ, оператор |
Преобразования типов
__complex__(self) — преобразование типа в комплексное число
__int__(self) — преобразование типа к int
__float__(self) — преобразование типа к float
__index__(self) — преобразование типа к int, когда объект используется в срезах (выражения вида [start:stop:step])
__round__(self[, ndigits]) — округление числа с помощью функции round(...)
__trunc__(self) — вызывается методом math.trunc(...)
__floor__(self) — вызывается методом math.floor(...)
__ceil__(self) — вызывается методом math.ceil(...)
Вызываемые объекты
__call__(self[, args...]) — позволяет любому экземпляру класса вести себя как обычная функция. Например: x(1, 2), где x - экземпляр класса.
__await__(self) — возвращает итератор, превращая класс в корутину, результат выполнения которой можно получить с помощью await. Подробнее об этом можно узнать в PEP 492.
Контекстные менеджеры
__enter__(self) — определяет начало блока контекстного менеджера, вызванного с помощью with
__exit__(self, exc_type, exc_value, traceback) — определяет конец блока контекстного менеджера.
__aenter__(self) — аналогично enter, только функция возвращает корутину (результат которой можно получить с помощью await)
__aexit__(self, exc_type, exc_value, traceback) — аналогично exit, только функция возвращает корутину (результат которой можно получить с помощью await)
❤20👍5
Устроим middle python-программистом ещё до того, как вы закончите обучение
Разработчики-преподаватели из Devman решили, что у вас нет времени, чтобы долго учиться и ждать, когда ваше образование окупится! Поэтому разработали программу, которая гарантирует качественный трек сразу до мидла, со стажировкой и трудоустройством еще во время обучения.
Курс стартует 9 января. Первую неделю курса можно попробовать бесплатно, а после решить — продолжать ли платное обучение по треку.
На пробной неделе:
▫️Новички сделают сервис, который показывает погоду в разных городах.
▫️Более опытные успеют написать и собственный сервис по сокращению ссылок.
▫️Джуны создадут своего чат бота или сделают собственный сайт с афишей мероприятий.
После пробной недели вы получите фидбек от ментора и узнаете, какие навыки вам нужно подтянуть.
Чтобы записаться на пробную неделю переходите в бота → bit.ly/3WgrnGb
Реклама. ООО Девман 2VtzqxFDDMm
Разработчики-преподаватели из Devman решили, что у вас нет времени, чтобы долго учиться и ждать, когда ваше образование окупится! Поэтому разработали программу, которая гарантирует качественный трек сразу до мидла, со стажировкой и трудоустройством еще во время обучения.
Курс стартует 9 января. Первую неделю курса можно попробовать бесплатно, а после решить — продолжать ли платное обучение по треку.
На пробной неделе:
▫️Новички сделают сервис, который показывает погоду в разных городах.
▫️Более опытные успеют написать и собственный сервис по сокращению ссылок.
▫️Джуны создадут своего чат бота или сделают собственный сайт с афишей мероприятий.
После пробной недели вы получите фидбек от ментора и узнаете, какие навыки вам нужно подтянуть.
Чтобы записаться на пробную неделю переходите в бота → bit.ly/3WgrnGb
Реклама. ООО Девман 2VtzqxFDDMm
👍5😁1
Постарался написать текст по поводу декораторов в Python. Ссылка на текст про декоратор
Telegraph
Что такое декоратор и как он работает
Декоратор это функция, которая принимает в качестве единственного параметра функцию и возвращает функцию. Вот пример самого простого декоратора:
🔥1
Режимы доступа к атрибутам и методам класса в Python - https://telegra.ph/Rezhimy-dostupa-public-protected-private-01-25
Telegraph
Режимы доступа public, protected, private.
Как мы знаем, мы можем создать класс, а затем обращаться к его атрибутам и методам извне. Например: Но давайте теперь рассмотрим этот класс: И теперь при запуске кода мы получим ошибку: Мы же создали атрибут, но почему возникает исключение? Давайте разберемся.…
👍1
Интересные фишки f-строк в Python - https://telegra.ph/Interesnye-fishki-f-strok-v-Python-01-28
Telegraph
Интересные фишки f-строк в Python
Всем доброго времени суток! Может вы не знали, но f-строки в Python позволяют не только вставить в строку значение переменной, но ещё и отформатировать это значение. Например: С Python 3.8 f-строки позволяют по хитрому вывести и имя, и значение переменной:…
👍5❤1🔥1😁1