Пользователь
0,0
рейтинг
20 февраля 2010 в 14:20

VKFS — Файловая система для VKontakte на основе Fuse

Не так давно на хабре (и на лепре, и еще где-то) появилась такая гифка:
image
Я посидел и подумал: «А почему бы и нет?»
Прошло некоторое время и, как я и обещал
Встречайте! VKFS — файловая система vkontakte, основаная на fuse.
Это не релиз — пока что реализована только возможность чтения собственной стены, но уже готов весь «каркас» для этого всего.
По ходу дела пишу библиотеку vklib, которая предназначена для работы с userapi. Возможно, выделю её потом в отдельный проект, а пока — это два файлика vklib.cpp и vklib.h =)

code.google.com/p/vkfs — тут можно скачать исходники через svn, а кому лень —
vkfs.googlecode.com/files/vkfs.gz — готовый бинарник.

Работает всё просто:
$ vkfs /mount/point
e-mail:
password:
your vkontakte-id:

Где /mount/point — точка монтирования, любая папка.

Зачем вводить свой vkontakte-id? Я не нашел способа с помощью userapi определить его. Может кто-то сталкивался?

В папке /mount/point/ находится всего 2 папки — Messages и My_Info.
Заходим в My_Info: там файлы Wall и AboutMe.
Из всего этого реализована только стена — Wall.
Открываем её в любом редакторе, или с помощью
$ cat Wall
Читаем и радуемся =)

Чтоб отмонтировать:
$ fusermount /mount/point -u

Библиотеки использовал curl и curlpp-обертку для curl'a в с++; и, собственно fuse. UPD А также cajun-json.

