Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Работа над сайтом > DHTML/JS/CSS

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 18.08.2003, 22:30
realMakc вне форума Посмотреть профиль Отправить личное сообщение для realMakc Найти все сообщения от realMakc
  № 1  
realMakc
 
Аватар для realMakc

Регистрация: Oct 2002
Сообщений: 284
Отправить сообщение для realMakc с помощью ICQ
Question mp3 indexing

Короче, кропаю СиДиШелл к мп3-коллекциям. Оный должен быть не зависим от файлов, и, соответственно, читать ИД3 на лету или что-нить в духе... пока есть код (JS в HTML-e)типа

Код:
processNextFile = function()
{
 // procedure HDD timing: 1.7 sec per ~4MB file

 if(!mp3fc.atEnd())
 {
  var mp3_fn = mp3fc.item().name.toString();
  var id3pos = mp3fc.item().size - 8*16;
  var stream = mp3fc.item().openAsTextStream(1, 0);
      stream.Skip( id3pos );
  var id3tag = stream.Read( 3*16 );
      stream.Close();

  var id3sign   = id3tag.substr(0, 3);
  var id3title  = id3tag.substr(3, 2*(16 - 1));
  var id3artist = id3tag.substr(2*16);

  progressbar.FrameNum = 100*mp3i / mp3filesTotal;
  progresstxt.value = "Indexing file "+mp3i+" of "+mp3filesTotal;

  // include only files with ID3
  if(id3sign == "TAG") window.m3ufiles[window.m3ufiles.length] = new m3uEntry(id3artist, id3title, mp3Folder +"\\"+ mp3_fn, window.m3ufiles.length - 1);

  mp3fc.moveNext(); mp3i++; setTimeout("processNextFile()", 100);
 }
 else onIndexComplete();
}

......

var mp3FolderName = "mp3"; // name of folder in parent folder

var currentFolder = window.location.pathname;
    currentFolder = currentFolder.slice(1, currentFolder.lastIndexOf("\\"));
var mp3Folder = currentFolder.slice(0, currentFolder.lastIndexOf("\\")) + "\\" +
    mp3FolderName;

var FileSystemObj, mp3files, mp3filesTotal, mp3i, mp3fc;

try
{
    FileSystemObj = new ActiveXObject("Scripting.FileSystemObject");
    mp3files = FileSystemObj.GetFolder(mp3Folder).files;
    mp3filesTotal = parseInt(mp3files.Count.toString()); // loose 'Count' reference
    mp3i=1; mp3fc = new Enumerator(mp3files);

.........
ну, там оная функция вызывается, прогрессбар апдейтится, и т.п.

Проблема в stream.Skip( id3pos ); – эта фигня ЧИТАЕТ файл, вместо того чтобы передвинуть указатель.

Вопрос: подскажите способ ускорить, ясен день, что ж ещё...

Жаба-аплеты предлагать сюда: arse@mail15.com

Создать новую тему   Часовой пояс GMT +4, время: 05:57.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:57.


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