Анатолий Ч. | канал
323 subscribers
1.33K photos
191 videos
17 files
645 links
Канал Анатолия Ч.

Робот: @dot_ch_bot
Чат канала: @wallet_chat
Кто я такой: https://t.me/ch_an/1779

Я: @yandex_links
Download Telegram
Анатолий Ч. | канал
Конкурс. Сиквел. Я придумал как сделать конкурс (🙏) не на двадцать минут, с удвоенным (✖️) призовым фондом, и в котором каждый (🫵) может что-то выиграть. И я готов заплатить ДЕСЯТЬ ТЫСЯЧ РУБЛЕЙ 💰 за нахождение восьми 🎱 точек из сериала. Чтобы вы поверили…
Фриланс-Конкурс-Хакатон

Объявляю фриланс-конкурс-хакатон, в котором я попрошу вас сделать технически нетривиальную фриланс-задачку, которая мне нужна для некоторых целей.

Призовой фонд: 2000₽.

Чтобы вы поверили в СЕРЬЁЗНОСТЬ 👊 моих намерений, ловите ФОТОГРАФИЮ-ПОДТВЕРЖДЕНИЕ 📸 того, что я не шучу. Я показываю два пальца — по одному пальцу за тысячу рублей из призового фонда.

Правила 🚧

0⃣. Через 5 минут я выложу архив input.mp4.zip, содержащий видеофайл input.mp4. Вам необходимо проделать с ними следующие действия:
1⃣. Сделайте видео квадратным, равномерно обрезав его по краям (без сжимания картинки).
2⃣. Удалите из видео аудиодорожку.
3⃣. Уменьшите фреймрейт до 6 кадров в секунду, сохранив при этом длину видео (то есть видео не должно изменить свою длину про хронометражу, просто нужно пропустить некоторые кадры).
4⃣. Сгенерируйте из полученного видео два анимированных .png-файла с разрешениями 42x42 и 100x100 (пропорционально уменьшив изначальный кусок).
5⃣. Обрежьте каждый кадр анимированных .png-файлов по кругу с помощью альфа-канала, чтобы анимашки стали круглыми. При этом для экономии веса файла сотрите данные о цвете снаружи круга (сделав его #000 или #fff).
6⃣. Первый кто отправит мне в личку @yandex_links или в комменты @wallet_chat готовые файлы и будет в состоянии объяснить как это было сделано, становится победителем и получит 1500 российских рублей по СБП или 1800 сербских динар наличными при личной встрече.
7⃣. Оставшиеся 500 российских рублей или 600 сербских динар победитель получит, выполнив дополнительные правки, которые могут понадобиться. Если правок не будет, победитель сразу получит 2000 рублей / 2400 динар.
8⃣. Конкурс действителен до конца 2023 года .
9⃣. В конкурсе могу выиграть я сам 🤑.

🔠. Также у вас есть увлекательная возможность быть дисквалифицированным из конкурса, если вы спросите у меня зачем это нужно. Почему? Потому что это правило мне показалось забавным.
Please open Telegram to view this post
VIEW IN TELEGRAM
4💩321👍1😁11
input.mp4.zip
414.5 MB
Игра началась!
8💩11
Анатолий Ч. | канал
input.mp4.zip
Конкурс закончился

Победил @gosunov. Он уже получил 1500₽. Правки за оставшиеся 500₽, интервью с победителем и публикация рабочего решения будут уже не сегодня.

Хоть многие в комментариях утверждали о тривиальности задачи, всего было прислано 14 неудачных попыток от 4 разных участников. На решение задачи ушло чуть меньше 7 часов, так что можно считать, что эффективность участников-фрилансеров равна 214 рублям в час.

Ставлю в комменты загружаться файлы победителя и ложусь спать. Спокойной ночи!
5💩2
Анатолий Ч. | канал
Конкурс закончился Победил @gosunov. Он уже получил 1500₽. Правки за оставшиеся 500₽, интервью с победителем и публикация рабочего решения будут уже не сегодня. Хоть многие в комментариях утверждали о тривиальности задачи, всего было прислано 14 неудачных…
Решение

Я немного пообщался с @gosunov, он студент в итмо и занимается олимпиадным программированием. Во время конкурса узнал много нового про формат .png. Его решение состояло из bash-скрипта script.sh, который внутри себя в одном месте запускает python-скрипт:

script.sh
set -e
mkdir frames42x42
mkdir frames42x42masked

ffmpeg -i input.mp4 -an -vf crop=272:272,scale=42:42,fps=6 42x42_fps6_muted.mp4
ffmpeg -i 42x42_fps6_muted.mp4 frames42x42/%05d.png

python3 mask.py
ffmpeg -y -framerate 6 -i frames42x42masked/%05d.png 42x42.apng
mv 42x42.apng 42x42.png


mask.py
from PIL import Image

w = 42
h = 42
x0 = (w - 1) / 2
y0 = (h - 1) / 2

R = min(h, w) / 2 - 1

def crop_to_circle(im):
for x in range(w):
for y in range(h):
dist = ((x0 - x) ** 2 + (y0 - y) ** 2) ** 0.5
if dist > R:
im.putpixel((x, y), (0, 0, 0, 0))

n = 32450
for i in range(1, n + 1):
print('\r%05d/%05d' % (i, n), end='')
im = Image.open('frames%dx%d/%05d.png' % (w, h, i)).convert('RGBA')
crop_to_circle(im)
im.save('frames%dx%dmasked/%05d.png' % (w, h, i))


Оно сделает анимацию для 42x42, для 100x100 понадобится поменять параметры руками и запустить ещё раз.

🥔🥔🥔🥔

Также параллельно с победителем конкурса вчера, прямо на моих глазах пытался закодить задачу @the_tigor, но не успел. В качестве поощрительного приза я купил ему чипсики. Его код состоит из одного python-скрипта, который сразу генерит и 42х42, и 100х100 версии:

tigor.py
import cv2
from PIL import Image, ImageDraw
from tqdm import tqdm
import random

target_fps = 6
video = cv2.VideoCapture('./input.mp4')

first42 = None
first100 = None

sequence42 = []
sequence100 = []

mask = Image.new('L', (272, 272), 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0, 271, 271), fill=255)