Ищу людей, достаточно пару человек, которые согласны вместе со мной заниматься этим бесполезным делом =)
Роман @Antigluk
карма
128,7
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (157)

  • +25
    Вообще креатив!!!
    • +11
      Вот только большая часть пользователей «вк» не оценят :(
      • +5
        кому надо тот оценит =)
        • –1
          Любители консоли к примеру +)
          • +10
            да причем тут консоль! это же файловая система — открывайте хоть nautilusom, хоть konqueror'ом или еще чем-то. И читайте файлы гуевым редактором.
            • +4
              Спокойней, не принижаю проделанную вами работу, просто небольшая ирония по поводу чуждости понимания тонкостей обсуждаемого предмета среднестатистическим пользователем целевого ресурса =)
            • +1
              боюсь они и слов «nautilus» и «konqueror» в большинстве своём незнают
              • 0
                кто нибудь напишет для своей девушки «vktilus» или «vkonquerror», а потом райдётся как пирожки. особенно если заработают «режимы невидимости» и «чтения чужих сообщений»
        • +47
          Голосом Жожра Милославского: «А скажите? Это и youporn можно так — примонтировать?»
          • +5
            ну… теоретически…
            • +7
              Ох зря вы это сказали…
              • +1
                кто займётся этим бесполезным делом? =)
          • +2
            А потом хвастаться друзьям: «смотрите, у меня порнухи 15 терабайт!» 8)
            • 0
              производили замеры :)?
              • 0
                Нет, просто прикинул =) Хотя, честно говоря, я бы и сам не отказался от хранилища такого размера =) Даже без содержимого %)
          • +1
            ага, причем сразу на стенку вконтакта :)))
      • НЛО прилетело и опубликовало эту надпись здесь
      • +2
        Автор — классное сочетание айтишника & пользователя вконтакте.
    • 0
      ну идея не нова, например есть (точней уже был) GmailFS — en.wikipedia.org/wiki/GmailFS
      richard.jones.name/google-hacks/gmail-filesystem/gmail-filesystem.html

      там идея такая же в основе.
  • +15
    Оно может предоставить свой музыкальный профиль… т.е. мои аудиозаписи, как папку… и подмонтировать ее?
    • +13
      На самом деле… легко!
      • 0
        Было бы очень удобно… т.к. все чаще замечаю за собой пагубную привычку слушать музыку из взадроте вконтакте со своего листа песен… как то в сети натыкался на ПО, которое давало работать с профилем as is папкой… но глючило оно… и забыл, как называется… А то залил на плеер весь плейлист… и забыл :))
        • 0
          А почему бы не скачать просто? О.о
          • 0
            файлов бывает много
            • +3
              А почему бы не скачать много файлов? О.о
              В любом случае если человек постоянно слушает свой список песен, логичнее его слушать локально, по-моему :)
              • +1
                так ведь интереснее))
                • 0
                  особенно когда безлимитка
              • 0
                По моему «рекомендации» вам просто не дадут этого сделать. Людям которым надоедает трек после 20 прослушиваний это проблема, а постоянно выкачивать то что только что нарыл в рекомендациях — убого, я бы предпочел слушать радио рекомендаций, но опять же удобного интерфейса нет.
          • –2
            Вот почему)
          • –2
            s002.radikal.ru/i197/1002/89/9f5e7b1ba3ff.png сори, ссылку потерял)
          • +1
            А зачем скачивать?
            Много файлов или мало — мне лень. Оно УЖЕ играет. Намного быстрей поставить «мои аудиозаписи» вконтакте на закладку в браузере, открывать её и нажимать на песню, чем скачивать, раскладывать по папочкам, сортировать, тратить место на винте, забивая его мелкими файлами, открывать не в три, а в тридцать три клика песню, упавшую в поддиректорию поддиректории директории в папке музыка… Зачем? :)
            • +1
              Ну, в большинстве нормальных плееров есть библиотека, там будет те же 3 клика и в очередное отключение от интернета без музыки не останешься.
              Насчет места на винте — а зачем оно вам еще? ;)
              • –2
                Значит, в вашем случае мне нужно пользоваться каким-то плеером, разбираться в его интерфейсе и делать всё то, что вы своим ответом проигнорировали (скачивать,…, сортировать) вместо того чтобы просто нажимать на кнопочки?

                Я не знаю, где и у кого бывает отключение от интернета, но даже в украинской провинции я за год суммарно был не-онлайн 2 суток. Это роутер круглосуточно работал. В Москве и того меньше. И там и там провайдеров, у которых бывают отключения от интернета, гонят с рынка ссаными тряпками. За последние полгода у меня было несколько разрывов по 1-2 минуты. Максимум.
                • +1
                  я в Днепре когда жил тоже так думал

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

                  там где я снимаю жилье только Воля, а это ппц

                  если верить вам то у меня за выходные больше отключений чем у вас за год, днс отваливается вообще потосянно, часть сайтов не доступно без всякой логики, НЕТ!!! Безлимитного тарифа!!! куча сайтов наполнено сообщениями — адрес такой-то посоветуйте инет н не воля и не ого

                  так вот сам думаю что пора завязывать слушать музыку только с вконтакта
                  • 0
                    Чесно вы меня очень удивили Киевом. Я в нем никогда не жил, только в Донецкой области, в Харькове и вот в Москве.
                    В Харькове в студенческом общежитии не было безлимита, но инет был стабилен (щас вроде у них там уже и безлимит есть, хоть и медленный и несоразмерно дорогой). В дон.обл. был как раз «ОГО» и нареканий не было (все те двое суток — это они один раз оборудование меняли на моей АТС, правда, сволочи, не предупредили, считая, что я начинаю каждый день с просмотра их сайта в качестве любимого новосного портала). В Москве — говорят, за мкадом меньше альтернатив и сразу в разы хуже скорость уже в 10км, но тут — в моем доме пять очень стабильных провайдеров с одинаковыми ценами. Вообще странно. Это окраина Киева?
                    • 0
                      окраина или нет — вопрос для меня не понятный, по меркам Киева наверное нет, но и не центр, в Днепре такую удаленность от центра я б назвал окраинной ) пр. 40-лет Октября
                      но вокруг преимущественно хрущевки, потому и с провайдерами не густо
                      Воля — самый крупный провайдер, но это не значит что он лучший ))))
                      у меня в этом месяце заканчивается акционный безлимит — что делать дальше с инетом я не знаю
                      я даже рассматриваю вариант съема другой квартиры из-за инета

                      но это мы совсем в оффтоп ушли
          • 0
            потому что плейлист обновляется: добавляются, удаляются песни.
            • 0
              В плейлист к плееру тоже придется добавлять и удалять если автор VKFS реализует поддержку музыкальных треков.
              • 0
                я так понял, что плейлист должен будет автоматически подгружаться и обновляться в случае его изменения вК. А вот закешить уже проигранные (скачаные) песни было бы хорошо. И некоторые плееры всё же умеют самостоятельно следить за обновлением папки.
              • 0
                Предлагаю автору не мелочиться и реализовать управление плейлистами mpd через файловую систему.
        • –1
          VKLife называется эта программа
          • 0
            Я не про VKLife и прочие кучи программ, которые сейчас для вконтакте… они не предоставляют профиль как ПАПКУ. Они предлагают ПОИСК и скачивание. :))
      • 0
        Такая функция будет? =) Очень нужно выкачать музыку с контакта.
        • 0
          Будет обязательно. Надеюсь что скоро.
          • 0
            Удалось? :)
    • 0
      и не только мои, а даже аудиозаписи по поиску.
      • +1
        будет выглядеть как папка с mp3 файлами, а поиск… как-нибудь реализуем. всё это дело техники, всё возможно.
        • +1
          По событию «создана папка с именем $search_query» производится поиск и папка заполняется… %)
          Крышесносящий пример использования FUSE, респект и уважуха!
          • 0
            да, например так =)
            тоже подумал как-раз о таком способе поиска) имхо самый удобный
        • +1
          Полагаю поиск можно сделать путем создание новой папки. Допустим создаю я папку The Sins of Thy Beloved в папке Music и ее название будет ни что иное, как поисковый запрос, а содержимое, которое появится при ее открытии — результат.
          • +1
            Упс, меня опередили =)
    • 0
      Кстати, насколько я помню, из userapi музыка недоступна, кроме той, что на стене :(
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Ну… Из консоли можно потом GUI сделать, благодаря таким вот энтузиастам! ))
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          зачем гуи? для системы это такая-же файловая система. проводник будет работать отлично. и ваш любимый медиаплеер будет проигрывать музыку с вашей стены
          • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Контакт будет против — это сужение рекламной аудитории
    • +2
      Дак это just for fun =)
      Сам же написал «этим бесполезным делом»
      • –2
        Похоже вы этим простым примером открыли целую веху в использовании FUSE. Неплохо бы еще в будущем не только вконтакте так подцеплять, а и другие сайты!
        • 0
          С wiki уже было раньше:)
        • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      а почему только консоль-то? насколько я понимаю суть FUSE, оно позволяет обернуть что угодно в ФС. то есть скажем Konqueror/Dolphin/Nautilus тоже должны ее увидеть? а если в fstab прикрутить, то будет автоматом маунтиться при загрузке
      • 0
        Да, вы абсолютно правы. Так что нервы с сторону — вроде как полезная штучка будет.
      • +4
        учитывая возможности FUSE таким же способом можно будет «скачать интернет» (с) :)
        • +2
          зачем качать то, что у тебя уже примонтировано?) будет /mnt/internet
  • –13
    Очень круто, да! :) Но кто будет этим пользоваться, блондинки?
    • +4
      только суровые линуксоиды — блондины
    • НЛО прилетело и опубликовало эту надпись здесь
    • –1
      как пример — комп с чистой консолью. и очень срочно нужно зайти в контакт =)
      использовать текстовый браузер или VKFS?
      Каждый выберет то, что ему удобнее.
      • +1
        текстовый браузер скорее всего есть в дистрибутиве либо PM, а вкфс врядли. и fuse ему еще нужен
      • НЛО прилетело и опубликовало эту надпись здесь
        • +3
          чего-чего?
          php это серверный язык. при чем тут браузеры
          • НЛО прилетело и опубликовало эту надпись здесь
            • 0
              Ну так о js речь тогда же! Умеют, сходу не нашел, правда, какой именно умеет это полностью, но вот:

              • 0
                If I recall correctly, there's a fork of Links that supports a subset
                (but a useful subset, mind you) of Javascript. It also supports graphics
                under svgalib and X11 (via an X11 window :)

                freshmeat.net/projects/links
                atrey.karlin.mff.cuni.cz/~clock/twibright/links
        • +6
          А какой браузер «умеет php»?
        • +2
          php умеют не браузеры, а сервера. А JS некоторые текстовые браузеры умеют.
  • +7
    Отлично! =) За креативность 5+ )
  • +1
    Поправьте: нужен не просто curl, а его обертка на C++ — curlpp.
    • +1
      да, точно. спасибо
      • 0
        А где ее взять? Опишите поподробнее, как удовлетворить зависимости бинарника.
        • 0
          google://curlpp Ну, или здесь, в крайнем случае: curlpp.org/
          • –6
            Вы действительно видите смысл давать комментарий, не содержащий ответа, к вопросу?
            Сырцы не находят boostlib. Вопрос задан автору, автор знает как ответить на вопрос полностью, вы, видимо, не знаете.
            • +2
              Давайте рассуждать логически — раз не находится boostlib, значит нужен boost.
              • –3
                Значит нужен небольшой мануал по установке. Совсем маленький. Мне пока не удалось.
        • 0
          нужно установить curl, curlpp и fuse-dev
          curl можно взять тут:
          curlpp — curlpp.org/index.php/download
          а fuse лично я нашел в репозитории — libfuse-dev и libfuse2 в убунту.
          если у вас не будет, найдете сорцы на оф-сайте.
          • 0
            да, libboost* можно тоже установить из репозитория
  • +1
    Интересная штука. А при примонтированной ФС, пользователь находится в онлайне?

    И вообще отлично было, если бы туда аудиозаписи и фото можно туда простым копированием заливать :))
    • 0
      Насчет заливать не обещаю, а вот скачивать простым копированием можно будет.
      • 0
        Ну и ладно, и то это очень полезная возможность будет.
  • 0
    В svn нет make-файла :(
    • 0
      Зато есть проект кодеблокса. Хм.
    • +1
      сейчас добавлю… неподумал
    • +1
      уже есть
  • +2
    Роман, почему ты мне не сказал про проект?)
    С радостью приму участие.
    Я люблю все неординарное =)
  • 0
    да креативненько, а пользователи всегда найдутся
  • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Я не фанат вконтакта, конечно, но… круто :) Разбить бы сообщения на стене на отдельные «файлы» и дать возможность создавать у друзей и читать/удалять у себя. Ну и прочее такое же с остальными сущностями.
    • 0
      да, идей очень много а времени ну совсем нету… поэтому и ищу кодеров)
  • 0
    Обалденно креативно!!! Возможно сам буду пользоваться. Спасибо!

  • 0
    а как его собирать? реквестирую README
    • 0
      уже есть make-файл. можно просто сделать make.
      если хотите есть просто бинарник.
  • –2
    Ждем пкгбилдов!

    Сам я давно не хочу в контакт, а вот через эту штучку как минимум попробую!
  • +4
    Даешь консольнет без гипертекста.
  • +1
    под винду и far будет плагин? :-[
    • +3
      если разве что кто-то напишет =)
      библиотека vklib открыта, так что остается только реализовать фс.
      я не знаю как это под винду делается. можно, например, как диск отдельный подключить… вобщем, это не ко мне.
      • +1
        fuse4win.4host.ru/ fuse for windowz

        а вообще забавный получился just for fun, я бы в таком поучаствовал.
        • 0
          правда? напишите на почту, может спишемся
  • 0
    Меня пока вполне устраивает w3m )
  • +4
    >Я не нашел способа с помощью userapi определить его.

    Если получать профайл и не указывать какой конкретно, то получишь свой, в котором будет искомый vk-id лежать
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    плюс вам в карму за такое дело! Нет слов. Супер!
  • +1
    Чего только не сделают в Linux!
    • 0
      Я в этом деле совсем не разбираюсь, но можно ли как-то это все собрать под win 7?
  • +3
    Ссылка на gif в шапке подверглась хабра эффекту.
    • +2
      ага, мне даже письмо от дропбокса пришло
      This email is an automated notification from Dropbox that your Public links have been temporarily suspended on account of generating excessive traffic. Your Dropbox will continue to function completely normally with the exception of Public links.

      =)
  • 0
    Самое оригинальное, что я видел за сегодняшний день уж точно. Буду пробовать-с.
  • +1
    Благодаря вам, узнал о FUSE, действительно интересная штука. Качаю биндинг к питону, буду реализовывать пару своих задумок.
  • +1
    Оригинально, но как противник соц. сект говорю «Нафиг надо»
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    А у меня отчего-то желание пилить свой велосипед возникло о_О
  • +3
    Можно я претензию напишу? Пожалуйста, релизь в downloads гуглокода пакет с сорцами, а не бинарник. У меня в арче не завелось из за несовпадений версий curlpp. Спасибо, жду пакета с сорцами для написания пкгбилда.
    • 0
      А сделать svn-PKGBUILD?
      • +1
        уже залил. Не собирается правда у меня. Проверьте кто-нибудь.
        А насчет src-пакетов — это хороший тон :)
    • 0
      выложил
      • 0
        только пакет делать… там особо функционала то нет)
        • 0
          Ну да, оно даже не собирается =) отписал баг на гуглокод.
  • +1
    получить id профиля можно сделав запрос профиля (act=getprofile) без указания id, в результирующем массиве будет id.
    • 0
      о, спасибо. странно что этого в мануале не написано.
      • 0
        Мануал по UserAPI вообще очень мутный. я сейчас достаточно крупный проект делаю на базе его — и могу сказать что там много мелочей недокументированных, некоторые структуры вообще себя черти как ведут…
  • НЛО прилетело и опубликовало эту надпись здесь
    • +3
      А вот если
      rm -rf vkontakte
      До отмонтирования?
      • 0
        скажет «Не реализовано» =)
  • +1
    а можно ли встроить эту штуку в гном? ну что бы в трее появлялись сообщения что тебе пишут на стене
    или плагином к Empathy, а музыку из профиля в Rhythmbox так же плагином
    и календарь событий из ВКонтакта в Evolution
    хочухочухочу
  • 0
    На самом деле id вообще можно игнорировать. Попробуй его просто не указывать в запросах. (игнорь id=блаблабла).
  • 0
    А еще есть MacFUSE, с этой «игрушкой» было бы совсем на Маке весело (аплоад фоток, например).
  • 0
    А можно нескромную просьбу — бинарник под ubuntu 9.10?
  • +1
    Респект.
    Кажется, благодаря Вам спамеры контакта вскоре смогут использовать для своего грязного дела банальные шелл-скрипты и команду echo :)
    • 0
      все имеет положительную и отрицательную стороны
  • 0
    Еще бы подобную FS для хабра:
    блоги = папки
    топики = документы (TXT или PDF, в зависимости от настроек).
  • 0
    Сделал twitter для vkfs — следите за обновлениями!
    https://twitter.com/vkontaktefs
    • 0
      В который раз убеждаюсь, что не быть программистом — плохо. Знаю php (средненько) и админ (неплохой). Возьмете? :)
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Самое главное: можно будет видить музыку со стен пользователей как mp3 файлы?
    • 0
      ага. и не только со стен.
      сегодня доделаю чтоб свои фотографии отображались в папке /My_Info/Photos
      • 0
        main.cpp: In function ‘int vkfs_read(const char*, char*, size_t, off_t, fuse_file_info*)’:
        main.cpp:363: error: pointer of type ‘void *’ used in arithmetic

        как избавиться от этой ошибки?
        • 0
          у вас видимо gcc 3.1, а я пишу в 4.4.1
          нужно приводить тип (void*) к (char*)
          я изменил, сейчас залью рев.16, там будет.
  • 0
    А где взять libcurlpp.so.0? curlpp установил отсюда — curlpp.org/index.php/download, но библиотеки нет.
    • +1
      линк с /usr/local/lib/libcurlcpp.so в /usr/lib/ сделай
  • 0
    Вы — маньяк!
  • 0
    как продвигается монтирование музыки как каталога?)
  • 0
    а tail -f wall.txt будет работать?
    • 0
      Попробуйте =)
      думаю да.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.