Как стать автором
Обновить

Читаем подзамочные записи Livejournal.com в Google Reader

Управление медиа
До появления Google Reader я активно читал френд-ленту в Livejournal.com. А потом появился habr. А потом куча интересных standalone блогов.
Постепенно greader стал основным инструментом чтения новостей. А с открытием Yahoo Pipes качество моих лент значительно возросло.
Pipes позволили отфильтровать несколько лент только по интересующим меня топикам, позволили заполнить поле description в тех лентах, где авторы по каким-то причинам не стали их заполнять (новости с сайта IRN.ru, лента Компьютерры), и многое другое.

Но была в бочке меда и ложка дегтя. Ни Pipes, ни Google Reader не умеют делать digest authentication. Pipes умеют только basic, greader не умеет и того. А digest — единственный тип аутентификации, который поддерживает Livejournal.com.
Поэтому попытки залогиниться в ЖЖ и читать ленты с подзамочными записями были обречены на неудачу.
Приходилось периодически заходить в ленту и просматривать, не написал ли кто-нибудь из друзей что-нибудь «под замком».

Да, в интернете есть сервисы а-ля
http://freemyfeed.com,

решающие эту задачу, но доверите ли вы кому попало в интернете логин и пароль от своего ЖЖ? Да и как интегрировать с pipes этот сервис мне придумать не удалось. Но нет худа без добра: автор раскрыл исходники скриптов. Вооружившись терпением и мануалом по php, на основе исходных текстов freemyfeed я написал собственный скрипт — remove-authentication.php, который делает одну простую вещь: заменяет digest authentication на basic.
C ним становятся возможными конструкции:
http://user:pass@my.server/remove-authentication.php?feed=feed-url

И эта штука замечательно интегрируется с pipes.
Кому надо, забирайте. И читайте ЖЖ в Google Reader. )
UPD: код надо сохранить как remove-authentication.php и выложить на любой сервер, поддерживающий php :) В идеале — свой.
UPD2: перенес в блог RSS

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Формат запроса - USER:PASS@SERVER.RU/remove-authentication.php?feed=FEED-URL';
exit;
} else {
if (isset ($_GET['feed'])) {
header("Content-Type: text/html; charset=utf-8");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_GET['feed'] .'?auth=digest');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_USERPWD,strtolower($_SERVER['PHP_AUTH_USER'] . ':' . $_SERVER['PHP_AUTH_PW']));
$data = curl_exec($ch);
curl_close($ch);
} else {
echo 'Формат запроса - USER:PASS@SERVER.RU/remove-authentication.php?feed=FEED-URL';
exit;
}
}
?>


* This source code was highlighted with Source Code Highlighter.


PS: это мой первый код на php, конструктивная критика приветствуется :)
Теги:google readerlivejournal.comdigestauthenticationrss
Хабы: Управление медиа
Всего голосов 57: ↑47 и ↓10 +37
Просмотры8.1K

Похожие публикации

Data Steward (Управление данными)
до 170 000 ₽Рекрутинговая компания КоломбоМожно удаленно
Product-manager
от 200 000 ₽ПризываНетМосква
Web-analyst/Веб-аналитик
от 120 000 ₽Prime PartnerМосква
Digital Data Analyst (BI)
до 4 000 €ExnessМожно удаленно

Лучшие публикации за сутки