Практика на Python 2023. Как сделать блокировщик сайтов с помощью Python

Мы запускаю серию статей Практики на Python в 2023. Будет много кода и много интересных задач.

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

Требование
Требований к установке нет. Вам просто нужен Python, и мы будем использовать только модуль datetime, который уже предустановлен.

Давайте посмотрим на рабочий процесс этого скрипта .

Практика на Python 2023. Как сделать блокировщик сайтов с помощью Python

Код Python
Прежде всего, мы должны импортировать модуль datetime, чтобы получить текущую дату и время.

from datetime import datetime as dt

Мы должны указать путь к файлу хоста и локальный хост и составить список всех веб-сайтов, которые вы хотите заблокировать.

# Get the host path
# I am using Mac and so this is the host path
# If you are using Windows, search on Google "how to get host path" :D
hostpath = "/private/etc/hosts"

# loaclhost (will redirect to this host)
redirect = "127.0.0.1"

websitelist = [
    "www.reddit.com",
    "www.facebook.com",
    "wwww.instagram.com",
    "wwww.youtube.com",
    "wwww.cnn.com",
    "wwww.twitter.com",
    "wwww.buzzfeed.com",
    "wwww.yahoo.com",
    "wwww.tumblr.com",
    "wwww.netflix.com",
]

Назначьте время начала и время окончания времени, которое вы хотите заблокировать

"""
Datetime Format
--------------
The datetime format is Year, Month, Day, Hour, Minute, 
e.g. (2022, 12, 28, 14, 15)
2022 - year
12 - month
28 - day
14 - hour (24 hrs format) (14 hrs = 2 pm)
15 - minutes
"""

blocktime = {
    "start": dt(2022, 12, 28, 17, 15),
    "end": dt(2022, 12, 28, 17, 59)
}

В этом случае я использовал словарь Python для пояснения кода, вы можете использовать список или строку

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

if blocktime["start"] < dt.now() < blocktime["end"]:
    # to know our current mode
    print("Time to focus ...")

    # read the `host` file to check the list
    with open(hostpath, "r+") as file:
        content = file.read()
        for website in websitelist:
            # if your website is not in the `host` file, add the website
            if not website in content:
                with open(hostpath, "a") as writefile:
                    writefile.write(redirect + " " + website + "\n")

Если текущее время свободно от рабочего времени, мы удалим сайты из списка блокировки

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

Давайте запустим код:

Если вы хотите начать блокировку, запустите файл
Если вы свободны от работы и хотите остановиться, запустите файл еще раз (это разблокирует все веб-сайты)

полный код:



from datetime import datetime as dt

"""
Datetime Format
--------------
The datetime format is Year, Month, Day, Hour, Minute, 
e.g. (2022, 12, 28, 14, 15)
2022 - year
12 - month
28 - day
14 - hour (24 hrs format) (14 hrs = 2 pm)
15 - minutes
"""

# Will start to block at 9hrs and finish 5hrs in the evening
blocktime = {
    "start": dt(dt.now().year, dt.now().month, dt.now().day, 9),
    "end": dt(dt.now().year, dt.now().month, dt.now().day, 17)
}


websitelist = [
	"www.reddit.com",
	"www.facebook.com",
	"wwww.instagram.com",
	"wwww.youtube.com",
	"wwww.cnn.com",
	"wwww.twitter.com",
	"wwww.buzzfeed.com",
	"wwww.yahoo.com",
	"wwww.tumblr.com",
	"wwww.netflix.com",
]


# Get the host path
# I am using Mac and so this is the host path
# If you are using Windows, search on Google "how to get host path" :D
hostpath = "/private/etc/hosts"
+1
3
+1
2
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *