![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2009
Сообщений: 43
|
Здравствуйте, хотелось бы узнать есть какие-нибудь готовые библиотеки для работы с торрент файлами(редактирование, создание), если это конечно возможно
![]() |
|
|||||
|
Регистрация: Nov 2008
Адрес: Атланта
Сообщений: 1,271
|
ну а гугл что говорит по этому поводу?
__________________
Пока я жив, Вы горем обеспечены |
|
|||||
|
Регистрация: Apr 2009
Сообщений: 43
|
предлагает скачать Adobe Flash через торренты бесплатно
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Ищите спецификацию формата torrent и вперед.
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 43
|
да находил, но ведь проще работать с готовым классом, правильно?
и ИМХО такой мне кажется уже есть |
|
|||||
|
Banned
[+4 25.09.09]
[+1 12.11.09] [+4 12.12.09] Регистрация: Sep 2009
Сообщений: 231
|
гугла на вас мало...
вот реализация на JScript.. http://wiki.theory.org/JScript:_Conv...ipt_dictionary немного портировать и получим то что надо /* Written by Sergej Benilov <sergej.benilov@googlemail.com> */ function parseTorrentFile(filename) { var ForReading = 1; var fso_in, infile; var cont_pos = 0; var ch; var Stack = new Array(); var StackOfKeys = new Array(); var DictKeyExpectedFlag = false; var MainDict; var tmp; var StrLength = new RegExp("(\\d*?):","gim"); var Int = new RegExp("i(\\d*?)e","gim"); /* open torrent file as ASCII */ fso_in = new ActiveXObject("Scripting.FileSystemObject"); infile = fso_in.OpenTextFile(filename, ForReading, false, 0); /* read in contents of torrent file */ var contents = new String(infile.ReadAll()); do { ch = contents.charAt(cont_pos); switch (ch) { case 'd': DictKeyExpectedFlag = true; tmp = new ActiveXObject("Scripting.Dictionary"); if (MainDict == undefined) {MainDict = tmp;} Stack.push(tmp); cont_pos++; break; case 'l': Stack.push(new Array()); cont_pos++; break; case 'e': tmp = Stack.pop(); if (Stack.length > 0) { if (Stack[Stack.length-1].constructor == Array) { /* if there is a list on the top of stack, add popped element to it */ Stack[Stack.length-1].push(tmp); } else { /* there is a dictionary on the top of stack, add popped element to it */ Stack[Stack.length-1].Item(StackOfKeys.pop()) = tmp; DictKeyExpectedFlag = true; } } cont_pos++; break; case 'i': /* read in number */ Int.lastIndex = cont_pos; Int.exec(contents); /* add number to list */ if (Stack[Stack.length-1].constructor == Array) { Stack[Stack.length-1].push(parseInt(RegExp.$1)); } /* add number to dictionary */ else { Stack[Stack.length-1].Item(StackOfKeys.pop()) = parseInt(RegExp.$1); DictKeyExpectedFlag = true; } cont_pos = contents.indexOf("e",cont_pos) + 1; break; default: /* read in string */ StrLength.lastIndex = cont_pos; StrLength.exec(contents); tmp = contents.substr(contents.indexOf(":",cont_pos)+1,RegExp.$1); /* add string to list */ if (Stack[Stack.length-1].constructor == Array) { Stack[Stack.length-1].push(tmp); } /* add string to dictionary */ else { if (DictKeyExpectedFlag) {Stack[Stack.length-1].Add(tmp,""); DictKeyExpectedFlag = false; StackOfKeys.push(tmp); } else {Stack[Stack.length-1].Item(StackOfKeys.pop()) = tmp; DictKeyExpectedFlag = true;} } cont_pos = contents.indexOf(":",cont_pos) + 1 + parseInt(RegExp.$1); } } while (Stack.length > 0); infile.close(); return MainDict; } |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|