Рубрики
Без рубрики

Как построить бот и автоматизировать свою повседневную работу

Автор оригинала: Tim Grossmann.

Большинство рабочих мест имеют повторяющиеся задачи, которые вы можете автоматизировать, что освобождает от вашего ценного времени. Это делает автоматизацию ключевым умением приобретать.

Небольшая группа квалифицированных инженеров автоматизации и экспертов домена может быть в состоянии автоматизировать многие из самых утомительных задач целых команд.

В этой статье мы рассмотрим основы автоматизации рабочего процесса, используя Python – мощный и простой для изучения языка программирования. Мы будем использовать Python, чтобы написать простой и полезный маленький сценарий автоматизации, который будет очистить заданную папку и поместить каждый файл в его в соответствии с папкой.

Наша цель не будет писать идеальный код или создавать идеальные архитектуры в начале. Мы также не будем строить ничего «незаконного». Вместо этого мы посмотрим, как создать сценарий, который автоматически очищает заданную папку и все его файлы.

  1. Области автоматизации и откуда начать
    • Простая автоматизация
    • Общественная автоматизация API
    • API обратная инжиниринг
  2. Этические соображения автоматизации
  3. Создание скрипта очистки каталога
  4. Полное руководство по созданию бота и автоматизации вашей повседневной работы

Области автоматизации и откуда начать

Начнем с определения того, какие автоматики есть.

Искусство автоматизации относится к большинству секторов. Для начала он помогает с задачами, такими как извлечение адресов электронной почты от куча документов, чтобы вы могли сделать электронный взрыв. Или более сложные подходы, такие как оптимизация рабочих процессов и процессов внутри крупных корпораций.

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

Простые автоматики

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

Общественные API Автоматические автоматики

Public API Автоматизация – наиболее распространенная форма автоматизации, поскольку мы можем получить доступ к большинству функциональных возможностей, используя HTTP-запросы на apis stepays. Например, если вы хотите автоматизировать полив вашего самодомального самых смарт-сада дома.

Для этого вы хотите проверить погоду в текущем дне, чтобы увидеть, нужно ли вам воду или если есть дождь входящий.

API обратная инжиниринг

API Обратная инженерная автоматизация автоматизации более распространена в реальных ботах и раздел «Гвоздер бота» графика в разделе «этические соображения» ниже.

Образование Engineering API, мы понимаем поток пользователей приложений. Одним из примеров может быть войти в онлайн-игра в браузере.

Понимая процесс входа в систему и аутентификацию, мы можем дублировать это поведение с нашим собственным сценарием. Затем мы можем создать наш собственный интерфейс для работы с приложением, даже если они не предоставляют его сами.

Какой бы подход вы нацеливаетесь, всегда считаете ли он законным или нет.

Вы не хотите испытывать себя неприятности, ты? ?

Этические соображения

Какой-то парень на Github когда-то связался со мной и сказал мне это:

Это застрял со мной и заставил меня под сомнение инструмент, который я создал для именно этой цели.

Тот факт, что эти взаимодействия и взаимодействие могут быть автоматизированы и «подделаны» все больше и больше приводит к искаженной и сломанной социальной медиа-системе.

Люди, которые производят ценные и хорошие контента, невидимы для других пользователей и рекламных компаний, если они не используют боты и другие системы взаимодействия. Мой друг придумал следующую связь с «девятью кругов в аду Данте», где с каждым шагом ближе, чтобы стать социальным влиянием, вы становитесь меньше и менее осознаем, насколько сломана вся эта система.

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

Уровень 1: Limbo – Если вы не ботитесь вообще Уровень 2: Флирт – Когда вы вручную понравились и следуете за так много людей, как вы можете заставить их следовать за вами/как ваши сообщения Уровень 3: заговор – Когда вы присоединяетесь к группе телеграммы, чтобы понравиться и комментировать 10 фотографий, чтобы следующие 10 человек понравились и комментируют на вашу фотографию Уровень 4: Неверность – Когда вы используете недорогое виртуальный помощник, чтобы понравиться и следовать от вашего имени Уровень 5: Похоть – Когда вы используете бот, чтобы дать симпатии, и не получайте никаких любит обратно в ответ (но вы не платите за это – например, хромированное расширение) Уровень 6: Промирение – Когда вы используете бот, чтобы дать 50+ Likes, чтобы получить 50+ лайков, но вы не платите за это – например, Chrome Extension Уровень 7: Avarice или Extreme Greed – Когда вы используете бот, чтобы понравиться/следовать/комментировать между 200-700 фотографиями, игнорируя шанс получить запрещенную Уровень 8: проституция – Когда вы платите неизвестную 3-я партийную службу для участия в автоматизированном взаимном людям/следует для вас, но они используют вашу учетную запись, чтобы понравиться/следовать обратно Уровень 9: Мошенничество/Ересь – Когда вы покупаете подписчики и любит и пытаетесь продать себя брендами как влиятельный

