llivejo: (Default)
llivejo ([personal profile] llivejo) wrote2010-02-19 11:10 am

в помощь сидеру

Написал питоновский скрипт, который заменяет torrents.ru на rutracker.org внутри бинарных торрент-файлов.

Лежит здесь: retr.py (2Кб, 53 строки кода). Импортирует модуль bencode из bittorrent или bittornado.

Перекодировал свои 150+ файлов, полет нормальный. Под Windows не проверял пока не победил тоже заработало.

Upd. Совместно с [livejournal.com profile] nepilsonis добавили перекодирование переменных comment и publisher-url

Upd.2 Cкомпилил py-installer'ом windows-версию, тех кому лень поставить Питон целиком. Потребуется Python26.dll, 2.0MB, и собственно retr.exe, 646KB. Работает только в консоли/терминале/или как там он называется в винде.

[identity profile] wolf1221.livejournal.com 2010-03-08 05:47 am (UTC)(link)
+5cents (retracker.local УЖЕ может быть добавлен, и существует довольно много торрентов с кучей элементов в announce-list). Python я тоже не особо знаю. Извиняюсь за С-змы. --- retr.py.old.py 2010-03-08 08:30:07.000000000 +0300 +++ retr.py 2010-03-08 08:44:40.000000000 +0300 @@ -44,9 +44,21 @@ f = open(infile, "rb") meta = do_test_chksumfile(f) f.close() - newtracker = retrack(meta['announce']) - meta['announce'] = newtracker - meta['announce-list'] = [[newtracker], ["http://retracker.local/announce"]] + meta['announce'] = retrack(meta['announce']) + local_present = 0 + try: + newtracker = [] + for item in meta['announce-list']: + if 'retracker.local' in item[0]: + local_present = 1 + newtracker.append([retrack(item[0])]) + except KeyError: + newtracker = [meta['announce']] + + if not local_present : + newtracker.append("http://retracker.local/announce") + + meta['announce-list'] = newtracker retrack_key('comment', meta) retrack_key('publisher-url', meta) newtorrent = infile + ".tmp"

[identity profile] wolf1221.livejournal.com 2010-03-14 03:32 am (UTC)(link)
Done.
--- retr.py.old.py	2010-03-08 08:30:07.000000000 +0300
+++ retr.py	2010-03-08 08:50:09.000000000 +0300
@@ -44,9 +44,21 @@
             f = open(infile, "rb")
             meta = do_test_chksumfile(f)
             f.close()
-            newtracker = retrack(meta['announce'])
-            meta['announce'] = newtracker
-            meta['announce-list'] = [[newtracker], ["http://retracker.local/announce"]]
+            meta['announce'] = retrack(meta['announce'])
+            local_present = 0
+            try:
+                newtracker = []
+                for item in meta['announce-list']:
+                    if 'retracker.local' in item[0]:
+                        local_present = 1
+                    newtracker.append([retrack(item[0])])
+            except KeyError:
+                newtracker = [meta['announce']]
+
+            if not local_present:
+                newtracker.append("http://retracker.local/announce")
+
+            meta['announce-list'] = newtracker
             retrack_key('comment', meta)
             retrack_key('publisher-url', meta)
             newtorrent = infile + ".tmp"