Progress
5 subscribers
5 photos
4 links
Download Telegram
Channel created
Указываю все создание мною проекты.
Progress pinned «Указываю все создание мною проекты.»
1. Самый не удачный проект, но один из самых первых.

Смысл: Программа для помощи учителям с раздачей тестов. Данная программа решает сразу несколько проблем, таких как: экология бумаги, уменьшения количеств списывания(в будущем) и приучение цифровых технологий детям.

Прогресс: абсолютно не доделан.

В данной программе задействовано:
python(ЯП)
Sqlite(БД)
PyQt5(Интерфейс)
matplotlib(Диаграммы)

Сейчас не имею смысла его доделывать, сделан для галочки начала проекта. Сейчас представляет огромный, совершенно ужасный, но рабочий код.
GitHub
👏2
2.

Смысл: Из голосового сообщения делать текст

Прогресс: 100%

В данной программе задействовано:
Python(ЯП)
FFmpeg(Библеотека для работы с мультимедийными файлами (аудио и видео))
aiogram3(Реализация бота)
speech_recognition(Работа с расшифровкой аудио)

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

Код ниже функция принимающая значение айди пользователя. Функция перебирает всю базу данных пока не найдет человека в определенном радиусе.
В коде использовался метод для вычисление точного расстояния - формула гаверсинусов (Haversine), что достаточно точно определять расстояние на сферических объектах, таких как земля.

Код был написан мною частично, а именно система определения расстояния написана ИИ, за проект такое не считаю.

async def find_nearby_users(target_user_id):
radius_km = 15 #Радиус поиска в км.
earth_radius_km = 6371

async with connect("database.db") as db:
async with db.cursor() as cursor:
await cursor.execute("SELECT latitude, longitude FROM Users WHERE telegram_id = ?", (target_user_id,))
target_user = await cursor.fetchone()
if target_user is None:
return []
target_lat, target_lon = target_user

delta_deg = radius_km / earth_radius_km * (180 / math.pi)
min_lat, max_lat = target_lat - delta_deg, target_lat + delta_deg
min_lon, max_lon = target_lon - delta_deg / math.cos(math.radians(target_lat)), target_lon + delta_deg / math.cos(math.radians(target_lat))

await cursor.execute( #Данную таблицу можете подстравить под себя, но учьтите нужные переменные на выходе!
"""
SELECT telegram_id, latitude, longitude FROM Users
WHERE latitude BETWEEN ? AND ?
AND longitude BETWEEN ? AND ?
""", (min_lat, max_lat, min_lon, max_lon)
)
users = await cursor.fetchall()
if not users:
return []
users = np.array(users)
telegram_ids = users[:, 0].astype(int)
latitudes = users[:, 1].astype(np.float64)
longitudes = users[:, 2].astype(np.float64)

dlat = np.radians(latitudes - target_lat)
dlon = np.radians(longitudes - target_lon)
a = np.sin(dlat / 2) ** 2 + np.cos(np.radians(target_lat)) * np.cos(np.radians(latitudes)) * np.sin(dlon / 2) ** 2
c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1 - a))
distances_km = earth_radius_km * c
distances_m = distances_km * 1000 # Метры, если понадобится.

nearby_indices = np.where(distances_km <= radius_km)[0]
nearby_users = [(int(telegram_ids[i])) for i in nearby_indices if int(telegram_ids[i]) != target_user_id]

for telegram_id in nearby_users:
print(f"Пользователь {telegram_id} находится рядом с ID: {target_user_id}.")
return nearby_users #Возвращает список telegram_id (айди пользователей рядом)

Функция асинхронная!
👍2🤡1
Не проект.

Для многих кто видел мой профиль, а именно публикации, видел очень ровные картинки. Вопрос, как добиться такого же?
Все очень просто, программа разделяет изображение на 9 частей(Сетка 3x3) и добавляет к ним черные полосы, потому что телеграм сжимает изображения для его показа.

Этот код я не стал улучшать(Честно говоря даже не знаю под чем он был написан)
Для его работы требуется точное изображение формата 1024 x 1536.
from PIL import Image
import os

def split(image_path, rows=3, cols=3, output_folder='output'):
os.makedirs(output_folder, exist_ok=True)

story_width = 1080
story_height = 1920

img = Image.open(image_path)
img_width, img_height = img.size

crop_width = img_width // cols
crop_height = img_height // rows

part_number = 1
output_paths = []

for row in range(rows):
for col in range(cols):
left = col * crop_width
upper = row * crop_height
right = left + crop_width
lower = upper + crop_height
cropped = img.crop((left, upper, right, lower))

cropped_ratio = cropped.width / cropped.height
inner_width = story_width
inner_height = int(story_width / cropped_ratio * 0.85)

resized = cropped.resize((inner_width, inner_height), Image.Resampling.LANCZOS)

frame = Image.new("RGB", (story_width, story_height), (0, 0, 0))
top = (story_height - inner_height) // 2
frame.paste(resized, (0, top))

filename = os.path.join(output_folder, f"story_{part_number:02}.jpg")
frame.save(filename)
output_paths.append(filename)
part_number += 1

return output_paths

split('photo.jpg')
👍1
Открыл 6 тип задания на ОГЭ по информатике, очень удивился какой сложный код дают на изучение людям как решение задачи.
Вот то что написал я:
#Дефолтный перебор по каждому значению из списка
listt = [(1, 2), (11, 2), (1, 12), (11, 12), (-11, -12), (-11, 12), (-12, 11), (10, 10), (10, 5)] #Пример задачи
kol = 0
for s, t in listt:
if s > 10 or t > 10:
kol +=1
print(kol)

Вот что дает сайт РЕШУ ОГЭ как решение данной задачи:

def f(s, t):
if s > 10 or t > 10:
return 1
else:
return 0
a = ((1, 2), (11, 2), (1, 12), (11, 12), (-11, -12), (-11, 12), (-12, 11), (10, 10), (10, 5))
kol = 0
for i in range(9):
kol += f(a[i][0], a[i][1])
print(kol)

Выводы сделайте сами.
👍1👎1
не знаю насколько можно это выкладывать, но все же
сделал мини прогу для скачивания с сафта ФИПИ заданий(потому что его закрывают)
Идете на сайт, ищите ваш раздел, копируете ссылку, вставляете в 21 строку(там где комментарий), запускаете и кайфуйте
Библиотеки:
selenium
requests
bs4
os
urllib3
Код: https://github.com/Nescalz/fipi-copy/tree/main

Писал на максимально скорую руку