LINUX.ORG.RU

Оцените мою FUSE систему для ВК

 , , ,


1

1

Добрый день.

Была такая программа VKAudioFS, которая создавала виртуальную файловую систему с сохранённой музыкой ВКонтакте. Но после известных изменений VK API, работать она, конечно, перестала. Кроме того, VKAudioFS не работала под Windows и не хватало многих полезных функций, вроде сортировки по дате добавления.

Поэтому я решил сделать свою программу VK Music FS. Там гораздо больше функций: можно не только слушать/загружать «Мою музыку», но и искать аудиозаписи по названиям треков; автоматически добавляются ID3 теги, если их нет, есть сортировка по дате. Исходный код открыт: https://github.com/vodka2/vk-music-fs , есть пакет в AUR и AppImage.

Сам я использую свою программу каждый день, но возможно, она покажется полезной не только мне. Подскажите, как можно улучшить программу, какие функции стоит добавить. Ещё было бы здорово, если бы кто-то покритиковал код, так как я не очень хорошо знаю C++.

Ответ на: удаленный комментарий

На мой взгляд, немногие могут различать форматы или битрейты файлов, если битрейты не совсем низкие. В ВК есть и редкие аудиозаписи, которых больше нигде нет, да и просто может быть удобно прослушивать. На всё остальное, как я понял, реагировать не нужно?

vodka2 ()
Ответ на: удаленный комментарий

вк для додиков конченых
в коде используется буст и это повод его не использовать

Одни лозунги без обоснования. Нормальное явление для школьника.

ox55ff ★★★ ()
Ответ на: комментарий от entefeed

Так я и не предлагаю использовать ВК для общения или за что там сажают. И всегда можно закрыть свои аудиозаписи. Не слышал о судебных делах, если выполнены эти условия.

vodka2 ()
Ответ на: комментарий от vodka2

Ну так ушкам больно — транскодированый/низкий битрейт любой услышит и транскодированный ты не угадаешь заранее. Вк кстати ещё не транскодирует насильно в удобный для хранения формат? С точки зрения снижения стоимости логично было бы начать это делать.

Привязка к бусту действительно снижает полезность, это значит что придётся пересобирать по кд или использовать бандленный буст.

anonymous ()
Ответ на: комментарий от anonymous

Не согласен, что «любой услышит». Вроде бы аудиозаписи не транскодируются, судя по тому, что где-то даже есть теги с обложками. Насчёт boost — так можно сказать про любую библиотеку, но едва ли разумно всё делать с нуля. И почему нельзя использовать AppImage, если не хочется пересобирать?

vodka2 ()
Ответ на: комментарий от vodka2

про любую библиотеку

Не про любую, разве что про icu, но та не в пример меньше вреда несёт. Мне уже достаточно того что кеды прибили к бусту, но теперь новые версии хотя бы маскируют и не приходится пересобирать полтора пакета по 10 часов без нужды.

AppImage

ты не можешь знать, что в него напихали — не вариант

anonymous ()
Ответ на: комментарий от vodka2

Транскодируют пользователи, потому что они конченые идиоты. Ты бы удивился если узнал сколько этого вредного дерьма в интернете. Есть индивидуумы которые музыку с ютуба берут и потом ещё перекодируют — это совсем уже больным на голову надо быть, достаточно того что утуб безнадёжно херит звук.

anonymous ()
Ответ на: комментарий от vodka2

А лог какой-то ошибки не выдаёт? С чем это вообще связано, может можно привязать каким-то другим способом, типа регистрации приложения или ещё чего? Или «не работает и всё тут»? Иногда выдаёт 'Registration error', иногда 'Token was not refreshed'

anonymous ()

Попробовал опакетить, но после

%build
sed -i '/googletest/d' CMakeLists.txt
sed -i '/tests/d' CMakeLists.txt
sed -i '/<optional>/d' src/FileProcessor.h
sed -i '/<optional>/d' src/BlockingBuffer.h
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-std=c++11"
cmake --build . --target vk_music_fs
у меня закончилась магия.

Оно, по ходу, требует экспериментальное расширение библиотеки boost - «boost::di».

Такая магия, по ходу, есть только в Slackware.

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 1)

Было бы классно вынести часть с VK API в отдельную библиотеку.

Ещё вместо того, чтобы таскать с собой часть boost, не лучше ли вынести это в git submodule?

Pravorskyi ★★ ()

А что, чтобы тебя посадили за лайк теперь без fuse никак?

вк для додиков конченых

+100500

в коде используется буст и это повод его не использовать

А вот это нет. Неосиляторам замечательного буста следует помалкивать.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

но зачем нужен буст, если он изжил себя? тебе стандартной библиотеки мало и хочется приключений на жопу?

я его использую только потому что там есть готовые алгоритмы под мои задачи, лучше бы не использовал T_T особенно грустно смотреть когда его в игрушки тянут (хотя те игрушки как правило говно и от руснявых разработчиков, но я думаю это совпадение)

anonymous ()
Ответ на: комментарий от slovazap

Нет, не только. Но это не то чтобы у буста было что-то уникальное, и код в нём делится на дико сырой и протухший. Для экспериментов и быстрых прототипов пойдёт, но завязываться на него? Не знаю, потом ищи баги. Я не доверяю ему.

anonymous ()
Ответ на: комментарий от anonymous

Ошибка связана с тем, что доступ к API есть только у нескольких приложений вроде Kate Mobile, и моя программа не может выдать себя за такое приложение. Можно посмотреть трафик от смартфона или эмулятора Android с Kate Mobile и скопировать оттуда токен и User-Agent. Ещё можно попробовать получить токен с помощью https://github.com/vodka2/vk-audio-token несколькими способами.

vodka2 ()
Ответ на: комментарий от saahriktu

