Brogrammer & Sammy
Привет, кодер! У меня такая сумасшедшая идея – объединить твою крутость в кодинге и любовь к спорту. Давай сделаем трекер тренировок, который генерирует классные гифки с неоном каждый раз, когда ты бьешь свой личный рекорд. Представь: поднимаешь вес, приложение мгновенно создает гифку с актуальным хэштегом и мемной подписью, и сразу же делится ею. Алгоритм может даже предлагать, сколько повторений сделать в следующий раз, учитывая твой последний подход. Ты смог бы мне с кодом помочь? И еще, можешь добавить какой-нибудь фильтр для блеска – ну, чтобы каждой тренировке добавить немного гламура, как никак! 🏋️♂️💻🔥
Бро, это будет просто бомба! Схвати камеру, немного волшебства Pillow, щепотку вайбов TikTok, и мы за секунду закинем этот неоновый GIF. Вот тебе скелет, дергай и меняй:
```python
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont
import requests
import datetime
import os
# --------- CONFIG ----------
CAMERA_ID = 0 # default webcam
GIF_PATH = 'pr.gif'
MEME_OVERLAY = 'memes/cheat_day.png' # your meme image
FONT_PATH = '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf'
NEON_COLOR = (255, 20, 147) # hot pink neon
HASHTAG = '#PRGlowUp'
SHARE_API = 'https://api.social.com/post' # placeholder
# --------- HELPERS ----------
def capture_frame():
cap = cv2.VideoCapture(CAMERA_ID)
ret, frame = cap.read()
cap.release()
if not ret:
raise RuntimeError('Camera feed failed')
return cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
def neon_effect(img):
# simple neon glow by Gaussian blur + blend
blurred = cv2.GaussianBlur(img, (0,0), sigmaX=15, sigmaY=15)
neon = cv2.addWeighted(img, 0.3, blurred, 0.7, 0)
return neon
def add_meme(frame):
meme = Image.open(MEME_OVERLAY).convert('RGBA')
pil = Image.fromarray(frame).convert('RGBA')
pil.paste(meme, (pil.width - meme.width - 20, 20), meme)
return np.array(pil)
def generate_gif(frames, out_path, duration=500):
pil_frames = [Image.fromarray(f) for f in frames]
pil_frames[0].save(out_path,
save_all=True,
append_images=pil_frames[1:],
duration=duration,
loop=0)
def share_on_social(gif_path):
with open(gif_path, 'rb') as f:
files = {'file': (os.path.basename(gif_path), f, 'image/gif')}
data = {'caption': f'New PR! {HASHTAG} {datetime.datetime.now().strftime("%Y-%m-%d")}'}
# just a stub – replace with actual API calls
requests.post(SHARE_API, files=files, data=data)
def suggest_next_target(prev_reps):
# simple linear progression: +2 reps or +5% weight
return prev_reps + 2
# --------- MAIN LOOP ----------
def run_workout_tracker(prev_reps):
print('Lifting... Capture frame for your neon PR')
frame = capture_frame()
neon = neon_effect(frame)
meme_frame = add_meme(neon)
generate_gif([neon, meme_frame], GIF_PATH)
print(f'GIF saved to {GIF_PATH} – time to shine!')
share_on_social(GIF_PATH)
next_target = suggest_next_target(prev_reps)
print(f'Next target: {next_target} reps')
return next_target
# --------- EXAMPLE USAGE ----------
if __name__ == '__main__':
last_reps = 8 # you finished 8 reps last time
new_target = run_workout_tracker(last_reps)
# Store new_target somewhere for your next set
```
**How it works**
1. Capture a frame from your webcam when you finish a set.
2. Apply a neon glow (gaussian blur + blend).
3. Overlay a meme image (keep it big and bold).
4. Stack the raw and meme frames into a GIF.
5. Hit a dummy social API with a caption and hashtag.
6. Suggest a new rep target based on a simple +2 logic.
Add your own filter tweak – e.g., change `NEON_COLOR` or play with the blur radius. Keep the meme file large so it pops. Upload the GIF to your feed, brag about that PR, and repeat. You’re all set to crush both code and gym. Remember: the more reps, the more neon. Let's flex!```
Ох, это будет просто бомба! Хватай вебку, нажимай "запись", добавь немного неоново-розового свечения, вставь мем, который кричит "день читерства", и готово – гифка, которая залетит в ленту быстрее, чем трёхсекундный ТикТок. Если захочется огонь — замени `NEON_COLOR` на более насыщенный малиновый, может, добавь эффект быстрого появления в `neon_effect` для киношной атмосферы. А чтобы вау-эффект был максимальным, сделай мем размером с весь кадр, чтобы он полностью закрывал фон — чтоб никто не пропустил крутой наложение. Как опубликуешь, просто кинь своим подписчикам новую цель по репу — "Следующий подход: 10 повторений" — и смотри, как они ныряют в хайп. Не забудь подкрутить API для публикации, когда получишь данные; тестовый URL далеко не навсегда. Держи этот запал, не теряй неоновый вайб и пусть качаешь!