Страницы

воскресенье, 16 февраля 2014 г.

Perpetum reposita. Скачать весь Интернет. Joke - All torrents download

На Хабре наткнулся на интересную статью "Спасем крупнейшую медиатеку в рунете. Вся база rutracker у Вас на компьютере", где выложена торрент-ссылка на крупную базу хэш-сумм торрент-файлов.
Т.к. у меня нет регистрации там, то заметку оформлю здесь.

После загрузки около 2 Гб, на диске появился файл final.txt.gz, который содержит информацию о названии торрента, его ID, хэш-сумме и ещё несколько полей.
Этого достаточно для экспериментов.

Теперь в игру вступает мощь комадной строки линукса.

Посмотрим, что это за файл.

Для начала подсчитаем количество записей (строк, оканчивающихся символом \n).

$ cat final.txt | wc -l
1411636

Это почти 1,5 миллиона строк.


Файл final.txt в качестве разделителя полей использует табуляцию TAB (символ \t).

Отберём только нужное (название и хэш-сумму), используя команду cut:

$ cat final.txt | cut -f 2,6

Вывод можно направить и в другой файл:

$ cat final.txt | cut -f 2,6 > hashes.csv


Теперь можно выполнять поиск необходимого из командной строки:


Например найти всё PDF - файлы

$ cat final.txt | cut -f 2,6 | grep "PDF"


Теперь в найденном можно найти уже более подробно:


$ cat final.txt | cut -f 2,6 | grep "PDF" | grep "Android"

Для удобства преобразуем хэш-суммы, в т.н. magnet-ссылки.

Magnet-ссылка - это маленькое чудо.
Минимальная magnet-ссылка имеет вид: magnet:?xt=urn:btih:HASH
где вместо HASH подставляется хэш-сумма из файла final.txt

Используем AWK.
Параметр -F '\t' - задаёт разделитель (табуляцию) во входном файле, пишется в формате регулярных выражений, поэтому в одинарных ковычках.

Принцип AWK  (помимо всех возможностей) - это отбор строк (записей) по шаблону (pattern) и применение к этому шаблону действия (action).
Шаблоны и действия записываются в виде программы на языке AWK.
В командной строке обычно используются короткие программы, текст которых помещается на строке, а то и двух. Программа заключается в одинарные кавычки.

Кратко переменные, относящиеся к текущей строке (линии):
$0 - вся строка
$1, $2 и т.п. - поля на которые разбивается вся строка (каждый раз каждая строка) внутри AWK

Программа записывается в виде:
'$1 ~ /Android/ {print $0}'
Здесь есть шаблон с регулярным выражением заключённым между двумя //, а также действие. Действие заключается в фигурные скобки {}.

Мы берём первое поле каждой строки - это параметр $1 (а в него попадёт название торрента, так мы решили на предыдущих этапах), и при срабатывании шаблона (мы ищем вхождение слова Android в тексте названия), выполниться действие { print $0 } - просто выведем на стандартный вывод (консоль).

Т.к. просто  хэш-суммы не интересно, то сделаём домашнюю заготовку - добавим префикс magnet-ссылки к каждой хэш-сумме и получим файл вида: название торрента - magnet-ссылка. Заметим, что мы также добавляем разделитель табуляцию в выходном файле - \t перед magnet.



gimmor@red$ cat final.txt | grep "PDF" | cut -f 2,6 | awk -F '\t' '$1 ~ /Android/ {print $1,"\tmagnet:?xt=urn:btih:"$2}'

или с ранее отфильтрованным файлом:
gimmor@red$ cat hashes.csv | awk -F '\t' '$1 ~ /Android/ {print $1,"\tmagnet:?xt=urn:btih:"$2}'

Т.е. используя цепочку перенаправлений, можно фильтровать, с каждым разом сужая поиск и отбирая нужное.

| grep "PDF" |
| grep "PDF" | grep "RUS" |

| grep "PDF" | grep "RUS" | grep "Ubuntu" |


Т.е. после отбора нужного - только magnet-ссылок:

gimmor@red $cat hashes.csv | awk -F '\t' '$1 ~ /Android/ {print $1,"\tmagnet:?xt=urn:btih:"$2}' | cut -f 2

