У очень многого количества людей есть дети, которые проводят за компьютером больше половины дня, а то и весь день. Особенно в наше время, нынешнее поколение детей начали получать телефон, телевизор, планшет или компьютер для отвлечения внимания. Лишь бы не орал и не рыдал……
При кормлении ребенка происходит таже песня, на посмотри веселое видео, красочное, которое отвлечет внимание.
Эта привычка начинает переходить из раннего детства в юношеский возраст, различные социальные сети такие как VK, YouTube, Retube, Tik-Tok и многие другие забирают внимание детей, а также большинства взрослых. Помимо не сделанных уроков, не убранной квартиры или дома, мы получаем детей, которые производят прием пищи за телефоном. Пошел в туалет тоже с телефоном.
Ну да ладно…. Столкнулся я с такой временной (надеюсь) трудностью что при дистанционном обучении в соседней вкладке на компьютере открыта вкладка YouTube и, пока не заглядывают в компьютер родители, ребенок смотрит видео попутно пытаясь запомнить, что говорит учитель. Потом же родители зададут вопрос, что же там рассказывали на этих уроках, да еще и домашнее задание выполнить нужно.
Решил я написать приложение на языке программирования Python, которое будет блокировать заданные сайты в определенное время, а после разблокировать их. Поделюсь, может кому пригодиться.
Поехали……
Будем делать все через переадресацию сайтов на определенный адрес, через файл hosts.
Указываем адрес переадресации 127.0.0.1, поле указываем путь к файлу hosts.
redirect = "127.0.0.1"
host_path = "C:\\Windows\\System32\\drivers\\etc\\hosts"
Создаем пустой список для добавления в него сайтов которые нам нужны
site_list = []
Далее нам нужно указать время добавления сайтов, которые мы хотим заблокировать, а после разблокировать. Для этого в самую верхнюю строку мы должны импортировать библиотеку, которая отвечает за время from datetime import datetime as dt.
Добавили, молодцы, указываем часы, минуты и секунды, «заблокировать» и «разблокировать».
now = dt.now()
my_time_1 = now.replace(hour=8, minute=0, second=0, microsecond=0)
my_time_2 = now.replace(hour=10, minute=0, second=0, microsecond=0)
После создадим функцию для запроса у нас «сайтов для блокировки» с обработчиком ошибок. Функция предоставляет ввод от пользователя сайтов через разделитель «запятая». После ввода всех задуманных сайтов нажатие кнопки Enter т.е. пустой ввод говорит о том что мы закончили с вводом и можно отправлять данные в наш список. Рядом с файлом, в котором написан код, мы создаем вручную тектовый файл text.txt
def write_list():
try:
with open("text.txt", 'r+') as file:
content = file.read()
if content == '':
list_input = input("Введите название сайтов через запятую: ").split(",")
file.write(",".join(list_input))
for list in list_input:
site_list.append(list)
else:
for list in content.split(","):
site_list.append(list)
except:
print("Внимание ошибка!!!")
Ну и, собственно, теперь выполнение:
При условии, что «Правда», запускается функция write_list. После сравнивается время, которое заданно и которое сейчас.
while True:
write_list()
if my_time_1 < now < my_time_2:
После открывается наш файлу hosts и вноситься изменения, либо записывается, либо удаляется.
with open(host_path, "r+") as file:
content = file.read()
for website in site_list:
if website in content:
pass
else:
file.write(redirect + " " + website + "\n")
else:
with open(host_path, "r+") as file:
content = file.readlines()
file.seek(0)
for line in content:
if not any(website in line for website in site_list):
file.write(line)
file.truncate()
Программа работает отлично, текстовый файл «text.txt» сохраняет введенные «сайты» и в следующие запуски отдает их нашей программе.
После применения этой программы мой сын начал нормально выполнять уроки, делать легкую уборку в квартире, а также у него появилось время на «покушать»)
Надеюсь, кому - то пригодиться.
Полный код приложения вы можете найти по ссылке
git@github.com:dansemaxtor/blocking-sites.git