Giter Site home page Giter Site logo

clio's Introduction

In Russian (look for English below)

Что это?

Бакапилка вашего френдфида.

Как пользоваться (новый способ!)

Распакуйте куда-нибудь содержимое архива и перейдите в эту папку.

В командной строке:

ruby bin/clio.rb -u (юзернейм) -k (remote key) -f (список фидов для загрузки)

(remote key) — это штука, которую можно получить здесь: http://friendfeed.com/remotekey

Если не указать -f, будет загружаться ваш собственный фид.

Опции (можно посмотреть в справке: ruby bin/clio.rb -h):

-u, --user           Ваш юзернейм
-k, --key            Remote key для логина, берётся с http://friendfeed.com/remotekey
-f, --feeds          Фид(ы) для загрузки, список через запятую: user1,group2,user3 (по умолчанию ваш собственный фид)
-p, --path           Путь для сохранения фидов, по умолчанию папка result, каждый фид будет лежать в <path>/<feed>
-l, --log            Путь для записи логов (по умолчанию STDOUT)
-d, --dates          Флаг для добавления текущей даты в имя папки: <path>/<feed>/<YYYY-MM-DD> (для бакапов по расписанию)
-i, --indexonly      Только проиндексировать (данные уже загружены)
    --depth          Глубина загрузки (количество новых записей); по умолчанию — максимально возможное
    --zip            Упаковать в архив <path>/<feed>-<YYYY-MM-DD>.zip
-h, --help           Display this help message.

Результат.

Всё!

Теперь в папках result/(имя фида) есть файл index.html — просто откройте его в браузере.

  • В Firefox работает без проблем.
  • Чтобы работало в Opera: поставьте галку opera:config#UserPrefs|AllowFileXMLHttpRequest.
  • Чтобы работало в Chrome: нужно запустить браузер с дополнительным параметром командной строки --allow-file-access-from-files.

Другой вариант просмотра архива в Chrome:

ruby bin/server.rb (юзернейм)

Эта команда запустит сервер, на который можно будет зайти по адресу http://localhost:65261/index.html

In English

What is it

Backup tool for your FriendFeed.

How to use it

You will need Ruby v1.9 or newer.

Clone repository or download it to some folder.

Then, in command line (or Terminal):

ruby bin/clio-en.rb -u (username) -k (remote key) -f (list of feeds to load)

(remote key) can be received here: http://friendfeed.com/remotekey

If you'll ommit -f, it will download your own feed.

Options (you can also see them with: ruby bin/clio-en.rb -h):

-u, --user           Your username
-k, --key            Your remote key from http://friendfeed.com/remotekey
-f, --feeds          Feeds to load, comma-separated: user1,group2,user3 (your own feed by default)
-p, --path           Path to store feeds, by default its `result`, with each feed at <path>/<feed>
-l, --log            Path to write logs (STDOUT by default)
-d, --dates          If this flag provided, adds current date to folder name: <path>/<feed>/<YYYY-MM-DD> (useful for scheduled backups)
-i, --indexonly      Index only (data already loaded)
    --depth          Depth of download (how many new entries to download); maximum possible (~10'000) by default
    --zip            Pack into archive <path>/<feed>-<YYYY-MM-DD>.zip
-h, --help           Display this help message.

Result

That's it!

Now in folders like result/(feed name) you'll have index.html — just open it in browser.

  • It works seemlessly in Firefox.
  • To see it with Opera: check an option opera:config#UserPrefs|AllowFileXMLHttpRequest.
  • To see it with Chrome: you should run your browser with --allow-file-access-from-files.

Or, you can run:

ruby bin/server.rb (юзернейм)

And it will start simple server at http://localhost:65261/index.html, available from any browser.

Or, if you'll upload everything on some server, you'll be able to see it (all browser hacks are only for "local" files).

FYI, all your entries are stored in separate JSON files in your feed folder, so, if you are programmer, you can do something useful about it.

clio's People

Contributors

indeyets avatar kappa avatar zverok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clio's Issues

падает на индексировании

выглядит так:

23 ноя 21:35:01 INFO: Начато индексирование /Users/mbravo/Sources/clio/result/mbravo
23 ноя 21:35:01 INFO: индексирование /Users/mbravo/Sources/clio/result/mbravo: папки созданы, читаем записи
/Users/mbravo/Sources/clio/vendors/json/common.rb:146:in encode': "\xD0" on US-ASCII (Encoding::InvalidByteSequenceError) from /Users/mbravo/Sources/clio/vendors/json/common.rb:146:ininitialize'
from /Users/mbravo/Sources/clio/vendors/json/common.rb:146:in new' from /Users/mbravo/Sources/clio/vendors/json/common.rb:146:inparse'
from /Users/mbravo/Sources/clio/lib/indexator.rb:172:in block in run' from /Users/mbravo/Sources/clio/lib/indexator.rb:169:ineach'
from /Users/mbravo/Sources/clio/lib/indexator.rb:169:in run' from bin/clio.rb:103:inblock in

'
from bin/clio.rb:88:in each' from bin/clio.rb:88:in'

при этом:

pantouflejr:clio mbravo$ ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.5.0]

а также при старте говорило:

/Users/mbravo/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.

Пинг по списку

Так как наш дамп может быть более полным, чем то, что мы можем получить из френдфида, то хочется режим «обновление постов по списку»:

  1. Собрать оглавление json-файлов в локальном дампе.
  2. Пропинговать все посты на предмет обновления.
  3. Если пост жив — забрать его новую версию.
  4. Если поста нет — оставить прошлую версию, но пометить её в теле как «удалён». Эти посты можно не пинговать при следующих запусках.
    1. Запустить индексатор для освежения индекса.

load.rb падает при попытке скачать юзерпик с remotekey