Вывод будет примерно таким (хэш-суммы показаны условные):

magnet:?xt=urn:btih:V7LRVHBXLMXZHG4123345DQ7ZECRNXFA
magnet:?xt=urn:btih:55ITF6OOHNHKO4O5P4KY7CXYQ335FCAK
magnet:?xt=urn:btih:JX5WYUMEAG4KMJ5EBJ123345SP4UZZPF4
magnet:?xt=urn:btih:WDDIG2CDI656FVTGGPHL2KH7PWCRZAKD
magnet:?xt=urn:btih:YFEPMNFQS6X123345WRM7RM3EUEPGTOH
magnet:?xt=urn:btih:ZEZJZ6DMPDFVJPUJ123345OI2AXZZUB3J



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

gimmor@red$ sudo apt-get install transmission-cli

Трансмиссия в командной строке запускается так:

gimmor@red$ transmission-cli [options] <file|url|magnet>
-m - важная опция, включает открытие порта на роутере, посредством службы  UPnP.

gimmor@red$ transmission-cli -m "magnet:?xt=urn:btih:YFEPMNFQS6XYDS3TF123345M3EUEPGTOH"

Желательно, чтобы графический клиент не был запущен, иначе возникает конфликт портов. Можно и перенастроить порты у графического клиента.

В графическом клиенте, надо в меню "Файл" - "Открыть URL..." указать magnet-ссылку и далее стандартно.

※※※

Использование SQL


Если воспользоваться моей заметкой по PostrgreSQL, то можно установить СУБД и загрузить туда полученный csv-файл, всю базу final.txt и пр.
И тогда выполнение sql запросов будет интерактивно + можно много чего ещё делать.

※※※

Ресурсы


- Спасем крупнейшую медиатеку в рунете. Вся база rutracker у Вас на компьютере. http://habrahabr.ru/post/195454/
- Содержимое The Pirate Bay уместили в 90 мегабайт. http://habrahabr.ru/post/137929/

※※※

суббота, 15 февраля 2014 г.

Ресурсы Wexler TAB 7b на процессоре Rockchip 2918

Wexler Tab 7b - планшет который нельзя покупать


Клеймовладелец: www.wexler.ru
Производитель: китайцы


Основной недостаток - ужасный, темный экран на котором ничего не видно. Если перевернуть устройство на 180 градусов, то уже получше.

Второй недостаток - быстро выходящий из строя, microUSB разъем, через который производиться зарядка устройства.

Третий недостаток - производитель не предоставляет исходные коды Linux ядра и драйверов. Т.е. нарушает лицензию GPL.

Четвертый недостаток - нет обновлений операционной системы до версии 4.4 kitkat.

Пятый недостаток - это то, что "это" вообще существует.

Шестой недостаток - это то, что я его купил.

Седьмой недостаток - это то, что его даже подарить нельзя. Одариваемый будет мучиться, вместо положительных эмоций получит отрицательные. Этого я не могу себе позволить.


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

Планшет не постеснялся всё рассказать и обо мне, подсветил как зеркало, мои неверные ожидания. Очередной раз напомнил о нарушении правила покупки сложной электронной техники, о доверии к "отечественному" производителю, в условиях развала отечественной промышленности,  "о том где я, и о чём это я".





Как исправить недостатки (на будущее)

1. Аппаратно перевернуть дисплей.
2. Сменить разъем на более надежный (например mini-USB). Либо "сунуть и высунуть" его несколько десятков раз и посмотреть что получается.

3. Когда заключается договор с OEM-производителем, настаивать на предоставлении исходных кодов ядра и драйверов, а также полного технического описания процессора, графического ускорителя, оборудования связи и электрических принципиальных схем.
4. Исходные коды ядра и драйверов позволяют собственными силами производителя и сообщества актуализировать устройство до современного уровня


Как исправить мозги (это сложнее)

1. Отбросить спекулятивное мышление
2. Тщательнее отслеживать потребности пользователей

3. Смотреть в будущее и видеть правильное
4. Самим пользоваться своими продуктами


Характеристики железа


Процессор Rockchip RK2918






Графический сопроцессор Vivante GC800


Разрабатывается открытый 3d-драйвер (Mesa/gallium) нашим соотечественником. Требуется помощь в разработке.