frame_count = video.get(cv2.CAP_PROP_FRAME_COUNT)
nth_frame = video.get(cv2.CAP_PROP_FPS) / target_fps
frame_id = 0
frameids = []

while int(frame_id) < frame_count - nth_frame:
frame_id += nth_frame
frameids.append(frame_id)

def rand_mod(img):
for i in range(4):
width, height = img.size
random_x = random.randint(0, width - 1)
random_y = random.randint(0, height - 1)
random_channel = random.randint(0, 2)

pixel = list(img.getpixel((random_x, random_y)))
if pixel[random_channel] < 255:
pixel[random_channel] += 1
else:
pixel[random_channel] -= 1
img.putpixel((random_x, random_y), tuple(pixel))

for frame_id in tqdm(frameids):
video.set(cv2.CAP_PROP_POS_FRAMES, int(frame_id))
ret, frame = video.read()
if not ret:
break
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

img = Image.fromarray(frame)
cropped = img.crop((104, 0, 376, 272))
round = Image.composite(cropped, Image.new('RGBA', (272, 272)), mask)

img100 = round.resize((100, 100))
img42 = round.resize((42, 42))

rand_mod(img100)
rand_mod(img42)

if first42 is None:
first100 = img100
first42 = img42
else:
sequence100.append(img100)
sequence42.append(img42)

img.close()
cropped.close()
round.close()

def save(first, sequence, name):
first.save(name, optimize=True, compression_level=9, save_all=True,
append_images=sequence, loop=0, duration=int(1000 / target_fps))

save(first42, sequence42, '42.png')
save(first100, sequence100, '100.png')


Про правки я напишу в комменты (и в наш божественный @wallet_chat).
4432🔥1🤡11
🎵 Wrapped for Artists

Много каналов по соседству публиковали свой Spotify Wrapped. Не думаю, что вам интересно моё увлечение Лидой и Джонибоем, но знали ли вы, что Спотифай делает такую же штуку для артистов?

