понедельник, 2 мая 2011 г.

w3crapcli — работаем с веб-сервисами из терминала

Эра Web 2.0 принесла нам множество чудесных сервисов с соответствующей степени ужасности интерфейсами. Пользователи вынуждены использовать сайт так, как им это навязывают разработчики — вы не можете сохранить видео из ВКонтакте, чтобы просмотреть его любимым проигрывателем; вы не имеете права скачать всю главу манги одним кликом и почитать её в comix — можно только просматривать постранично в веб-интерфейсе… Примеров много, а выход один — разрабатывать утилиты, позволяющие избавиться от ограниченности предлагаемых интерфейсов. Именно этим и занимаются контрибьюторы проекта, названного w3crapcli — WWW Crap CLI.

На официальной страничке проекта так и написано:
This is an attempt to facilitate the unbearable PAIN while using modern web2.0ish wonders by providing command line interfaces for them.
Впрочем, w3crapcli не зациклен на одних только неудобных интерфейсах — проект содержит также утилиты для работы с google.com, translate.google.com, hpaste.org и многими другими. Некоторые утилиты можно использовать вместо фортунок (например, творчески переосмысленный скрипт muhas'а, предназначенный для получения рандомных фраз с fucking-great-advice.ru), а некоторые — как часть других скриптов (например, htmldecode, превращающий вещи вроде «—» в «—»).

Написано это добро на всём, что попадалось под руку — BASH, Perl, POSIX Shell, даже Haskell. Любители головоломок по достоинству оценят манеру написания кода Сергея Алирзаева, создателя проекта: здесь вам и однобуквенные переменные, и длиннющие однострочники… :)

Большинство кода распространяется под DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE — очень простой лицензией, которая, как ясно из названия, позволяет вам абсолютно всё. Код же, написанный вашим покорным слугой, лицензирован под моей любимой 3-clause BSD License.

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

P.S. Прошу прощения перед читателями за столь длительное затишье. Я не бросил блог, меня не украли марсиане — просто не было повода написать. Так что, как говорится, stay tuned — подпишитесь на RSS-ленту, она не даст вам прозевать следующие посты ;)

Копируете статью — поставьте ссылку!

15 комментариев:

terrakot комментирует...

дык и подписались :)

terrakot комментирует...

А вот получить через git не получается. Завершается с ошибкой

error: Couldn't get http://w3crapcli.tk/git/HEAD for HEAD
transfer closed with outstanding read data remaining
got 2f600f93e8b43e219f147be952a14c6953aea852
walk 2f600f93e8b43e219f147be952a14c6953aea852
got 173c3138679cab36744bd1d444af0dfaa104e849
got e33684d3e47808e3898730d5d04351bf5441982a
walk e33684d3e47808e3898730d5d04351bf5441982a
got abdcb8ee0a06750b01d86f5cb9e5a596ee82eef6
got 84b61105e773616131e4ced160b7ca66304a978c
got 3f748617f5c3bc42096858c5c2466f84068fb5b7
got cb33446d5c7c4a5481c1bd9846be74020fd103ed
error: transfer closed with outstanding read data remaining (curl_result = 18, http_code = 200, sha1 = 3ef83e44b4eb04edf5273404e7d1b0d8c97f89ff)
Getting pack list for http://w3crapcli.tk/git
got bc912151a106c600690b03cd79865b5b160abad5
got 3dc6e2ea4a42934b7da46a6c69584270e33c1a7b
got dce1d79e2e01195b31f02edc1be2fe85ca5ecf04
error: transfer closed with outstanding read data remaining
Getting alternates list for http://w3crapcli.tk/git
got f39ced86927787bc1ae2852f49b89de7a3ec1c3e
got 4727122243874e67f04024e8d68d998647aacbdb
got 17ed4d5798e7cd5c688f0b8fcc55001eacc25e35
got e48321ca335432742c1df1d6ae16268106729e94
got eb8c21789305cc0a76ba27116d16226ec23426d7
got abaffcdf506f5331012b9b556077a1794bdb71c3
got 97807a7ad4384b3cd4a08bdcfc41f70b16eb3b31
got e4afab0b3b68d08d850d717841351efb7eece4b5
error: Unable to find 3ef83e44b4eb04edf5273404e7d1b0d8c97f89ff under http://w3crapcli.tk/git
Cannot obtain needed tree 3ef83e44b4eb04edf5273404e7d1b0d8c97f89ff
while processing commit e33684d3e47808e3898730d5d04351bf5441982a.
fatal: Fetch failed.

galaxycitizen комментирует...

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

