Просмотр полной версии : Торренты + AS3
zakatnov
05.12.2009, 22:37
Здравствуйте, хотелось бы узнать есть какие-нибудь готовые библиотеки для работы с торрент файлами(редактирование, создание), если это конечно возможно :)
ну а гугл что говорит по этому поводу?
zakatnov
06.12.2009, 01:23
предлагает скачать Adobe Flash через торренты бесплатно :)
Ищите спецификацию формата torrent и вперед.
zakatnov
06.12.2009, 14:21
да находил, но ведь проще работать с готовым классом, правильно? :)
и ИМХО такой мне кажется уже есть
bicubic_bublic
07.12.2009, 10:55
гугла на вас мало...
вот реализация на JScript.. http://wiki.theory.org/JScript:_Converting_a_torrent_file_to_a_JScript_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;
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.