Автоматизируем скачивание торрентов на Synology

Задача

tenyardtracker.com - закрытый торрент-трекер, где выкладывают записи игр по американскому футболу. Что бы поддерживать нормальный рейтинг, нужно как можно раньше присоединяться к раздаче. Но это сложно, разница во времени между нами и США большая, и я в это время как правило сплю. Добавляем к этому нерабочий RSS у трекера и что для скачивания торрента нужна авторизация.

Задача автоматизировать эту процедуру. Как только появляется раздача, сразу скачиваем торрент, добавляем в клиент и скачиваем.

uTorrent RSS

Конечно, можно было бы решить задачу старым дедовским способом, uTorrent+RSS+данные из cookie файла, но нет - RSS кривой:

<link>
https://tenyardtracker.com/download.php/35382/NFL.2017.Week.04.Redskins.vs.Chiefs.720p60.TYT.mp4.torrent
</link>

А должно быть так:

<link>
https://tenyardtracker.com/download.php?torrent=35382
</link>

Это решается маленьким скриптом на php:

<?php
$code = file_get_contents("https://tenyardtracker.com/rssdd.xml");
$pattern = "/https\:\/\/tenyardtracker\.com\/download\.php\/(\d+)\/[^<]*/";
preg_match_all($pattern, $code, $tmp);
$replacement = "https://tenyardtracker.com/download.php?torrent=$1";
echo preg_replace($pattern, $replacement, $code);
?>

Если кому данный способ подходит, пользуйтесь: https://marand.ru/tyt/tyt.php
Что бы добавить в uTorrent в качестве RSS, добавьте эту строку целиком:

https://marand.ru/tyt/tyt.php:COOKIE:tytracker_ipcheck=xxx;tytracker_pass=xxx;tytracker_uid=xxx;xf_session=xxx

Данные подставьте из своего cookie файла.
Осталось настроить фильтр на вашу любимую команду :)

Synology NAS

В наличии есть NAS Synology и мне захотелось перевесить эту задачу на него. И получилось :)

Flexget это что-то невероятное. Программа умеет логиниться на сайты, переходить по страницам, парсить HTML и скачивать то, что укажешь. Может отличать просмотренные серии от новых, может скачивать фильмы с более высоким качеством по мере появления и т.д. Повторюсь - это какой-то монстр. Почитайте документацию и посмотрите рабочие примеры конфигов пользователей.

Установка на Synology простая. Добавляем репозиторий SynoCommunity и устанавливаем пакет Flexget. Осталось создать конфигурационный файл(на самом деле нет).

Конектимся к NAS по SSH и редактируем /volume1/@appstore/flexget/var/config.yml. Вот мой с комментариями:

schedules: # задаем интервал проверки
  - tasks: [tyt_nfl]
    interval:
      minutes: 15
tasks:
  tyt_nfl:
    form: # указываем форму логина и данные для входа
      url: https://tenyardtracker.com/members.php?action=login
      username: user
      password: pass
    html: # переходим в нужную категорию 
      url: https://tenyardtracker.com/browse.php?cat=65
      title_from: link # говорим использовать название из ссылки
    regexp:
      accept: # фильтруем что скачивать
        - Packers # Go Pack GO!!!!
      reject: # не скачивать
        - raw
    quality: # только 720p!
      - 720p
    urlrewrite: # превращаем ссылку на страницу с торрентом на сам торрент
      sitename:
        regexp: details.php\?id=(?P<id>\d+).*
        format: download.php?torrent=\g<id>
    download: /volume1/downloads/_inc # скачиваем торрент файл в эту папку. Из этой папки штатный
                                      # Download Station забирает задачи на скачивание.

Сохраняем, перезапускаем в менеджере пакетов Flexget и... Ничего не работает, в логе такая хрень:

2017-10-04 13:23 CRITICAL formlogin tyt_nfl mechanize required (python module), please install it.
2017-10-04 13:23 WARNING task tyt_nfl Aborting task (plugin: form)

Ок, установим pip, затем mechanize.

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

Это займет минут пять, затем:

$ pip install mechanize

Но и после этого Flexget ругался на отсутствие библиотеки mechanize. Решил тем, что скопировал библиотеку в окружение Flexget:

cp -avr /usr/lib/python2.7/site-packages/mechanize /volume1/@appstore/python/lib/python2.7/site-packages
cp -avr /usr/lib/python2.7/site-packages/mechanize-0.3.5.dist-info /volume1/@appstore/python/lib/python2.7/site-packages

Ребутнул NAS целиком и заработало. Наконец-то!

Лучшие позы для съемки детей

В очередной итерации разбора входящих заметок в Evernote обнаружил полезную заметку. Для тех у кого есть фотоаппарат и ребёнок - будет полезно.

Настройка скорости воспроизведения в MPC-HC

Media Player Classic Home Cinema aka MPC-HC, лучший видеоплеер под Windows. Простой, быстрый, функциональный.

Функциональный настолько, что я сходу не нашел где у него меняется  шаг изменения скорости воспроизведения. Пришлось гуглить :)

По умолчанию шаг скорости имеет значение auto, что дает нам 1x, 2x и 4x. Если поставить, например, 10, то получится так: 1x, 1.1x, 1.2x, 1.3x и т.д.

Возможно, будет "мультяшный голос", но это можно исправить: Открываем Настройки - Воспроизведение - Вывод. В поле Рендер Аудио выбираем Встроенный рендер аудио. Перезапускает приложение и наслаждаемся.

Sublime Text 3 настройка русского языка