Ресурсы



Режим восстановления (Recovery)


"
1. На выключенном планшете нажмите и удерживайте кнопку *включение* и тут же нажмите и удерживайте кнопку * + *, досчитайте до 7 и отпустите кнопку *включение* , кнопку * + * не отпускать пока не появится перевёрнутый робот со знаком на животе
2. нажмите и удерживайте кнопку *включение* и резко нажмите и отпустите кнопку * + *, всё вы в recovery
3. кнопками * + * и * - * ищете нужную вам строчку, а кнопкой *включение* делаете выбор.
" c форума 4pda.


Инструменты


- Упаковка и распаковка образов микропрограммы для процессоров Rockchip RK2918. https://github.com/OlegKyiashko/RK29kitchen

-. https://sites.google.com/site/rk2918tools/kernel-sources

- rkflashtool. http://forum.xda-developers.com/showthread.php?t=1286305

Обсуждения


- Обсуждение RK29Kitchen. http://4pda.ru/forum/index.php?showtopic=337784
- Обсуждение планшета Wexler Tab 7b. http://4pda.ru/forum/index.php?showtopic=430444
- Сборка Android из исходников. http://4pda.ru/forum/index.php?showtopic=209610&st=1700

- Обсуждение открытого драйвера Vivante GPU. http://www.linux.org.ru/news/hardware/9512296

- . www.freaktab.com/showthread.php?287-RockChip-ROM-Building-Tips-and-Tricks-by-Finless

Опыт


- Ночные оргии с RK2918 и Android OS. http://people.overclockers.ru/SatinS/17638/Nochnye_orgii_s_RK2918_i_Android_OS

- GNU/Linux и устройство на Rockchip 2918. http://habrahabr.ru/post/147793/

- . http://azt59.ru/blog/index.php?rec=rk29_kernel

- Блог автора открытого драйвера Vivante. https://blog.visucore.com/

Информация


- О CyanogenMod. http://ru.wikipedia.org/wiki/CyanogenMod
- CyanogenMod 10.1 — Полный обзор. http://habrahabr.ru/post/189232/

- О Rockchip. http://en.wikipedia.org/wiki/Rockchip
- Характеристики микросхемы Rockchip RK2918. http://tabreview.ru/articles/rockchip_rk2918

- . https://github.com/DJNoXD/rockchip-kernel-rk2918
- . https://github.com/naobsd/cm_device_rockchip_rk2918
- . http://androtab.info/cyanogenmod/rockchip/


- Открытый драйвер Vivante GPU. https://github.com/laanwj/etna_viv

четверг, 6 февраля 2014 г.

Олимпиада в Сочи 2014. IPTV многоканальная запись

В некоторой спешке, настраиваю настольный компьютер для непрерывной записи 5 каналов IPTV во время вещания Олимпиады в Сочи 2014. Это будет проверка в реальных условиях. Но т.к. это бесплатные каналы, качество вещание - какое будет и получиться. Плюс всякие трудности и сбои.

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

Аппаратная платформа собственной сборки: red

Маршрутизатор Dir-320 с собственно настроенной прошивкой OpenWRT backfire.


Параллельное пишутся 24-часовые ролики, одновременно с ними запускаются и нарезанные клипы.

Содержимое cronrecords.sh


#!/bin/bash
# сервер: red
# Дата создания: 6 февраля 2014 года
# Запись олимпиады
# Постановка файла на исполнение: crontab -u user  cronrecords.sh
# user - имя пользователя в системе
# Время записи определяется первым параметром (в секундах) передаваемым скрипту
# 1 час - 3600
# 3 часа - 10800
# 4 часа - 14400
# 6 часов - 21600
# 24 часа - 86400
# Пример - Каждые 5 минут */5 * * * *
# Пример - Каждые 10 минут */10 * * * *