Minoru комментирует...

terrakot:
А вот получить через git не получается. Завершается с ошибкой
Только что проверил — у меня всё работает. А не пробовал с зеркала клонировать?

galaxycitizen:
Не подскажите как этим месивом пользоваться?
Пока что способ разобраться только один — читать код. Мои скрипты (anymanga.com, readmanga.ru) понимают ключик -h, по которому показывают краткую справку.

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

Анонимный комментирует...

Проект полностью оправдывает своё название. Гавно гавном.
btw а как же это все такие белые и пушистые линупсоеды способствуют нарушению законов РФ и лиц соглашений с соответствующими ресурсами, а заодно и убивают эти ресурсы тем что приходят на них только чтобы сцылку заграбастать.

Анонимный комментирует...

Это самое, гаспадин анимещнег, исправь ссылочки в статье, а то фф не знает такого протокола как `htp'

virens комментирует...

@Minoru комментирует...
Пока что способ разобраться только один — читать код.
Шурик, это же не наш метод (с)
Народ (типа я и Легион Анонимусов выше) требует продолжения банкета - в смысле, приведения хоть парочки примеров. А то оно и в самом деле crap. Особенно вот после этого:

Написано это добро на всём, что попадалось под руку — BASH, Perl, POSIX Shell, даже Haskell.

Я на эту тему смешную историю вспомнил. Был у меня длинный и унылый пост по Doxygen, в котором Доксиген парсил Матлабовские скрипты с помощью перлового костыля, и, дёргая ЛаТеХ, делал документацию. Но это ещё не всё: я долго искал, как туда вставить библиографию. Нашёл какой-то левый академический проект французов. После долгих попыток выторговать у них скрипт по емайлу, получил от них ответ: скрипт написан на Ocaml и дёргает BiBTeX, парся вывод приблудой на питоне... Я им в сердцах ответил: "чё ж на Окамле-то? Давайте уж на Брейнфаке, чё уж там..." :-)

Мои скрипты (anymanga.com, readmanga.ru) понимают ключик -h
Так ты, оказывается, ещё и автор!? А что ж не привёл тогда примеров использования своих же скриптов? Народ требует экшена! :-)


@Анонимный комментирует...
Проект полностью оправдывает своё название. Гавно гавном.
Анонимус верен себе и беспощадно рубанул с плеча горькую правду. На 150% согласен: без документации оно не взлетит.

а как же это все такие белые и пушистые линупсоеды способствуют нарушению законов РФ
Анонимус, Мелкософт точно так же клало с прибором на антимонопольный закон в США и в мире. И ничего, вон тоже белые и пушистые. Слышал, что они вон Google засудить хотят - ирония ведь! - по антимонопольному закону. Дескать, конкурировать с Гуглом мы не можем, ибо бангалорские мартышки такое не умеют, хоть напакостим...

Minoru комментирует...

Я вижу, большой ошибкой было не уточнить, что этот пост не является публичным релизом проекта или чем-то вроде того. Мне просто подумалось, что w3crapcli достаточно полезен, чтобы о нём можно было рассказать другим. Да, кодовая база представляет собой какое-то месиво, о документации пока что приходится только мечтать — c'est la vie, ребята. Всё открыто, кому не лень — помогайте.

Ну-с, а теперь поотвечаем на выпады и конструктивную критику :)

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

Ответственность за использование все равно несёт пользователь. Не хочешь нарушать EULA — не надо, мы тебя не просим и не заставляем.

Кроме того, не все пользовательские соглашения запрещают использование каких-то сторонних приложений (ReadManga, например; их EULA здесь). Более того, на некоторых ресурсах соглашений нет вообще (например, на anymanga — то ли и правда нет, то ли я просто не нашёл).

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

Если хочешь, добавь опции скачивания рекламы — тогда и сайт будет доволен (с его стороны это смотрится как полноценный заход), и ты тоже (и контент желанный получил, и сайту вреда не нанёс). Та самая do-ocracy, так часто упоминаемая в рассылках Debian.

Анонимный
Это самое, гаспадин анимещнег, исправь ссылочки в статье, а то фф не знает такого протокола как `htp'

Спасибо, пофиксил!

virens
@Minoru комментирует...
> Пока что способ разобраться только один — читать код.
Шурик, это же не наш метод (с)
Народ (типа я и Легион Анонимусов выше) требует продолжения банкета - в смысле, приведения хоть парочки примеров.


