Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Торренты + AS3 (http://www.flasher.ru/forum/showthread.php?t=133457)

zakatnov 05.12.2009 22:37

Торренты + AS3
 
Здравствуйте, хотелось бы узнать есть какие-нибудь готовые библиотеки для работы с торрент файлами(редактирование, создание), если это конечно возможно :)

zurkis 05.12.2009 22:46

ну а гугл что говорит по этому поводу?

zakatnov 06.12.2009 01:23

предлагает скачать Adobe Flash через торренты бесплатно :)

etc 06.12.2009 12:34

Ищите спецификацию формата torrent и вперед.

zakatnov 06.12.2009 14:21

да находил, но ведь проще работать с готовым классом, правильно? :)
и ИМХО такой мне кажется уже есть

bicubic_bublic 07.12.2009 10:55

гугла на вас мало...
вот реализация на JScript.. http://wiki.theory.org/JScript:_Conv...ipt_dictionary
немного портировать и получим то что надо
Код AS3:

/* 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:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.