Вышла вторая версия Torrra — это TUI‑клиент, который позволяет искать и качать торренты прямо из консоли, без браузера и без отдельного GUI‑клиента. Сделан на Python, интерфейс собран на Textual, так что всё выглядит аккуратно и отзывчиво.
Можно подключаться к своим индексаторам Jackett или Prowlarr, смотреть результаты поиска и выбирать чем качать — через встроенный движок на базе libtorrent или передать внешний magnet в свой любимый клиент. Автор утверждает, что в версии v2 серьёзно ускорил UI, улучшил навигацию, прокачал поиск и работу с несколькими торрентами сразу, плюс почистил интеграцию с индексаторами и полирнул раскладку интерфейса.
Установить можно через
Поведение можно подкрутить через
Код в репо, на видео демонстрация работы.
@prog_tools
Можно подключаться к своим индексаторам Jackett или Prowlarr, смотреть результаты поиска и выбирать чем качать — через встроенный движок на базе libtorrent или передать внешний magnet в свой любимый клиент. Автор утверждает, что в версии v2 серьёзно ускорил UI, улучшил навигацию, прокачал поиск и работу с несколькими торрентами сразу, плюс почистил интеграцию с индексаторами и полирнул раскладку интерфейса.
Установить можно через
pipx install torrra, либо взять пакеты из AUR, Homebrew, докер‑образ или готовые бинарники под основные платформы. После установки минимальный сценарий такой: поднимаете Jackett или Prowlarr, запускаете torrra jackett --url https://localhost:9117 --api-key <ключ>, а дальше стрелками ходите по списку, Enter — скачать, p — пауза, r — продолжить, q — выйти.Поведение можно подкрутить через
config.toml: задать дефолтные индексаторы, пути, какие клиенты использовать, чтобы каждый раз не вбивать одно и то же в аргументах. Проект кроссплатформенный (Linux/macOS/Windows) и живой: есть документация и регулярные релизы.Код в репо, на видео демонстрация работы.
@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
👍5❤3🔥1
Два топовых проекта для безопасной передачи файлов
1️⃣ LocalSend — опенсорсный AirDrop внутри одной сети, где устройства просто находят друг друга по локальному бродкасту. Про это вы скорее всего слышали уже. А вот дальше интереснее.
3️⃣ AltSendme — свежий p2p‑AirDrop через интернет: создаёте тикет, второй человек вводит его у себя, оба клиента идут в сеть iroh, находят друг друга по этому идентификатору и устанавливают зашифрованный QUIC‑туннель напрямую, минуя любые облачные хранилища.
Чтобы всё это работало за NAT, iroh сначала пытается пробить прямое соединение (NAT hole punching), а если не получается — временно использует релей‑сервер: он просто прокидывает зашифрованный трафик, пока нельзя выйти на прямой маршрут, после чего трафик идёт уже только между пир‑клиентами. Публичные релеи держит команда iroh и даёт их по умолчанию всем желающим, но код релея открыт: есть crate iroh-relay, если хочется полностью контролировать инфраструктуру и не зависеть от чужих узлов.
@prog_tools
Чтобы всё это работало за NAT, iroh сначала пытается пробить прямое соединение (NAT hole punching), а если не получается — временно использует релей‑сервер: он просто прокидывает зашифрованный трафик, пока нельзя выйти на прямой маршрут, после чего трафик идёт уже только между пир‑клиентами. Публичные релеи держит команда iroh и даёт их по умолчанию всем желающим, но код релея открыт: есть crate iroh-relay, если хочется полностью контролировать инфраструктуру и не зависеть от чужих узлов.
@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤4
CameraLink — это минималистичная опенсорс‑приложуха, которая превращает старый Android‑смартфон (Android 12+) в IP‑камеру с обычным HTTP и MJPEG‑стримом. Оно поднимает на телефоне встроенный веб‑сервер, даёт поток по
Как пользоваться
1️⃣ Установите APK (или соберите сами), запустите, выдайте доступ к камере и foreground‑сервисам, нажмите Start Streaming — на экране появится URL вида
3️⃣ Откройте этот адрес с любого устройства в той же сети (браузер или VLC) и смотрите
3️⃣ Для удалённого доступа через интернет настройте Tailscale: приложение будет раз в N секунд пинговать указанные MagicDNS‑имена/100.64.x.x‑адреса, чтобы туннель не простаивал.
Быстрый старт из исходников:
1️⃣
3️⃣
3️⃣ На телефоне отключите оптимизацию батареи для CameraLink — тогда foreground‑сервис с wake lock будет стабильно держать камеру и сеть часами.
Дальше можно тонко настроить порт HTTP, выбор фронтальной/тыловой камеры, JPEG‑качество, FPS и список Tailscale‑пиров через константы в
@prog_tools
/stream, кадры по /snapshot и продолжает стримить даже с выключенным экраном, плюс умеет пинговать Tailscale‑пиры, чтобы телефон не засыпал для удалённого доступа.Как пользоваться
https://IP_телефона:8080./stream (видео) или /snapshot (кадры).Быстрый старт из исходников:
git clone https://github.com/onepersonhere/camera-link && cd camera-link;./gradlew assembleDebug && ./gradlew installDebug (или запуск через Android Studio);Дальше можно тонко настроить порт HTTP, выбор фронтальной/тыловой камеры, JPEG‑качество, FPS и список Tailscale‑пиров через константы в
CameraStreamingService, StreamingServer и TailscalePinger. Это готовый код для домашнего видеонаблюдения, умного дверного глазка или своей NVR‑системы без облаков и сторонних серверов.@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2
У clox вышла новая версия 1.3 — это консольные часы и календарь, которые показывают время прямо в терминале. Инструмент рассчитан на то, что вы всё делаете в командной строке и хотите иметь под рукой аккуратное текстовое отображение времени и даты.
clox умеет показывать время в нужном часовом поясе, поддерживает ручные смещения, календарный режим и разные форматы даты. Часы рисуются псевдографикой, есть разные циферблаты, можно включать и выключать мигание, скрывать дату и пояс, переключать 12/24‑часовой формат.
Быстрый старт: устанавливаете пакет как обычный модуль Python:
Код в репо, на видео пример работы.
@prog_tools
clox умеет показывать время в нужном часовом поясе, поддерживает ручные смещения, календарный режим и разные форматы даты. Часы рисуются псевдографикой, есть разные циферблаты, можно включать и выключать мигание, скрывать дату и пояс, переключать 12/24‑часовой формат.
Быстрый старт: устанавливаете пакет как обычный модуль Python:
pip install clox==1.3. После этого достаточно запустить clox в терминале, чтобы увидеть часы, или, если удобнее, python -m clox; завершение через Ctrl+C. Дальше можно поиграться с аргументами: выбрать вариант отображения clox --face=3, указать пояс clox --timezone="Etc/GMT+7" или включить календарь clox --calendar=month.Код в репо, на видео пример работы.
@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
🔥3👎1
Dembrandt — инструмент для извлечения дизайн-токенов с любого сайта с помощью одной команды
Результаты автоматически сохраняются в формате
🔘 Цвета (семантика, палитра, переменные CSS);
🔘 Типографика (шрифты, размеры, вес, исходные тексты);
🔘 Интервалы (поля/отступы);
🔘 Границы (радиус, ширина, стили, цвета);
🔘 Тени;
🔘 Компоненты (кнопки, инпуты, ссылки);
🔘 Брейкпоинты;
🔘 Значки и рамки.
#web #css
@prog_tools
Результаты автоматически сохраняются в формате
.json и содержат:#web #css
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤1
Локальный инструмент для очистки Gmail — без подписок и без отправки данных на внешние серверы. Всё происходит через Gmail API на своей машине.
Что умеет:
🔘 Bulk delete по отправителю (показывает, кто больше всего спамит)
🔘 Массовая отписка от рассылок в один клик
🔘 Mark as read для тысяч писем разом
🔘 Фильтры по возрасту (7/30/90 дней), размеру (1/5/10 MB) и категориям (Promotions, Social, Updates)
Под капотом FastAPI + uv, есть Docker-образ. Batch requests обрабатывают по 100 писем за один вызов API, так что даже большие ящики чистятся за минуты.
История проекта забавная: автор — junior dev, написал первую версию за день буквально одним файлом, просто для себя. Выложил на Reddit, собрал 600+ звёзд — и теперь активно переписывает всё по-человечески, добавляет тесты и нормальную структуру. В комментариях попросили фильтр по размеру — добавил на следующий день.
Код в репо, там же инструкция по получению API-ключа и настройке. Или есть видео-инструкция. А дальше просто клонируем репо и
@prog_tools
Что умеет:
Под капотом FastAPI + uv, есть Docker-образ. Batch requests обрабатывают по 100 писем за один вызов API, так что даже большие ящики чистятся за минуты.
История проекта забавная: автор — junior dev, написал первую версию за день буквально одним файлом, просто для себя. Выложил на Reddit, собрал 600+ звёзд — и теперь активно переписывает всё по-человечески, добавляет тесты и нормальную структуру. В комментариях попросили фильтр по размеру — добавил на следующий день.
Код в репо, там же инструкция по получению API-ключа и настройке. Или есть видео-инструкция. А дальше просто клонируем репо и
docker compose up -d. На видео демо.@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Помните XKCD #2347 про башню зависимостей, которая держится на проекте «какого-то чувака из Небраски»? Один разработчик решил реализовать эту метафору на практике и написал StackTower — инструмент, который рисует башню из зависимостей любого пакета.
Подаём на вход пакет из PyPI, npm или crates — получаем визуализацию, где блоки реально стоят друг на друге. Чем глубже зависимость в графе, тем она ближе к основанию. Есть два стиля рендеринга: чистый и hand-drawn в духе XKCD.
Самое интересное — под капотом оказалась NP-hard задача. Чтобы блоки не пересекались, нужно найти правильный порядок узлов в каждом слое. Автор прошёл путь от брутфорса через PQ-деревья и барицентрическую эвристику до комбинированного алгоритма с branch-and-bound. Подсчёт пересечений рёбер свёлся к подсчёту инверсий через дерево Фенвика — O(E log V) вместо O(E²).
Бонусом идёт «Nebraska Guy Ranking» — алгоритм находит мейнтейнеров, на которых держится вся башня. Чем глубже пакет и чем меньше у него мейнтейнеров, тем выше скор.
Быстрый старт
Написано на Go, код на гитхабе.
@prog_tools
Подаём на вход пакет из PyPI, npm или crates — получаем визуализацию, где блоки реально стоят друг на друге. Чем глубже зависимость в графе, тем она ближе к основанию. Есть два стиля рендеринга: чистый и hand-drawn в духе XKCD.
Самое интересное — под капотом оказалась NP-hard задача. Чтобы блоки не пересекались, нужно найти правильный порядок узлов в каждом слое. Автор прошёл путь от брутфорса через PQ-деревья и барицентрическую эвристику до комбинированного алгоритма с branch-and-bound. Подсчёт пересечений рёбер свёлся к подсчёту инверсий через дерево Фенвика — O(E log V) вместо O(E²).
Бонусом идёт «Nebraska Guy Ranking» — алгоритм находит мейнтейнеров, на которых держится вся башня. Чем глубже пакет и чем меньше у него мейнтейнеров, тем выше скор.
Быстрый старт
go install github.com/matzehuels/stacktower@latest
# Парсим зависимости fastapi, например
stacktower parse python fastapi -o fastapi.json
# Рендерим что получилось
stacktower render fastapi.json -t tower -o fastapi.svg
Написано на Go, код на гитхабе.
@prog_tools
☃4❤2
Forwarded from Типичный программист
Летим зимовать ✈️
Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.
Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!
Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:
😎 Типичный программист
🐸 Библиотека программиста
🟢 Ostrovok! Tech
Теперь осталось нажать на кнопку участия под этим постом и вы в игре!
Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.
Всем удачи!
Участников: 27
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (4 дня)
Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.
Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!
Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:
Теперь осталось нажать на кнопку участия под этим постом и вы в игре!
Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.
Всем удачи!
Участников: 27
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (4 дня)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1