% ruby bin/load.rb kkapp !!!здесь_remotekey!!!
/home/kappa/work/clio/vendors/simplehttp.rb:57: #Net::HTTPBadRequest:0xb7766440 : 400 : http://friendfeed-api.com/v2/picture/kkapp?size=large (RuntimeError)
from /home/kappa/work/clio/vendors/simplehttp.rb:297:in call' from /home/kappa/work/clio/vendors/simplehttp.rb:297:inhandle_response'
from /home/kappa/work/clio/vendors/simplehttp.rb:323:in do_http' from /home/kappa/work/clio/vendors/simplehttp.rb:388:inget'
from /home/kappa/work/clio/lib/frf_client.rb:40:in raw_request' from /home/kappa/work/clio/lib/frf_client.rb:23:inuserpic'
from /home/kappa/work/clio/lib/frf_client.rb:52:in `extract_feed'
from bin/load.rb:15

Кронджоб-режим для регулярных обновлений

Сейчас даже при использовании отдельных папок создаётся новый дамп на каждый запуск по 10к записей. Но у этого подхода есть проблемы:

  1. Скачивание долго работает.
  2. Архив фида может быть глубже 10 тысяч.
  3. Предыдущие версии дампа могут содержать старые записи за пределами 10к, и в новых версиях их не будет.

Идеальный архив — это все записи из фида на максимальную глубину, с полным индексом тегов и дат.

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

Хочется, чтобы клио при запуске в крон-режиме:

  1. Засасывала обновления из фида (обычно 100-200 постов хватает).
  2. Сложила их в общую папку.
  3. Запустила индексатор.
  4. Сделала гзип общей папки сегодняшней датой (или каждый пятый день, или седьмой).
  5. Пошла спать до следующего дня.

Докапывает до конца, но не останавливается

28 дек 13:37:52 INFO: Загружено 100 записей, начиная с 9700; дата самой старой — '17 февраля 2009 в 19:21'
28 дек 13:37:57 INFO: Загружено 100 записей, начиная с 9800; дата самой старой — '4 февраля 2009 в 15:31'
28 дек 13:38:05 INFO: Загружено 100 записей, начиная с 9900; дата самой старой — '21 января 2009 в 14:08'
28 дек 13:38:10 INFO: Загружено 100 записей, начиная с 10000; дата самой старой — '2 января 2009 в 23:18'
28 дек 13:38:16 INFO: Загружено 100 записей, начиная с 10100; дата самой старой — '2 января 2009 в 23:18'
28 дек 13:38:21 INFO: Загружено 100 записей, начиная с 10200; дата самой старой — '2 января 2009 в 23:18'
28 дек 13:38:27 INFO: Загружено 100 записей, начиная с 10300; дата самой старой — '2 января 2009 в 23:18'

28 дек 13:38:51 INFO: Загружено 100 записей, начиная с 10400; дата самой старой — '2 января 2009 в 23:18'
28 дек 13:38:57 INFO: Загружено 100 записей, начиная с 10500; дата самой старой — '2 января 2009 в 23:18'
^C^C^C

clio.rb -h displays help-text 2 times

$ ./bin/clio.rb -h
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
Clio — better Friendfeed backup tool.  by zverok and contributors
=================================================================

    -u, --user           Ваш юзернейм
    -k, --key            Remote key для логина, берётся с http://friendfeed.com/remotekey
    -f, --feeds          Фид(ы) для загрузки, список через запятую: user1,group2,user3 (по умолчанию ваш собственный фид)
    -p, --path           Путь для сохранения фидов, по умолчанию папка result, каждый фид будет лежать в <path>/<feed>
    -l, --log            Путь для записи логов (по умолчанию STDOUT)
    -d, --dates          Флаг для добавления текущей даты в имя папки: <path>/<feed>/<YYYY-MM-DD> (для бакапов по расписанию)
    -i, --indexonly      Только проиндексировать (данные уже загружены)
        --depth          Глубина загрузки (количество новых записей); по умолчанию — максимально возможное
        --zip            Упаковать в архив <path>/<feed>-<YYYY-MM-DD>.zip
    -h, --help           Display this help message.
    -u, --user           Ваш юзернейм
    -k, --key            Remote key для логина, берётся с http://friendfeed.com/remotekey
    -f, --feeds          Фид(ы) для загрузки, список через запятую: user1,group2,user3 (по умолчанию ваш собственный фид)
    -p, --path           Путь для сохранения фидов, по умолчанию папка result, каждый фид будет лежать в <path>/<feed>
    -l, --log            Путь для записи логов (по умолчанию STDOUT)
    -d, --dates          Флаг для добавления текущей даты в имя папки: <path>/<feed>/<YYYY-MM-DD> (для бакапов по расписанию)
    -i, --indexonly      Только проиндексировать (данные уже загружены)
        --depth          Глубина загрузки (количество новых записей); по умолчанию — максимально возможное
        --zip            Упаковать в архив <path>/<feed>-<YYYY-MM-DD>.zip
    -h, --help           Display this help message.

ERROR: Непонятно что скачивать. Укажите параметр --feeds или --user

Странная работа с бэкслэшами в пути к каталогу

Баг не особо страшный, но для порядка. Вот это:

ruby bin/clio.rb -i -p C:\Users\David\frf-save\__clio -f davidmz

Выдаёт:

01 Apr 16:48:41 WARN: feedinfo.js есть, а записей нету, может быть не всё загрузили?
01 Apr 16:48:41 INFO: Начато индексирование C:\Users\David\frf-save\__clio/davidmz

Если же использовать прямые слэши:

ruby bin/clio.rb -i -p C:/Users/David/frf-save/__clio -f davidmz

То записи находятся и индексация идёт нормально.

Win7 64

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.