Понимаешь, w3crapcli — сборная солянка, поддерживаемая несколькими энтузиастами. Нет никаких coding guidelines, никаких стандартов вообще — каждый пишет так, как хочет. Я, конечно, могу показать, как работают мои скрипты, да только толку от этого? — все равно ведь скрипты для ВКонтакте, к примеру, имеют совершенно иной интерфейс.

А то оно и в самом деле crap. Особенно вот после этого:

Написано это добро на всём, что попадалось под руку — BASH, Perl, POSIX Shell, даже Haskell.


Что, если несколько языков смешать, то сразу crap? =(

История твоя смеха почему-то не вызывает — напротив, французы эти правы. На чём им удобно было писать, на том и написали. У них же не было цели создать систему, которую может поддерживать любой только что доучивший Си второкурсник? Ну и всё.


@Анонимный комментирует...
>Проект полностью оправдывает своё название. Гавно гавном.
Анонимус верен себе и беспощадно рубанул с плеча горькую правду. На 150% согласен: без документации оно не взлетит.


Ну, тут пока что не финальный запуск, а так, ранние предполётные испытания…

А документаци будет, да. Someday :)


Спасибо за комментарии. Анонимусу, конечно, не хватает вежливости и аргументов, ну да ладно, переживём :)

virens комментирует...

@Minoru

Понимаешь, w3crapcli — сборная солянка
Это-то я понимаю, просто хочется, чтобы оно выглядело чуть менее красноглазо :-)

Нет никаких coding guidelines, никаких стандартов вообще
Это не есть хорошо. Вот даже у меня в симуляторе они есть. Хотя я разрабатываю это один и для максимум двух человек. Гайдланы, документация и структура показывают класс программиста. Этому нужно когда-то учиться...

Я, конечно, могу показать, как работают мои скрипты, да только толку от этого?
От этого пост станет лучше. Серьёзно.

Что, если несколько языков смешать, то сразу crap?
В общем да, красноглазый зоопарк. Один кусок требует питон 2.6, второй скрипт - питон 2.8, третий не хочет работать на текущей версии перла, четвёртой приблуде Окамль подавай :-) Crap as it is.

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


А документаци будет, да. Someday :)
Зыс минз нэвэ :-) По себе знаю: если доки не писать сразу, то не напишешь никогда. А потом очень нужный скрипт, который "да-блин-ну-всё-понятнож-тут-написано", перестаёт работать. И никто не знает почему. Доков нет, комментариев тоже, автор помер или свалил на другой континент :-)

Кстати о доках. Хорошо, когда их написание хоть сколько-нибудь весело. Например, мне нравится, как выглядят доки от Doxygen. С ним играться хорошо. И доки так писать не слишком лениво. Присмотрись к доксигену, Минору. Оно айс :-)

Minoru комментирует...

Я, конечно, могу показать, как работают мои скрипты, да только толку от этого?
От этого пост станет лучше. Серьёзно.


И из рекомендации потенциально интересного проекта — go check it out by yourself! — превратится в описание интерфейса моих самопальных велосипедов :(

Что, если несколько языков смешать, то сразу crap?
В общем да, красноглазый зоопарк. Один кусок требует питон 2.6, второй скрипт - питон 2.8, третий не хочет работать на текущей версии перла, четвёртой приблуде Окамль подавай :-) Crap as it is.


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

А документаци будет, да. Someday :)
Зыс минз нэвэ :-)


Шит^WМираклз хэппэнс. Закоммитил сегодня README для одного из своих поделий, сейчас и для второго напишу.

Присмотрись к доксигену, Минору. Оно айс :-)

Для такого проекта это огромный-преогромный ice, то есть айсберг :) Однострочники в Doxygen документировать — это моветон.

bezgubov комментирует...

Вы бы хоть написали, что нужно чтобы работало, вот например в vesti.ru используется js, установил Rhino 1.7 release 1 2008 08 16, то есть то что мне предложил debian и нифига не работает :(

Minoru комментирует...

bezgubov, лично я при разработке использую spidermonkey-bin — поставь его, потесть. Если все равно не будет работать, глянь, кто автор скрипта (с помощью git log имя_файла, например) и напиши багрепорт.

@posleobedaus комментирует...

репу склонировал, а офсайт лежит, эх.

Minoru комментирует...

@posleobedaus, были проблемы с сервером, на котором раньше хостились сайт и репозиторий. Когда сервер сломался, репозиторий перенесли на repo.or.cz, а сайт так никуда и не приткнули ☹

Minoru комментирует...

Оказывается, сайт переехал на новый хостинг

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.

 
Blogger logo Debian logo Creative Commons License FeedBurner Subscribers Counter