Sublime Text очень крутой редактор кода, но, к сожалению, умирающий. Обновлений практически нет, да и разработчик открыто говорит что потерял интерес. Плюс куча альтернатив, в лице всяких разных IDE и Atom, например.
Даже не смотря на всё это, Саблаймом народ пользуется, я в том числе.
"Из коробки" он не умеет отображать кириллицу, но это легко исправить:

Настройка русского языка в Sublime Text 3

Так как в третьей версии пропала возможность редактировать дефолтные настройки, будем редактировать пользовательские. Открываем Preferences - Settings - User.
Вставляем "fallback_encoding": "Cyrillic (Windows 1251)",, сохраняем и перезапускаем.

Установка letsencrypt на Ubuntu с nginx

Let`s Encrypt


С появлением Let's Encrypt не осталось причин не использовать ssl сертификаты для сайтов вообще. Letsencrypt позволяет абсолютно бесплатно получить сертификат для сайта без каких-либо танцев с бубном, как это было, например, со startssl.

Ну почти. Мне всё-таки пришлось поплясать, так как на самом мелком дроплете DigitalOcean скрипт упирался в объем памяти. Подключив файл подкачки, все прошло как по маслу:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=524288  
sudo chmod 600 /swapfile  
sudo mkswap /swapfile
sudo swapon /swapfile  

Ах да, вот сама инструкция по установке и настройке Let`s Encrypt.

После установки сертификата потребовалось настроить и Wordpress - в настройках надо поменять адрес сайта с http:// на https://. Самое сложное, это отредактировать все записи и поменять ссылки на картинки, что бы они забирались по https, потому как без этого браузер будет ругаться на небезопасное содержимое.
Постов было больше 1000, так что о ручной замене и речи быть не могло. После 5 минут гугления найден гениальный инструмент - Search Replace DB.
3 секунды и больше 1000 постов отредактировано :)

Удаляем аудиодорожку из mp4 файлов

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

На помощь приходит консольная утилита ffmpeg, как это не странно.
Что бы удалить все аудиодорожки, надо использовать команду -an. Как-то так:
ffmpeg -i input.mp4 -vcodec copy -an output.mp4
-i - указывает исходный файл
-vcodec copy говорит что не надо трогать видео
-an что аудио не нужно
output.mp4 - итоговый файл.

Отлично, но надо как-то подставить 1322 файла (147Gb)! Поможет PowerShell:

$FROMDIR = 'H:\2013\'
$TODIR = 'H:\2013_new'
$FFMPEG = 'H:\ffmpeg\bin\ffmpeg.exe'

$files = Get-ChildItem $FROMDIR -Filter  '*.mp4'

foreach ($file in $files)
{
	$output = $TODIR + '\' + $file.Name

	& $FFMPEG -i $FROMDIR$file -vcodec copy -an $output
}

Запускаем и ждем :)

🇳🇴 Норвегия. Полезная информация о стране.

В общей сложности, по Норвегии я проехал больше 20 тысяч километров. С севера на юг, с юга на север. При подготовке к трем моим поездкам в страну фьордов и водопадов собрал небольшую коллекцию ссылок. Уверен, они будут полезны тем, кто собирается посетить эту красивейшую, но дорогую страну.

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

Карты

FINN kart
1881 - потрясающая детализация спутниковых снимков
Топо карты Норвегии с пешими маршрутами
Еще карты
Еще одни

Паромы, транспорт

Torghatten Nord AS - маршруты, расписание и цены на некоторые паромы
Паромы - еще паромы
Паромы - еще одна паромная контора
И еще паромы
Паром Анденес - Сенья (Gryllefjord)
Информация о платных дорогах

Отчеты, информация о маршрутах

Маршруты для хайкинга - очень много маршрутов. Правда, только на норвежском.
Еще маршруты, с описанием, с треками.
Блог о Лофотенских островах - ведет потрясающий фотограф Cody Duncan
VisitNorway.com - русскоязычный сайт, на котором собрано куча полезной информации о Норвегии
Для любителей гор - информация почти обо всех возвышенностях Норвегии с маршрутами, фотографиями
Еще горы - здесь, правда, не только по Норвегии
Vinmonopolet адреса магазинов vinmonopolet, где можно купить алкоголь
Сафари на паффинов - очень прикольные птички, у нас больше известны как морские попугаи
Китовое сафари - дорого, но посмотреть на китов того стоит
Походы на Лофотенским островам
Прогулки по Норвегии
Автопутешествие в Норвегию на ОКЕ
Норвегия. Полезная информация для тех, кто за рулем
Наше скандинавское путешествие

Погода, полярное сияние

Погода и прогноз интенсивности полярного сияния
seNorge
YR.NO - очень точные прогнозы
Прогноз полярного сияния от Геофизического института на Аляске
Онлайн камера, показывающая текущее состояние неба
Центр предсказания космической погоды, в особенности эта картинка.
Aurora Sky Station находится в Швеции, но там есть прогноз
Софт для iOS - прогноз на телефоне

Кемпинги, жилье

Каталог кемпингов
Еще один каталог
Кемпинг на Лофотенах

Notepad ++, удалить строки, содержащие текст

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

Сегодня, например, понадобилось перелопатить примерно 120 тысяч строк в log файле, что бы найти потерявшиеся платежи с терминала за два дня.

В общем, в Notepad++ это сделать очень просто.

Нажимаем ctrl+f, закладка Mark. Проверяем что бы стояла галка Bookmark line.

Водим текст, нажимаем Mark All. Все строки, содержащие этот текст, выделяются.

Дальше идем - Search -> Bookmark.

И тут есть варианты:

  • Вырезать отмеченные строки
  • Копировать отмеченные строки
  • Удалить отмеченные строки
  • Удалить неотмеченные строки

Быстро и удобно, не надо пыхтеть над регулярными выражениями.