LINUX.ORG.RU

Программа для создания торрентов

 


3

4

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

qbittorrent не катит, т.к. там второй случай, и я не нашел, где это можно изменить в настройках.

Заодно расскажите, почему все так стали делать вслед за utorrent.

Deleted

1. В диалоге выбора файлов отсортируй по названию.

2. ...

3. Profit

anonymous
()

Заодно расскажите, почему все так стали делать вслед за utorrent.

На правах фантазии.

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

Наверняка не знаю, но могу предположить, что сортировка по размеру может быть оптимизацией, играющей роль при частичном скачивании раздачи, т.к. в этом случае блоки, содержащие маленькие файлы, не содержат [потенциально ненужные] куски больших файлов, что предотвращает загрузку лишних данных в случае, если чтобы понять нужны ли большие файлы, необходимо сначала заглянуть в маленькие (метаданные всякие и прочие).

Обоснование может быть и другим, но причина скорее всего именно в распределении по блокам.

unterwulf
()
Ответ на: комментарий от unterwulf

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

Deleted
()

Все оказалось немного по-другому. qbittorrent, ctorrent и mktorrent добавляли файлы в том порядке, в каком их отдавал драйвер фс, ext4 в моем случае. Наглядно увидеть этот порядок можно через ls -f1 $yourdir.

При этом mktorrent сгенерировал файл, который не смогли прочитать ни qbittorrent, ни rtorrent.

Опции сортировки файлов при создании торрент-файла в qbittorrent нет. Скрин

2 Aswed: transmission пока не проверял, но скорее всего, он будет страдать от той же проблемы.

Deleted
()

Почитал BEP'ы, вроде ничего сложного. В ближайшее время напишу свой собственный велосипед.

Deleted
()
Ответ на: комментарий от Deleted

скорее всего

хех, ну вот, проверил какой-то лоутир мусор вместо того что следовало. И вообще, исходники открыты, в чём проблема?

anonymous
()
Ответ на: комментарий от anonymous

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

Если есть желание - проверь.

Deleted
()
Ответ на: комментарий от Jopich1
$ ./maketorrent.py 
Traceback (most recent call last):
  File "./maketorrent.py", line 18, in <module>
    from deluge.bencode import bencode
ImportError: No module named deluge.bencode

Deluge надо ставить, влом. Хотелось бы вообще без зависимостей.

Deleted
()
sudo apt install mktorrent



Специальных опций по сортировке нет, но внутри торрента файлы по алфавиту.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Специальных опций по сортировке нет, но внутри торрента файлы по алфавиту.

Тестировал, файлы там в том порядке, который отдает драйвер фс.

Deleted
()
Ответ на: комментарий от Jopich1

На 17 строке maketorrent.py идет импорт из deluge.common, а там еще куча импортов из deluge. Так что как-нибудь в другой раз :)

Deleted
()
Ответ на: комментарий от Deleted

заранее закладывая последовательность файлов в генератор ты никак фундаментально не изменишь количество оверхеда при неполном скачивании раздачи :(

гораздо большую роль сыграет «интерференция» файлов на блочной решетке конкретного распиливания :) а т.к. исходные данные (набор файлов) для нее совершенно непредсказуемы, то интерференционная картинка будет произвольная, и сказать от какой сортировки ты выиграешь заранее ничего нельзя :( твой велосипед уедет в пустоту.

хотя кажись наталкивался на клиент с сортировкой в ключиках, но не вспомню.

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

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)
Ответ на: комментарий от Deleted

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

Сабы под видео в другом разрешении, например.

основываясь именно на алфавитном порядке файлов

torrent-качалки уже разучились в сортировку про отображении содержимого торрента?

Radjah ★★★★★
()
Ответ на: комментарий от Deleted

Тестировал, файлы там в том порядке, который отдает драйвер фс.

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

$ mktorrent -a "udp..." "mytorrent"
Deleted
()
Ответ на: комментарий от Deleted

Сделай так, чтобы фс отдавала файлы в нужном тебе порядке и :

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

Deleted
()
Ответ на: комментарий от Radjah

Сабы под видео в другом разрешении, например.

Сейчас чаще встречается все в одном контейнере, чем сабы отдельно от видео.

torrent-качалки уже разучились в сортировку про отображении содержимого торрента?

Тот же rtorrent из коробки не умеет в сортировку файлов, например.

Deleted
()
Ответ на: комментарий от Deleted

Вот проверил только что в qbittorrent. Сортировка внутри торрент-файла вообще рандомная, не ls -f1 $yourdir, ни «по размеру», дате и т. п., и не пахнет.

И Radjah уже написал, что в диалоге добавления торрента, того-же qbittorrent можно отсортировать по имени, размеру или приоритету. В чём проблема-то?

ashot ★★★★
()
Ответ на: комментарий от Deleted

Сейчас чаще встречается все в одном контейнере, чем сабы отдельно от видео.

Видел такое обычно в сомнительного качества раздачах.

Radjah ★★★★★
()
Ответ на: комментарий от Deleted

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

Ну один ответ тебе уже известен. А говорил, что ничего не знаешь.