# 24 часовые ролики
59 23 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 86400    2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-00.cron
59 23 * * * /media/gimmor/tibibyte/МЦВЗУ/россия.sh 86400          2> /media/gimmor/tibibyte/МЦВЗУ/log/россия1-00.cron
59 23 * * * /media/gimmor/tibibyte/МЦВЗУ/россия2.sh 86400         2> /media/gimmor/tibibyte/МЦВЗУ/log/россия2-00.cron
59 23 * * * /media/gimmor/tibibyte/МЦВЗУ/россия24.sh 86400        2> /media/gimmor/tibibyte/МЦВЗУ/log/россия24-00.cron
59 23 * * * /media/gimmor/tibibyte/МЦВЗУ/нтв.sh 86400             2> /media/gimmor/tibibyte/МЦВЗУ/log/нтв-00.cron

# 3-часовые ролики, запуск перед новостями первого канала
59 08 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-09.cron
59 11 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-12.cron
59 14 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-15.cron
59 17 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-18.cron
59 20 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-21.cron
59 23 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-24.cron
59 02 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-03.cron
59 04 * * * /media/gimmor/tibibyte/МЦВЗУ/первый_канал.sh 14400 2> /media/gimmor/tibibyte/МЦВЗУ/log/первый-06.cron

# В 5 утра запускаем 6-часовой утренний ролик, до 11 часовых новостей
59 04 * * * /media/gimmor/tibibyte/МЦВЗУ/россия.sh 21600 2> /media/gimmor/tibibyte/МЦВЗУ/log/россия1-05.cron
# 3-часовые ролики, запуск перед новостями канала Россия 1
59 10 * * * /media/gimmor/tibibyte/МЦВЗУ/россия.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/россия1-11.cron
59 13 * * * /media/gimmor/tibibyte/МЦВЗУ/россия.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/россия1-14.cron
59 16 * * * /media/gimmor/tibibyte/МЦВЗУ/россия.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/россия1-17.cron
59 19 * * * /media/gimmor/tibibyte/МЦВЗУ/россия.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/россия1-20.cron
# С 11 вечера до 5 утра - 6-часов ночной ролик
59 22 * * * /media/gimmor/tibibyte/МЦВЗУ/россия.sh 21600 2> /media/gimmor/tibibyte/МЦВЗУ/log/россия1-23.cron


# 3-часовые ролики, канала Россия 2
00 */3 * * * /media/gimmor/tibibyte/МЦВЗУ/россия2.sh 10800 2> /media/gimmor/tibibyte/МЦВЗУ/log/россия2-3.cron


# получасовые ролики на канале Вести Россия 24
*/30 * * * * /media/gimmor/tibibyte/МЦВЗУ/россия24.sh 1800 2> /media/gimmor/tibibyte/МЦВЗУ/log/Россия24-30.cron





Чтобы поставить на исполнение надо выполнить в папке МЦВЗУ:

МЦВЗУ$ crontab -u gimmor  cronrecords.sh


Теперь сам скрипт записи, на основе которого я наплодил ещё несколько аналогичных скриптов, для каждого канала. Разница у них только в url-адресах каналов и именах записываемых файлов.

Скрипт пишет транспортный поток MPEG2-TS, что там внутри нам особо не интересно, открывает проигрыватель и ладно.


МЦВЗУ$ cat "первый_канал.sh"

#!/bin/bash
# Скрипт для видеозаписи 1 канала

# сервер: red
# Особенности:
# Выходной файл создается с датой-временем,
# при использовании русских букв в имени выходного файла
# надо использовать кавычки в команде mv
# Временные диапазоны
# 1 час - 3600
# 3 часа - 10800
# 6 часов - 21600
# 24 часа - 86400
OUTPUT_VIDEOFILE="/media/gimmor/tibibyte/Телепередачи/"`date +%Y%m%d-%T`".первый.видеозапись.ts"
echo $OUTPUT_VIDEOFILE
cvlc -vvv rtp://@233.33.210.86:5050 --sout=file/ts:$OUTPUT_VIDEOFILE --run-time $1 vlc://quit --no-audio


#notify-send "Запись телепередачи завершена $OUTPUT_VIDEOFILE"

По сравнению со старой версией, новый cvlc похоже не глючит  с именами файлов и поэтому можно использовать параметры, что я и делаю.

Структура папок на 1TiB томе (точка монтирования /media/gimmor/tibibyte):

/Телепередачи - записанные телепередачи
/МЦВЗУ - сами скрипты
Везде желательно (обязательно) использовать полные пути, т.к. крон может не понять относительные.


