LINUX.ORG.RU

CLI-клиент для обмена сообщениями на вконтактике (зацените)

 , , ,


1

2

всем привет! предыстория проекта: я слишком Ъ, чтобы ходить на этот их вконтактик. но есть некоторые люди, которые упорно не признают никаких нормальных видов связи (есть телефон, но это еще хуже убожество). а в этот школодром как зайдешь - вместо того, чтоб написать кому надо, тебе с порога предлагают посмотреть тонну смешных картинок, вступить в какое-нибудь говно и так далее...

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

вот так и вышло. разобрался, поборол и в итоге набыдлокодил. на баше, ибо больше нифига не знаю))

интерфейс fdisk-подобный - выдает список команд или пунктов по номерам, а юзер выбирает, чего ему надо, ну и далее по менюшкам...

умеет получать сообщения (а также отвечать, удалять, помечать прочитанными), выводить список друзей и выбранному человеку писать сообщения, выводить список онлайн-людей и опять же им писать. а больше нафиг ничего и не надо))

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

пример работы (многабукаф):

unread messages: 0

enter a command. list of available commands:
f|friends o|online m|messages h|help a|advanced q|quit
>a

enter a command. list of available commands:
m|myself a|api <method> <params> h|help q|quit
>m

sending message to: димон *** (203****23)
enter your text, type 's' or 'send' on a separate line to send,
'q' or 'quit' to cancel
--------------------------------------
test
me
s
sent successfully, message id 14872

enter a command. list of available commands:
f|friends o|online m|messages h|help a|advanced q|quit
>m
unread messages: 1
only 1 unread message:

[0] димон *** 2014-09-15 15:23:59
test
me

choose an action for current message:
m|markAsRead r|reply d|delete q|quit
>d
delete this message? [Y/n]  
message 14872 was deleted successfully

enter a command. list of available commands:
f|friends o|online m|messages h|help a|advanced q|quit
>m
unread messages: 0
no unread messages!

enter a command. list of available commands:
f|friends o|online m|messages h|help a|advanced q|quit
>q
bye!

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

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

скачать побетатестить да поковырять можно здесь: https://sourceforge.net/projects/vk-api-cli/files/

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

все проверено на уровне «у меня все работает». если какие грабли будут - постараюсь разобраться.

из требований - curl да grep-sed-coreutils, и всего делов.

за парсинг xml с помощьб grep/sed сильно тапками не пинайте - я смотрел всякие готовые консольные тулзы и че-то пришел к выводу, что прогрепать один-два тега и вытащить из них значение - как-то проще и понятнее. к тому же, такая конструкция понятна всем и предсказуема ровно настолько, насколько предсказуем grep на простейших регэкспах, т.е. почти всегда. плюс пофиг на кривые хедеры и прочую муть.

ах да, код по WTFPL)) багрепорты-пожелания-критика-помощь и всяческий другой фидбэк приветствуется, по ссылке написано, куда писать.

ЗЫ. вконтактик не нужен. баш не нужен. школоподелки на баше для писания на вконтактик не нужны просто в космическом масштабе)))

Контактом не пользуюсь, но те кто этим пользуется думаю оценят по достоинству.

w1nner ★★★★★
()

offtop

Нафига так писать
email: dimas000{at}ya{dot}ru jabber/xmpp: dimas000{at}jabber{dot}ru


АААА!

И исходников не нашел

uspen ★★★★★
()
Последнее исправление: uspen (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

В какой строчке ты сливаешь пароли пользователя на свой сервак? :)

ну как можно быть таким ленивым? в 42-й, очевидно же! правда, пока что для этого требуется пропатченный /etc/hosts, что заслал бы это дело через какую-нибудь проксю, которая не забудет закэшировать нужное)) но если очень хочется - можешь через тот же curl на фтп выкладывать, например

Нафига так писать

для спамороботов. слава спамороботам!

И исходников не нашел

исходников баш-скрипта?)

PerdunJamesBond
() автор топика
Ответ на: комментарий от teamfighter

Дооо. Очередное ненужно.

ненужно, написанное на ненужно, для ненужно, я бы даже сказал

PerdunJamesBond
() автор топика

Нахрен баш, взял бы какой-нибудь язык программирования да и написал бы морду на ncurses. Ну и заодно не пришлось бы xml регулярками парсить.

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

нормально, но почему не github?

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

Нахрен баш, взял бы какой-нибудь язык программирования да и написал бы морду на ncurses

какой-нибудь надо еще выучить. для поделок для собственных нужд пока баша хватает. да, местами это онанизм, но учить какие-нибудь щи пока нет ни стимула, ни времени.

нормально, но почему не github?

я отстал от жизни и не слежу за модой))) да просто сорцефорж уже знаком и вполне адекватен, плюс гит разводить для всякой фигни не очень-то и надо, проще раз в сто лет файло по фтп закинуть (sf дает sftp-доступ, годнота же)

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

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

скриптота как-то проще, не надо перекомпилять по сто раз

PerdunJamesBond
() автор топика

в новой версии:
- починена функция online(), кажущая список другов онлайн (че-то там апи, по ходу, поменялось, в xml-ответе убрали один тэг, или я чего протупил?)
- она же несколько усоврешенствована, как я и собирался - теперь возвращаемые friends.getOnline айди собираются в кучу и для них запрашиваются имена через users.get (раньше для каждого id вызывалась get_name_by_uid(), т.е. на каждого юзера слался отдельный апи-запрос, теперь все получается за один запрос, а потом уже парсится, см. комменты)
новый файл на старом месте, в корне. старая версия в своей папке

PerdunJamesBond
() автор топика

Спасибо за труд, но я лично использую vkfox - дополнение для лисы (есть для хрома), дает мне возможность быть невидимым в ВК, видеть друзей, вести переписку, даже картинки показывает (не все правда, но это мелочь), учитывая что лиса запущена 90% времени, то очень полезно. Советую, если попробуете отпишитесь, любопытно мнение.

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

не пользуюсь ни жырнофоксом, ни хромым. а если и так все время открыт браузёр, то проще через сайт ходить, не?
а что за картинки? аватарки-то?
терминал же запускается мгновенно и не требует мышиной возни (не люблю мышь) - поэтому лично мне проще три буквы набрать с клавы.
что до «невидимости» (сама идея странная, ну да ладно), то при работе через апи юзер тоже не отмечается как онлайн, для этого надо специально вызывать setOnline (не хочешь - не вызывай), так что это не фича, а наоборот, как бы ее отстутсвие)))

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

и аватарки так же, и картинки в целом: пресланные например. Ну невидимость просто как фича такая, каждому свое, кому терминал - кому невидимость)

mul4 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.