Не очень понятно, зачем нужно таким образом править код. Программе нужен компилятор с C++17 и optional, как и написано в readme. Кроме того, Google Test и так не подключается по умолчанию. А boost::di включён в репозиторий.

vodka2 ()
Ответ на: комментарий от Pravorskyi

Было бы классно вынести часть с VK API в отдельную библиотеку.

У меня была такая идея, но я подумал, что библиотекой никто не будет пользоваться, кроме меня. И не ясно, что делать с общими классами, видимо придётся дублировать код.

Ещё вместо того, чтобы таскать с собой часть boost, не лучше ли вынести это в git submodule?

Так и было в начале, но возникли проблемы со сборкой с PKGBUILD. Например, boost-di довольно большой репозиторий, клонировать его целиком долго, а захватить только нужный коммит, а тем более несколько файлов, как я понял, нельзя.

vodka2 ()
Ответ на: комментарий от vodka2

Программе нужен компилятор с C++17

Даже C++17? В GCC 5-й версии по дефолту C++98, и при компиляции компилятор сказал, что нужен именно C++11, хотя поддержка C++17 в этой версии тоже есть.

и optional

Это что ещё за библиотека, да ещё и с заголовочным файлом без .h? Стандартная библиотека в компиляторах с более полной реализацией C++17?

Кроме того, Google Test и так не подключается по умолчанию

Если не отключать как сделал я, то сборка релизной версии в самом начале падает с

CMake Error at CMakeLists.txt:11 (add_subdirectory):
  The source directory

    /home/saahriktu/rpmbuild/BUILD/vk-music-fs-1.0/googletest

  does not contain a CMakeLists.txt file.
...
-- Configuring incomplete, errors occurred!

А boost::di включён в репозиторий

В релизном тарболе vk-music-fs-1.0.tar.gz его нет.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Класс std::optional доступен в С++17 https://en.cppreference.com/w/cpp/utility/optional . А насчёт релизного архива ты прав, я просто внёс нужные изменения уже после «релиза», соответственно нужно загрузить исходники из master: https://github.com/vodka2/vk-music-fs/archive/master.zip

vodka2 ()

Если оно и правда работает, то твои правки крайне не помешали бы vkaudiosaver. Файловая система это конечно хорошо, но кроссплатформенный клиент с вылизанным gui кмк лучше для этих целей.

onhydro ()
Ответ на: комментарий от vodka2

Класс std::optional доступен в С++17

Однако, не во всех версиях GCC, да.

GCC 7 will include std::optional with -std=c++1z i.e. C++17.

А в GCC 5.5.0

$ g++ -std=c++17 -o optional optional.cpp
optional.cpp:4:20: фатальная ошибка: optional: Нет такого файла или каталога
компиляция прервана.
$ g++ -std=c++1z -o optional optional.cpp
optional.cpp:4:20: фатальная ошибка: optional: Нет такого файла или каталога
компиляция прервана.

saahriktu ★★★★★ ()
Ответ на: комментарий от entefeed

Даже самые слоупоки спрыгивают

Вот кстате да. Это и раньше как-то сомнительно выглядело слушать музыку с ВК.

Но сейчас же там вроде как позакрывали многое?

Не поздновато «продукт» выпустил?

fornlr ★★★★★ ()
Ответ на: комментарий от onhydro

В vkaudiosaver закрытый код, судя по его FAQ. Насчёт Boost и C++17 — вообще, хорошая идея, но я не уверен, что все используемые мной возможности C++17 есть в Boost. К тому же, на мой взгляд, C++17 не такой уж и новый стандарт, сейчас уже C++20 на подходе.

vodka2 ()
Ответ на: комментарий от vodka2

И всегда можно закрыть свои аудиозаписи.

Сложно доверять такой схеме. У меня когда-то была закрытая страница, но в один прекрасный момент такие настройки исчезли.

Не слышал о судебных делах, если выполнены эти условия.

Знаю человека, на которого завели дело за песенки с розжигом.

madcore ★★★★★ ()
Ответ на: комментарий от madcore

У меня когда-то была закрытая страница, но в один прекрасный момент такие настройки исчезли.

Ни разу не слышал о таком. И сейчас наоборот добавили такую возможность, что страница видна только тебе и друзьям.

Знаю человека, на которого завели дело за песенки с розжигом.

И у него были открыты аудиозаписи и страница ВК? Ну и в крайнем случае можно всегда сохранять сомнительные аудиозаписи из поиска сразу на диск.

vodka2 ()
Ответ на: комментарий от vodka2

Ни разу не слышал о таком. И сейчас наоборот добавили такую возможность, что страница видна только тебе и друзьям.

Не знаю, как там сейчас, но когда-то обнаружил свою страницу открытой без всяких предупреждений, с тех пор не пользуюсь.

И у него были открыты аудиозаписи и страница ВК? Ну и в крайнем случае можно всегда сохранять сомнительные аудиозаписи из поиска сразу на диск.

Скорей всего открыты, подробностей не выяснял. Дело лет 5 назад было.

madcore ★★★★★ ()

А можно это дело в aur запихать? Очень уж нужная штука. Хочется регулярно получать обновления. Мейнтейнить времени нет, но могу репортить баги. Заранее спасибо.)

Deleted ()
Ответ на: комментарий от Pravorskyi

Классы для работы с сетью типа net::HttpStreamCommon. Хотя, думаю, можно сделать так, чтобы пользователи передавали в библиотеку необходимые функции, которые бы делали HTTP запросы. Так и зависимость Boost.Asio можно убрать.

vodka2 ()

Кмк нужен ман. Ман который man. На днях постараюсь написать, но к сожалению у меня нет гита, можно просто на почту отправить архивом?

Deleted ()