[wlx/wdx/wcx] TCTorrent
Модераторы: Моторокер, Avada, CaptainFlint, Nik, d-view
Loopback
Я про WLX. Просматриваю torrent с сериалом, а там, видимо, автор понаставил всё по размеру, а хочется-то по названию от первой до последней, чтобы понять все ли серии присутствуют. Поэтому и хотелось бы иметь возможность своей сортировки или сортировки по умолчанию, взятой из ТС.
Я про WLX. Просматриваю torrent с сериалом, а там, видимо, автор понаставил всё по размеру, а хочется-то по названию от первой до последней, чтобы понять все ли серии присутствуют. Поэтому и хотелось бы иметь возможность своей сортировки или сортировки по умолчанию, взятой из ТС.
TC 11.58 32/64, Win10x64
Cuda уехал text, он был ещё вчераа...
Cuda уехал text, он был ещё вчераа...
Кажется я дезинформировал по поводу отступа, сам уже не помню, что делалyozhik писал(а):А можно ли ещё отступ (margin) слева чуть увеличить (или сделать настраиваемым)?
Loopback
Ага, спасибо. Точно, работает. Если цвет поправите, будет вообще замечательно, а я пока MarginLeft в 0 выставил, чтобы в тёмном режиме белую полоску не добавлял.
А самое ужасное — то, что в справке то про MarginLeft написано, а я, прежде чем волну подымать, не перечитал. Так что мой стыд, моя краска
А не Ваши.
Ага, спасибо. Точно, работает. Если цвет поправите, будет вообще замечательно, а я пока MarginLeft в 0 выставил, чтобы в тёмном режиме белую полоску не добавлял.
А самое ужасное — то, что в справке то про MarginLeft написано, а я, прежде чем волну подымать, не перечитал. Так что мой стыд, моя краска
Amo ergo sum
Новая версия 2.2.0 на wincmd.ru.
Только исправления или что-то по мелочам.
Самое большое изменение за последние несколько лет. Реализация давно (и довольно опрометчиво) обещанного функционала, а не то чтобы мне этого хотелось... Что-то серьёзно менять в древнем коде тяжело, на эту пару фич было потрачено какое-то неприличное количество времени. Так или иначе, гештальт закрыт, подобных крупных изменений больше ждать не стоит- WLX: не работало автоопределение языка, если секция была переадресована
- WLX: исправлено наложение текста на значки на HiDPI
- WLX: исправлено отображение списков в настройках на HiDPI
- WLX: изменения в группах расширений не активировали кнопку "Применить"
+ WLX: настройка шрифта для текста статусной строки
+ WLX: режим с отдельной колонкой для расширений
+ WLX: опции в ini для настройки ширины панелей статусной строки и её высоты
+ WLX: запоминание последней страницы настроек в пределах сессии
+ WLX: новая страница "Макет" в настройках, опции перераспределены
+ WLX: режим вписывания содержимого в ширину окна
- WLX: не применялся фоновый цвет левого отступа
+ WLX: корректное склонение числа файлов для русской локализации
+ WLX: отображение в статусной строке размера и количества выбранных файлов
- WLX: исправлено медленное сворачивание больших списков
+ WLX: диалог выбора цвета раскрывается полностью, с пользовательскими цветами
cluster
Если бы только статусбар, а то ведь ещё и скроллбары придётся подтягивать...
Loopback
А вот эта библиотека могла бы чем то пригодиться?
https://github.com/ozone10/darkmodelib
Заранее прошу прощения если я совсем мимо угодил (в молоко
), ибо я — лирик, т.е. совсем не физик. И да, «гештальт закрыт» — согласны, поддерживаем. Но вдруг эта библиотека позволит решить всё быстро и хорошо (я, правда, в такое не очень верю, но пока ещё иногда надеюсь
). А нет, так нет, и без того добро.
Я про эту библиотеку узнал после того, как её прикрутил к своему детищу Кшиштоф Ковальчук, автор SumatraPDF. Он до этого сам контролы красил, и SumatraPDF в тёмном обличье была как страшный сон. А как прикрутил, так заблестела, как в автосалоне. Ему автор этой библиотеки помогал, вот история. Ну, и если в этом плагине она Вам не пригодится, то может где в другом.
Если бы только статусбар, а то ведь ещё и скроллбары придётся подтягивать...
Loopback
А вот эта библиотека могла бы чем то пригодиться?
https://github.com/ozone10/darkmodelib
Заранее прошу прощения если я совсем мимо угодил (в молоко
Я про эту библиотеку узнал после того, как её прикрутил к своему детищу Кшиштоф Ковальчук, автор SumatraPDF. Он до этого сам контролы красил, и SumatraPDF в тёмном обличье была как страшный сон. А как прикрутил, так заблестела, как в автосалоне. Ему автор этой библиотеки помогал, вот история. Ну, и если в этом плагине она Вам не пригодится, то может где в другом.
Amo ergo sum
В общем идея отдельного интерфейса для получения данных торрента, озвученная в соседней ветке, неожиданно зацепила, даже отвлекся немного от чистки кода Autorun. Не всем это интересно, поэтому ссылка и технические подробности под катом. Никаких других изменений относительно последнего релиза нет.
Тестовая версия от 30.09.2025
Интерфейс очень похож на интерфейс MediaInfo, что позволяет не использовать буфер и не задумываться о размере получаемых данных. Позволяет получить любую информацию о торренте, которую можно получить через wdx + файлы + все трекеры/вебсиды и т. д. В наборе 4 функции, соглашение по вызову stdcall.
Открывает, парсит файл торрента и подготавливает данные. В случае успеха возвращает хэндл объекта, в случае критической ошибки - 0. Если ошибка не совсем критическая, то позднее можно получить текст ошибки с TorrentGet.
Параметр InfoType может быть одной из строк:
Некоторые типы информации могут иметь несколько значений, для их получения используется параметр Index. Отсчёт начинается с 0.
В случае успеха функция вернёт полученное значение, в случае ошибки (неправильный handle или имя поля) - NULL.
Параметр InfoType аналогичен TorrentGet. Функция возвращает число значений данного поля. Для фиксированных полей результат всегда 1. Если поле с таким именем не существует - 0.
Освобождает память объекта.
Пример получения данных на Autorun, вывод в DebugView:
Показать
Тестовая версия от 30.09.2025
Интерфейс очень похож на интерфейс MediaInfo, что позволяет не использовать буфер и не задумываться о размере получаемых данных. Позволяет получить любую информацию о торренте, которую можно получить через wdx + файлы + все трекеры/вебсиды и т. д. В наборе 4 функции, соглашение по вызову stdcall.
Код: Выделить всё
HANDLE TorrentOpen(LPCWSTR FileName)Код: Выделить всё
LPWSTR TorrentGet(HANDLE Handle, LPCWSTR InfoType, int Index)Код: Выделить всё
Name
TotalSize
FileCount
BlockSize
BlockCount
Created
Creator
Hash
Comment
Encoding
Webseed
Multifile
PrivateTorrent
Publisher
PublisherURL
Tracker
File
FileSize
CustomFieldВ случае успеха функция вернёт полученное значение, в случае ошибки (неправильный handle или имя поля) - NULL.
Код: Выделить всё
UINT TorrentCountGet(HANDLE Handle, LPCWSTR InfoType)Код: Выделить всё
void TorrentClose(HANDLE Handle)
Пример получения данных на Autorun, вывод в DebugView:
Код: Выделить всё
Func TorrentInfo(sFile)
Static aFixed = List('Name', 'TotalSize', 'FileCount', 'BlockSize', 'BlockCount', _
'Created', 'Creator', 'Hash', 'Comment', 'Encoding', _
'Multifile', 'PrivateTorrent', 'Publisher', 'PublisherURL')
Static aMulti = List('Tracker', 'Webseed', 'Error', 'CustomField')
Static sLibName = "TCTorrent.wlx" & (auX64 ? "64" : "")
# Необходимо поменять путь на свой!
Static sLibPath = %COMMANDER_PATH & "\Plugins\wlx\TCTorrent\" & sLibName
Local hDll = DllCall("LoadLibrary", "wstr", sLibPath, "handle")
If hDll = 0 Then Return
Local hHandle = DllCall(sLibName & "\TorrentOpen", "wstr", sFile, "handle")
If hHandle = 0 Then
DllCall("FreeLibrary", "handle", hDll)
Return
EndIf
Local nCount, sRes
For i = 0 to aFixed.Count - 1
sRes = DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", aFixed[i], "int", 0, "wstr")
OutputDebugString(aFixed[i] & ": " & sRes)
Next
OutputDebugString(auCRLF & 'Files:')
nCount = DllCall(sLibName & "\TorrentCountGet", "handle", hHandle, "wstr", "File", "uint")
For j = 0 To nCount - 1
sRes = StrFormat("[%12s] %s", _
DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", "FileSize", "int", j, "wstr"), _
DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", "File", "int", j, "wstr"))
OutputDebugString(sRes)
Next
For i = 0 to aMulti.Count - 1
OutputDebugString(auCRLF & aMulti[i] & 's:')
nCount = DllCall(sLibName & "\TorrentCountGet", "handle", hHandle, "wstr", aMulti[i], "uint")
For j = 0 To nCount - 1
sRes = DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", aMulti[i], "int", j, "wstr")
OutputDebugString(sRes)
Next
Next
DllCall(sLibName & "\TorrentClose", "handle", hHandle)
DllCall("FreeLibrary", "handle", hDll)
EndFunc
Последний раз редактировалось Loopback Вт сен 30, 2025 21:01, всего редактировалось 1 раз.
Loopback
Спасибо. Функционал топовый, наверняка кому-то пригодится для собственных нужд. И большое спасибо, что сразу сделали пример использования на Autorun. Просто супер ) Но у есть меня пара вопросов. Почему в этом вызове в индексе используется "i":
И как извлечь сведения о размере файлов внутри торрента?
Спасибо. Функционал топовый, наверняка кому-то пригодится для собственных нужд. И большое спасибо, что сразу сделали пример использования на Autorun. Просто супер ) Но у есть меня пара вопросов. Почему в этом вызове в индексе используется "i":
Код: Выделить всё
sRes = DllCall(sLibName & "\TorrentGet", "handle", hHandle, "wstr", aFixed[i], "int", i, "wstr")Точно, это ошибка копипасты. Для фиксированных полей параметр игнорируется, можно использовать 0.Orion9 писал(а): Почему в этом вызове в индексе используется "i":
А вот про размер я совершенно забылOrion9 писал(а):И как извлечь сведения о размере файлов внутри торрента?