Уровень ботинга на социальных сетях настолько распространен, что Если вы не боте, вы будете застрять на уровне 1, Limbo без употребления роста и низкой взаимодействия относительно ваших сверстников.

В экономической теории это известно как Дилемма заключенного и игра с нулевой суммой Отказ Если я не буду бот, а ты бот, ты победишь. Если вы не боте и я боте, я выиграю. Если никто не ботов, все выигрывают. Но поскольку нет стимула для всех не бота, все боты, поэтому никто не побеждает.

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

Создание скрипта очистки каталога

Теперь мы хотим посмотреть на довольно простой скрипт. Он автоматически очищает данный каталог, переместив эти файлы в папки в соответствии с расширением файла.

Так что все, что мы хотим сделать, это это:

Настройка аргумента

Поскольку мы работаем с функциональными возможностями операционной системы, как движущиеся файлы, нам нужно импортировать ОС библиотека. В дополнение к этому, мы хотим дать пользователю некоторую контроль над той папкой. Мы будем использовать argparse Библиотека для этого.

import os
import argparse

После импорта двух библиотек давайте сначала настройте парсер аргумента. Обязательно дайте описание и текст справки каждому добавленному аргументу, чтобы дать ценную помощь пользователю, когда они вводят --help Отказ

Наш аргумент будет назван - Пути Отказ Двойные тире перед именем сообщите библиотеку, что это необязательный аргумент. По умолчанию мы хотим использовать текущий каталог, поэтому установите значение по умолчанию "." Отказ

parser = argparse.ArgumentParser(
    description="Clean up directory and put files into according folders."
)

parser.add_argument(
    "--path",
    type=str,
    default=".",
    help="Directory path of the to be cleaned directory",
)

# parse the arguments given by the user and extract the path
args = parser.parse_args()
path = args.path

print(f"Cleaning up directory {path}")

Это уже заканчивает разбор аргумента – это довольно простое и читаемое, верно?

Давайте выполним наш скрипт и проверьте на наличие ошибок.

python directory_clean.py --path ./test 

=> Cleaning up directory ./test

После выполнения мы можем увидеть имя каталога, напечатанное на консоль, идеально. Давайте теперь будем использовать ОС Библиотека, чтобы получить файлы данного пути.

Получение списка файлов из папки

Используя OS.Listdir (путь) Способ и предоставление ему действительного пути, мы получаем список всех файлов и папок внутри этого каталога.

После перечисления всех элементов в папке мы хотим дифференцировать файлы и папки, поскольку мы не хотим очистить папки, только файлы.

В этом случае мы используем понимание списка Python, чтобы повторить все элементы и поместить их в новые списки, если они соответствуют данным требованию быть файлом или папкой.

# get all files from given directory
dir_content = os.listdir(path)

# create a relative path from the path to the file and the document name
path_dir_content = [os.path.join(path, doc) for doc in dir_content]

# filter our directory content into a documents and folders list
docs = [doc for doc in path_dir_content if os.path.isfile(doc)]
folders = [folder for folder in path_dir_content if os.path.isdir(folder)]

# counter to keep track of amount of moved files 
# and list of already created folders to avoid multiple creations
moved = 0
created_folders = []

print(f"Cleaning up {len(docs)} of {len(dir_content)} elements.")

Как всегда, давайте убедитесь, что наши пользователи получают отзывы. Так что добавьте оператор печати, которое дает пользователю указание о том, сколько файлов будет перемещено.

python directory_clean.py --path ./test 

=> Cleaning up directory ./test
=> Cleaning up 60 of 60 elements.

После повторного выполнения сценария Python мы можем увидеть, что /test Папка, которую я создал, содержит 60 файлов, которые будут перемещены.

Создание папки для каждого расширения файла

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

ОС Библиотека помогает нам с более приятными функциональными возможностями, такими как расщепление FileType и путь данного документа, извлечение самого пути и название документа.

# go through all files and move them into according folders
for doc in docs:
    # separte name from file extension
    full_doc_path, filetype = os.path.splitext(doc)
    doc_path = os.path.dirname(full_doc_path)
    doc_name = os.path.basename(full_doc_path)

	print(filetype)
    print(full_doc_path)
    print(doc_path)
    print(doc_name)
    
    break

Заявление о перерыве в конце кода выше, гарантирует, что наш терминал не уступает, если наш каталог содержит десятки файлов.

