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

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

Время на прочтение 3 мин
Количество просмотров 8.7K
До появления 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, конструктивная критика приветствуется :)
Теги:
Хабы:
+37
Комментарии 61
Комментарии Комментарии 61

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн