mdevaev / emonoda

A set of tools to organize and manage your torrents

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Не завершается считывание торрент-файлов в emfind

vitlav opened this issue · comments

$ emfind orphans
# I: Client transmission is ready        
# I: Fetching all hashes from client ...
# I: Validating the cache ...
...                                                                                       # I: Loading torrents from /var/lib/transmission-daemon/torrents/*.torrent -- Срезневский И.И. Материалы для словаря древнерусского языка по письменным памятникам - т. 1-3 - 1893-1912.8716b9a4acc15faf.torrent ..                                                                                                                                                                                                                   Traceback (most recent call last):                                                                                                                                                                    
  File "/usr/bin/emfind", line 9, in <module>
    load_entry_point('emonoda==1.9.13', 'console_scripts', 'emfind')()
  File "/usr/lib/python3.3/site-packages/emonoda/apps/emfind.py", line 193, in main
    cache=get_cache(False),
  File "/usr/lib/python3.3/site-packages/emonoda/apps/emfind.py", line 185, in get_cache
    log=log_stderr,
  File "/usr/lib/python3.3/site-packages/emonoda/helpers/datacache.py", line 29, in get_cache
    if _update(cache, client, torrents_dir_path, name_filter, log):
  File "/usr/lib/python3.3/site-packages/emonoda/helpers/datacache.py", line 80, in _update
    torrents = tcollection.load_from_dir(path, name_filter, log)
  File "/usr/lib/python3.3/site-packages/emonoda/helpers/tcollection.py", line 39, in load_from_dir
    torrents[name] = tfile.Torrent(path=file_path)
  File "/usr/lib/python3.3/site-packages/emonoda/tfile.py", line 97, in __init__
    self.load_from_file(path)
  File "/usr/lib/python3.3/site-packages/emonoda/tfile.py", line 101, in load_from_file
    return self.load_from_data(torrent_file.read(), path)
  File "/usr/lib/python3.3/site-packages/emonoda/tfile.py", line 104, in load_from_data
    self._bencode = decode_data(data)
  File "/usr/lib/python3.3/site-packages/emonoda/thirdparty/bcoding.py", line 151, in bdecode
    return btype(f_or_data)
  File "/usr/lib/python3.3/site-packages/emonoda/thirdparty/bcoding.py", line 115, in _decode_dict
    ret[key] = bdecode(f)
  File "/usr/lib/python3.3/site-packages/emonoda/thirdparty/bcoding.py", line 151, in bdecode
    return btype(f_or_data)
  File "/usr/lib/python3.3/site-packages/emonoda/thirdparty/bcoding.py", line 106, in _decode_list
    item = bdecode(f)
  File "/usr/lib/python3.3/site-packages/emonoda/thirdparty/bcoding.py", line 151, in bdecode
    return btype(f_or_data)
  File "/usr/lib/python3.3/site-packages/emonoda/thirdparty/bcoding.py", line 106, in _decode_list
    item = bdecode(f)
  File "/usr/lib/python3.3/site-packages/emonoda/thirdparty/bcoding.py", line 151, in bdecode
    return btype(f_or_data)
  File "/usr/lib/python3.3/site-packages/emonoda/thirdparty/bcoding.py", line 78, in _decode_int
    return int(_readuntil(f))
ValueError: invalid literal for int() with base 10: '5nod'

Какой диагностикой можно воспользоваться, чтобы понять причину?

Выглядит как битый торрент-файл. Попробуй посмотреть на него через ctorrent -x filename.torrent

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

Нашёл с помощью emfile битый торрент, убрал его. Теперь застряли на:

FileExistsError: [Errno 17] File exists (mode 700 != expected mode 775): '/home/lav/.cache'

Ну какое ему дело до прав на мои каталоги?

Исключения про торренты.
Дай полное исключение на .cache. Я этой проверки не писал, выглядит, как питоновый выкрутас.

Нашёл с помощью emfile битый торрент, убрал его. Теперь застряли на:

FileExistsError: [Errno 17] File exists (mode 700 != expected mode 775): '/home/lav/.cache'

Ну какое ему дело до прав на мои каталоги?

Наткнулся на битую ссылку и упал:

# I: Scanning directory /net/torrent ... 
Traceback (most recent call last):
  File "/usr/bin/emfind", line 9, in <module>
    load_entry_point('emonoda==1.9.13', 'console_scripts', 'emfind')()
  File "/usr/lib/python3.3/site-packages/emonoda/apps/emfind.py", line 197, in main
    log_stderr=log_stderr,
  File "/usr/lib/python3.3/site-packages/emonoda/apps/emfind.py", line 80, in print_orphaned_files
    all_files = build_all_files(data_root_path)
  File "/usr/lib/python3.3/site-packages/emonoda/apps/emfind.py", line 59, in build_all_files
    files[get_decoded_path(path)] = os.path.getsize(path)
  File "/usr/lib/python3.3/genericpath.py", line 49, in getsize
    return os.stat(filename).st_size
FileNotFoundError: [Errno 2] No such file or directory:

Зафиксил поведение на симлинках и добавил сообщение о битых торрентах.

На 3.4/3.5 ошибки с expected mode нет.