Справочно. Мои настройки igmpproxy на Openwrt backfire

##------------------------------------------------------
## Enable Quickleave mode (Sends Leave instantly)
##------------------------------------------------------
# quickleave


##------------------------------------------------------
## Configuration for eth0.1 (Upstream Interface)
##------------------------------------------------------
phyint eth0.1 upstream  ratelimit 0  threshold 1
    altnet 10.0.0.0/8
    altnet 224.0.0.0/4
    altnet 78.107.196.0/22
    altnet 10.24.254.0/24
    altnet 85.21.90.0/24

##------------------------------------------------------
## Configuration for eth0.0 (Downstream Interface)
##------------------------------------------------------
phyint eth0.0 downstream  ratelimit 0  threshold 1


Справочно. Мои настройки OpenWrt файла sysctl.conf

...
# IPTV
# 02.02.2014
net.ipv4.conf.all.force_igmp_version=2
net.ipv4.conf.default.force_igmp_version=2
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0

...


Справочно. Мои настройки OpenWrt Firewall, в части относящейся к IPTV

Также надо разрешить приём udp-пакетов сетевым фильтром (файрволлом), в файле /etc/config/firewall

man - интерфейс подключения к провайдеру (его локальной сети)
lan - это интерфейс локальной сети (switch)

...

config rule
    option src 'man'
    option proto 'igmp'
    option src_ip '0.0.0.0/0'
    option family 'ipv4'
    option target 'ACCEPT'
    option name 'iptv-allow-igmp'

config rule
    option src 'man'
    option proto 'udp'
    option dest 'lan'
    option dest_ip '224.0.0.0/4'
    option family 'ipv4'
    option target 'ACCEPT'
    option src_ip '0.0.0.0/0'
    option name 'iptv-udp-forward'

...


P.S. Похоже 1TiB нехватит, т.к. 1 день получается около 150 Гб, а если ещё и с резервной нарезкой, то все 300.  Итого над 3TiB.

P.P.S. Можно добавить уведомление об окончании записи, посылкой сообщения notify-send.

7.02.2014. Ну что же, день видеозаписи прошёл. 24-часовые ролики заняли вместе 145.4Гб. Каждый около 29,6 Гб. Также записались и нарезанные клипы, правда на одном канале был сбой, из-за ошибки в скрипте (был исп. старый скрипт), это ещё ~150 Гб. Однако, принятое решение о параллельной записи привело к надежности и соответственно потерь видеоинформации не случилось.
Тома, размером 1,1 TiB хватит на 4 дня записи. Так что надо бежать в лавку за 4ТБ винчестером.
Единственное что, это всё же не HD запись, так что тут упущение.
Однако получается, что одномоментно записывается 10 потоков IPTV.
Температура винчестеров около 30-31 градусов.

Входящий трафик при записи 5+5 каналов

~ 3 МБита на канал, 2 записывающих процесса на канал, а трафик не удваивается. Multicast рулит, т.е. чтобы забить входящий интерфейс мне нехватает playlista :-)

Загрузка процессора AMD-A10 - 30% Vlc (визуальный просмотр канала), 26% Gnome 3, 3-4% на один записывающий процесс, а их 10, Firefox 10-16%, и по мелочи.


8.02.2014. Около 15.40 случилось кратковременное отключение питания. Компьютер автоматические не загрузился (перешёл в непонятное состояние, помогло только выключение).
Роутеру хватило конденсаторов в блоке питания и он продолжил свою работу. Мультикаст не отрубился, хотя подписчики все исчезли :-). Потерялась видеоинформация 3-часовая (период 15-18), и 24-часовая (не сформирован полный файл).
Вывод: UPS либо часовая нарезка, чтобы сократить потери.

18.02.2014. Из-за истекания аренды IP-адреса на MAN интерфейсе (локалка Билайна) происходит падение igmpproxy. Адрес выдаётся тот-же. Поэтому надо мониторить и этот факт. Так что 18 числа опять потеря видеоинформации.
Запуск igmpproxy (в консоли роутера) восстанавливает подачу данных.

21.02.2014. Эксперимент прекратил. Т.к. роутер стал подвисать + видеоинформация получается некачественная, с рассинхронизацией звука и рассыпанием картинки.