Раскрываю свои итоги года как Anatoliy Ch. в Spotify.

Слушатели
За год у меня было 764 слушателя из 69 стран. Топ-5 стран по прослушиваниям: Сербия, Нидерланды, США, Германия, Украина. 553 человека услышали меня впервые.

Стримы
У меня 14293 стрима — это 220 часов непрерывного прослушивания моей музыки.

Активность
В этом году мне поставили 103 лайка, а мои песни попали в 21 плейлист. Мои треки шерили другим людям — чаще всего шерили «Музыку для сна в самолёте», «Дай денег» и «Музыку для сна в отеле». И что больше всего меня удивило — у 5 разных человек я попал в топ-5 артистов за этот год!

Астрологи объявили неделю музыкального флекса, самооценка выросла вдвое.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾8🎉53🤮2🔥1
Нет времени объяснять

«Слово пастыря» или «Умницы и умники»?

🗳 ГОЛОСОВАНИЕ 🗳
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
55🤔1🤮1
Forwarded from Anatoliy Ch.
Какое телешоу лучше?
Anonymous Poll
38%
Слово пастыря
62%
Умницы и умники
4💩1
Переезд

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

У меня же вещей по сути не было: монитор мне для работы не нужен, коллекцию съеденных пачек тик-таков я передал на нужды бисерохранения, а коммунальную GaN-зарядку я хотел прихватить с собой лично.

Поучаствовать в общем переезде очень хотелось, и мне пришла идея: я достал первую попавшуюся бутылку воды из соседней переговорки, достал наклейку new work place для переезда, записал на ней свой новый стол, и наклеил на бутылку.

В воскресенье на старом столе её уже не было. Завтра я еду в новый офис.
14😁6🤣2
Внимание

Я пришёл (теперь буду ходить на работу пешком 🤩) в новый офис.
Бутылку перевезли.

Спасибо за внимание
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🥰4
Как Цой продал жопу лейблам
(другое название поста — Аккорды & Прокрастинация)

Я как-то искал гитарные аккорды у песни «Вот и помер дед Максим» (не спрашивайте зачем) и обнаружил, что на сайте с аккордами AmDm.ru висит огромная красная плашка:

Запретили песни Цоя, Агата Кристи, Наутилус Помпилиус, Зиверт
Отвечаем в отдельной теме


«Искал медь, а нашёл золото!» — подумал я, и сразу же пошёл читать историю самого громкого копирайт-скандала в музыкальной индустрии 2023 2022.

Оказывается, в ноябре 2022 года ООО «Первое музыкальное Издательство» и ООО «Национальное музыкальное Издательство» захотели подать в суд на админа сайта AmDm.ru за размещение аккордов и текстов песен, которые им принадлежат ("Кино", "Наутилус Помпилиус", "Агата Кристи", "Зиверт", etc), или же платить за них по 10000–5000000 рублей за композицию. Очевидно, у сайта с аккордами таких бабок нет, и они были вынуждены выпилить эти песни с сайта. Ещё они разместили на своём сайте добротный манифест, донося до лейблов идею, что сайты с аккордами приносят им пользу и народную любовь, а не вред.

«Почему же эта история про прокрастинацию?»

— спросите вы?

Дело в том, что у меня сейчас есть примерно 18 ненаписанных постов в дальнем ящике, которые я отложил на потом (примерно половина из них не выйдет никогда), и историю про amdm.ru я откладывал с августа.

И с тех пор невероятный сюжет успел пройти дальше:
сайт AmDm.ru заблокировали в России.

По решению суда по иску ООО «Первое музыкальное Издательство», вообще без уведомления администрации сайта. Иск был к 🤡🤡 CloudFlare Inc 🤡🤡 из-за текстов 10 рандомных песен, которые мне неизвестны.

https://t.me/amdm_ru/54

Теперь AmDm собирает подполье в своём Телеграм-канале, а ребята в комментариях предлагают вернуть на сайт песни Кино.

