Предисловеие На досуге решил поинтересоваться библиотекой Bass, и в голову пришла идея написать на ней простенький плеер для ВК. Основной задачей было реализовать связку потока скачивания данных их интернета и потока Bass. Вот тут собственно и пошли проблемы с синхронизацией, учавствовало четыре потока : поток загрузки из инета, поток подзагрузки в Bass, поток самого Bass, основной поток приложения. Да и к этому всему нужно было избавиться от подлагиваний при быстром переключении песен. Что умеет 1. Организовывать свой плейлист(при этом если ссыль на песню будет потеряна - прога обновит ее автоматом) 2. Искать по ключевым словам с опцией "Только с текстом" 3. Загружать(автоматом) список друзей и загружать их плей листы 4. Автоматическая зпгрузка альбомной графики прослушиваемой песни с last.fm 5. Поддержка антикаптчи 6. Ограничение потокв на скачку аватаров 7. Эквалайзер 8. 3 типа переключения след. песни(ну как обычно в плеерах) 9. Пароль и логин можно не хранить(просто не ставить галочку "Запомнить"), прога сама куки будет обновлять. 10. Ограничение скорости загрзки(пока не сделано) Баги 1. Не понятно почему эффекты flanger и reverb можно включать, а выключать нет(Bass не реагирует) 2. Иногда при включенном повторе текущей песни - заново не прогирывается, просто встает. 3. Могут быть проблемы с синхронизацией Скрины Состав архива /Release - готовая версия /Resources - ресурсы, не загружаемые прогой(то есть зашитые в EXE ресурсы) /Source - исходный код /Source/eq_trackbar_comp - компонент треэкбара для эквалайзера /Source/playlist_comp - компонент отображения плейлиста /Source/png_lib - библиотека для PNG Как устанавливать 1. Устанавливаем компонент треэкбара 2. Устанавливаем компонент плейлиста 3. Открываем исходники ДЛЯ ТЕХ У КОГО Delphi 7 Необходимо обновить Indy. 1. Скачиваем архив, указаный ниже. 2. Если Delphi открыта - закрыть 3. Переходим в папку <Delphi>\Bin 4. Удаляем файлы : dclindy70.bpl, dclindy70.map, indy70.bpl, indy70.map 5. Переходим в папку <Delphi>\Lib 6. Удаляем все файлы начинающиеся на Id 7. Переходим в папку <Delphi>\Lib\Debug 8. Удаляем все файлы начинающиеся на Id 9. Переходим в папку <Delphi>\Source\Indy 10. Все файлы в ней удаляем и копируем туда файлы из того скаченного архива. 11. Запускаем Delphi, при загррузке и послед. работае будет спрашивать загрузить модуль который удалили(на это не обращаем внимание и всегда наживаем на Yes) 12. Открываем через Delphi файл <Delphi>\Source\Indy\dclindy.dpkw 13. Нажимаем Compile, закрываем с сохранением 14. Открываем через Delphi файл <Delphi>\Source\Indy\indy.dpkw 15. Нажимаем Compile, и Install(скорее всего будет неактивно, тогда пропускаем), закрываем с сохранением 16. Тыкаем в Delphi : Tools->Environment Options 17. Там выбираем вкладку "Library" 18. на против Library Path в поле ввода в конец добавляем ";$(DELPHI)\source\indy\Lib" без кавычек и сохраняем. 19. Все сохраняем и перезагружаем Delphi Если все сделанно правильно, то окно с ошибкой мол модуль один не нашли появиться не должно. И еще, это все делаете на свой страх и риск, все пути указывал относительные и будет 100% работать если все сделаете верно. О исходниках Исходники частями коментированны, имеется хороший(свой) модуль парсера, показано как парсить и вставлять куки(без всяких IdCookieManager'ов). Как синхронизировать с помощью критических секций и событий. Обновлять прогу наверно не буду, так что если кому нужно - улучшайте. http://zalil.ru/29922786 - архив плеера http://zalil.ru/29922827 - архив с Indy