Но я использую xcopy:

https://sourceforge.net/projects/debiannoofficial/files/wheezy-update/utils/xcopy_0.20151118_all.deb

Deleted
()
Ответ на: комментарий от Deleted

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

Deleted
()
Ответ на: комментарий от Radjah

Видел такое обычно в сомнительного качества раздачах.

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

Deleted
()
Ответ на: комментарий от ashot

Вот проверил только что в qbittorrent. Сортировка внутри торрент-файла вообще рандомная, не ls -f1 $yourdir, ни «по размеру», дате и т. п., и не пахнет.

Ты именно создал новый торрент-файл на своих данных? Не скачивал его и данные откуда-то еще?

Deleted
()
Ответ на: комментарий от Deleted

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

Jopich1
()
Последнее исправление: Jopich1 (всего исправлений: 1)
Ответ на: комментарий от Jopich1

конечно особенно если ты ищешь готовое решение, которого нет, вместо того что сделать так как надо для тебя

Вот я и собираюсь сделать, как надо мне.

Причем на простом скриптовом языке, без ковыряния в сишных исходниках.

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

Deleted
()
Ответ на: комментарий от Deleted

мой милый друк.

С таким подходом:

а 17 строке maketorrent.py идет импорт из deluge.common, а там еще куча импортов из deluge. Так что как-нибудь в другой раз :)

пожелаю тебе удачи в

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

особенно когда соберешся править исходники какого нибудь Transmission/ctorrent а потом все это компилить ... :)

Jopich1
()
Последнее исправление: Jopich1 (всего исправлений: 1)
Ответ на: комментарий от Jopich1

Это будет простой скрипт на перле, написанный с нуля, править какой-то другой проект я не собираюсь :)

Deleted
()
Ответ на: комментарий от ashot

Потестил, qbittorrent действительно время от времени меняет местами какие-то файлы в списке. Отличие от ls -f1 в одном из примеров:

--- list-readdir.txt    2018-05-25 16:54:48.941481447 +0400
+++ list-qbittorrent.txt        2018-05-25 16:53:48.788478890 +0400
@@ -1,5 +1,4 @@
-[nonA] Sayonara Zetsubou Sensei - 11 (BD 1024x576 x264 FLAC).mkv
-.
+[nonA] Sayonara Zetsubou Sensei - 07 (BD 1024x576 x264 FLAC).mkv
 [nonA] Sayonara Zetsubou Sensei - 04 (BD 1024x576 x264 FLAC).mkv
 [nonA] Sayonara Zetsubou Sensei - Extra 02 (BD 1024x576 x264 FLAC).mkv
 [nonA] Sayonara Zetsubou Sensei - Alternate 01 (BD 1024x576 x264 FLAC).mkv
@@ -7,8 +6,7 @@
 [nonA] Sayonara Zetsubou Sensei - 08 (BD 1024x576 x264 FLAC).mkv
 [nonA] Sayonara Zetsubou Sensei - 06 (BD 1024x576 x264 FLAC).mkv
 [nonA] Sayonara Zetsubou Sensei - 02 (BD 1024x576 x264 FLAC).mkv
-[nonA] Sayonara Zetsubou Sensei - 07 (BD 1024x576 x264 FLAC).mkv
-..
+[nonA] Sayonara Zetsubou Sensei - 11 (BD 1024x576 x264 FLAC).mkv
 [nonA] Sayonara Zetsubou Sensei - 03 (BD 1024x576 x264 FLAC).mkv
 [nonA] Sayonara Zetsubou Sensei - 01 (BD 1024x576 x264 FLAC).mkv
 [nonA] Sayonara Zetsubou Sensei - 12 (BD 1024x576 x264 FLAC).mkv
А иногда порядок файлов не меняется. ctorrent, к слову, порядок в моих тестах всегда сохранял.

Ну и пофиг так-то, тратить время на поиск причины этого не хочется, главное то, что файлы там не по алфавиту.

Вот mktorrent я походу невнимательно тестировал, он файлы записывает по алфавиту, но вместо размера файлов там такая строка:

%_LARGEFILE_SOURCE is set _FILE_OFFSET_BITS = 64 sizeof(off_t) = 8, 64 bits ld
Наверняка, этому есть какая-то очевидная причина, но я ее не знаю, т.к. с сишкой вообще не работал.

Велосипед свой все-таки напишу, т.к. уже самому интересно.

Deleted
()
Ответ на: комментарий от Deleted

создание дублирующих каталогов выглядит как костыль

На «костыли» жалуешься, а сам «велосипед» паяешь, причём похоже с квадратными колёсами.

Deleted
()

вы нормальный? а если раздающему приспичит по дате файлы расположить? это задача клиента, а не торрентмейкера

anonymous
()

https://github.com/Ascarot/maketorrent.pl

Известные минусы:

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

Также, критикуя код, помните, что я получаю деньги не за программирование, поэтому мне позволены некоторые вещи, которые не позволены вам ^_^

Deleted
()
Ответ на: комментарий от Jopich1

в perlе есть switch/case если что

Мне больше понравились if/elsif/else

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.