Такие дела.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡5🎄3🤯1
Анатолий Ч. | канал
Как Цой продал жопу лейблам (другое название поста — Аккорды & Прокрастинация) Я как-то искал гитарные аккорды у песни «Вот и помер дед Максим» (не спрашивайте зачем) и обнаружил, что на сайте с аккордами AmDm.ru висит огромная красная плашка: Запретили…
Я копираст

Вы можете говорить о копирастах что угодно, но я вам не поверю. Потому что когда власть (которая и не снилась моему отцу) правообладателя окажется в ваших руках и когда во рту появится вкус крови, вы начнёте рассуждать иначе.

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

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

Так начались угрозы со стороны моего лейбла в адрес пиратских ресурсов:
Уважаемые представители сайта [URL],

В качестве официального представителя Anatoliy Ch. в России и представителя звукозаписывающего лейбла gorgona music, который обладает исключительными правами на соответствующие музыкальные произведения, я обращаюсь к вам с серьёзным вопросом касательно авторских прав.

Недавно нам стало известно, что на вашем ресурсе по адресу [URL] без нашего согласия размещены и доступны для бесплатного прослушивания и скачивания треки, принадлежащие Anatoliy Ch. и нашему лейблу. Прилагаемые скриншоты подтверждают этот факт.

Мы настоятельно просим вас предъявить лицензию или иное разрешение на использование данных произведений. В случае отсутствия таковых, мы вынуждены будем принять меры правового характера, включая обращение в судебные инстанции для возмещения ущерба и упущенной выгоды.

Ваше немедленное реагирование на данное уведомление и удаление спорного контента поможет избежать дальнейших правовых разбирательств.

С уважением,
Глеб Павлюк
Официальный представитель Anatoliy Ch. в России
gorgona music


И они удаляли пиратский контент. И это было офигительно. Просто офигительно.
😁14🤡8🔥2🥰2
Media is too big
VIEW IN TELEGRAM
https://www.youtube.com/watch?v=v4rvTMBCJD0

Сейчас на ютубе пропали абсолютно все рэп-баттлы (почему?). Я обнаружил это вчера, когда не нашёл баттл Оксимирона и Славы КПСС и не смог приобщить ещё одного человека к высокому.

Я не на шутку испугался, ведь это видео — самое главное событие баттл-рэп сцены в мире ever, и одно из самых социально значимых видео на русском ютубе в 2017 году (в моём личном топе оно на первом месте, на втором «Он вам не Димон», на третьем «Тает Лёд»).

Возможно, в ближайшем времени времени видео вернут, но сейчас я его перезалью здесь. Да, два гигабайта, зато с более высоким качеством, чем в большинстве ютуб-перезаливов.
43
Анатолий Ч. | канал
Смерть программы лояльности На этой неделе @wallet изменил минимальную сумму чека в 5000 раз: с 0.0001 до 0.5 TON. Это значит: 1. Что присылать вам приятные копеечные чеки за подписку на канал я теперь не могу. 2. Что присылать вам чеки побольше за длительную…
Возвращение манидропов

Ой, чуть не забыл! @wallet понизил минимальную сумму чека обратно до 0.0001 TON, поэтому я вернул манидропы.

Уточню, как оно работает сейчас:
1. На канале выходит новый пост.
2. Робот ждёт случайное время в определённом интервале.
3. Робот кидает пост-манидроп в комментарии под постом.
4. В посте-манидропе TON-чек (много не дам).
5. Кто первый его активирует — того и тапки.
6. Взявший чек традиционно помечает коммент реакцией, указав своё первенство. Или же не отмечает, и получает на пост-манидроп негативные реакции и комментарии «скам».

На данный момент, временной интервал — 5-10 минут, а сумма чека 0.00777 TON.

Технически, можно и всю программу лояльности возродить, но я этого делать не буду.
Во-первых, сейчас я получаю офигительное удовольствие от целенаправленного избегания хранения пользовательских данных и использования баз данных в принципе.
Во-вторых, лавочка с
@wallet может в любой момент снова закрываться, я не хочу об этом беспокоиться.

Можете прийти через 5 минут и испытать свою (удачу?) скорость в комментах 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉63👍1🍾1