[Delphi, Bass] Плеер ВКонтакте

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Jingo Bo, 5 Nov 2010.

  1. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Предисловеие
    На досуге решил поинтересоваться библиотекой Bass, и в голову пришла идея написать на ней простенький плеер для ВК. Основной задачей было реализовать связку потока скачивания данных их интернета и потока Bass. Вот тут собственно и пошли проблемы с синхронизацией, учавствовало четыре потока : поток загрузки из инета, поток подзагрузки в Bass, поток самого Bass, основной поток приложения. Да и к этому всему нужно было избавиться от подлагиваний при быстром переключении песен.

    Что умеет
    1. Организовывать свой плейлист(при этом если ссыль на песню будет потеряна - прога обновит ее автоматом)
    2. Искать по ключевым словам с опцией "Только с текстом"
    3. Загружать(автоматом) список друзей и загружать их плей листы
    4. Автоматическая зпгрузка альбомной графики прослушиваемой песни с last.fm
    5. Поддержка антикаптчи
    6. Ограничение потокв на скачку аватаров
    7. Эквалайзер
    8. 3 типа переключения след. песни(ну как обычно в плеерах)
    9. Пароль и логин можно не хранить(просто не ставить галочку "Запомнить"), прога сама куки будет обновлять.
    10. Ограничение скорости загрзки(пока не сделано)

    Баги
    1. Не понятно почему эффекты flanger и reverb можно включать, а выключать нет(Bass не реагирует)
    2. Иногда при включенном повторе текущей песни - заново не прогирывается, просто встает.
    3. Могут быть проблемы с синхронизацией

    Скрины
    [​IMG][​IMG]

    Состав архива
    /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
     
    #1 Jingo Bo, 5 Nov 2010
    Last edited: 5 Nov 2010
    2 people like this.
  2. CodeSender:)

    CodeSender:) Active Member

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Плагин бы написал к AIMP - жирно.
     
  3. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Есть исходники - реализуй) У меня была иная задача. Мое дело выложить.
     
    1 person likes this.