Как только мы установим это, давайте выполним наш скрипт, чтобы увидеть вывод, аналогичный этому:

python directory_clean.py --path ./test 

=> ...
=> .pdf
=> ./test/test17
=> ./test
=> test17

Теперь мы можем видеть, что реализация выше расщепляется от FileType, а затем извлекает части с полного пути.

С тех пор, как сейчас у нас есть FileType, мы можем проверить, существует ли папка с именем этого типа.

Прежде чем мы сделаем это, мы хотим, чтобы убедиться, что пропустить несколько файлов. Если мы используем текущий каталог "." Как путь, нам нужно избегать перемещения сама сценария Python. Простое, если условие заботится об этом.

В дополнение к этому, мы не хотим двигаться Скрытые файлы Итак, давайте также включаем все файлы, которые начинаются с точки. .Ds_store Файл на MacOS является примером скрытого файла.

	# skip this file when it is in the directory
    if doc_name == "directory_clean" or doc_name.startswith('.'):
        continue

    # get the subfolder name and create folder if not exist
    subfolder_path = os.path.join(path, filetype[1:].lower())

    if subfolder_path not in folders:
    	# create the folder

После того, как мы позаботились о сценарии Python и скрытые файлы, теперь мы можем перейти к созданию папок в системе.

В дополнение к нашей проверке, если папка уже была там, когда мы прочитаем содержание каталога, вначале нам нужен способ отслеживать, как мы уже создали. Вот почему мы объявили create_folders = [] список. Это будет служить памятью для отслеживания имен папок.

Создать новую папку, ОС Библиотека предоставляет метод под названием OS.MKDIR (Folder_Path) Это делает путь и создает папку с указанным именем там.

Этот метод может бросить исключение, рассказывая нам, что папка уже существует. Итак, давайте также обязательно поймаем эту ошибку.

if subfolder_path not in folders and subfolder_path not in created_folders:
        try:
            os.mkdir(subfolder_path)
            created_folders.append(subfolder_path)
            print(f"Folder {subfolder_path} created.")
        except FileExistsError as err:
            print(f"Folder already exists at {subfolder_path}... {err}")

После настройки создания папки давайте повторно выполните наш скрипт.

python directory_clean.py --path ./test 

=> ...
=> Folder ./test/pdf created.

При первом запуске выполнения мы можем увидеть список журналов, которые сообщают нам, что папки с заданными типами расширений файлов были созданы.

Перемещение каждого файла в правую подпапку

Последний шаг сейчас – на самом деле переместить файлы в свои новые родительские папки.

Важным, что нужно понять, когда работа с операциями ОС является то, что иногда операции не могут быть отменены. Это, например, случай с удалением. Таким образом, имеет смысл сначала выйти из-за того, что поведение наш скрипт достигнет, если мы его выполним.

Вот почему OS.Rename (...) Метод был прокомментирован здесь.

# get the new folder path and move the file
    new_doc_path = os.path.join(subfolder_path, doc_name) + filetype
    # os.rename(doc, new_doc_path)
    moved += 1
    
    print(f"Moved file {doc} to {new_doc_path}")

После выполнения нашего скрипта и просмотра правильной регистрации мы можем удалить комментарий Hash перед нашим OS.NAME () метод и дать ему последний ход.

# get the new folder path and move the file
    new_doc_path = os.path.join(subfolder_path, doc_name) + filetype
    os.rename(doc, new_doc_path)
    moved += 1

    print(f"Moved file {doc} to {new_doc_path}")

print(f"Renamed {moved} of {len(docs)} files.")
python directory_clean.py --path ./test 

=> ...
=> Moved file ./test/test17.pdf to ./test/pdf/test17.pdf
=> ...
=> Renamed 60 of 60 files.

Это окончательное выполнение теперь будет перемещать все файлы в соответствующие папки, и наш каталог будет хорошо очищен без необходимости в ручных действиях.

На следующем шаге мы могли бы теперь использовать сценарий, который мы создали выше, и, например, запланируйте его для выполнения каждого понедельника, чтобы очистить нашу папку загрузки для получения дополнительной структуры.

Это именно то, что мы создаем как последующее внутри Наше создание ботов и рабочего процесса UDEMY курс .

Полное руководство по созданию бота и автоматизации вашей повседневной работы

Феликс и я построил Онлайн видео курс, чтобы научить вас создавать свои собственные боты На основании того, что мы выучили здание Инсталик и его Триано-бот Отказ На самом деле, он Было даже вынуждено снизить, так как он был слишком эффективен.

Присоединяйтесь к прямо и начните обучить.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь добраться до нас на Twitter или прямо в Раздел обсуждения курса ?