[#] Разделение Хабра
vit01(mira, 1) — All
2014-10-14 10:53:43


Совсем недавно тематические медиа сделали новый ресурс - GeekTimes http://habrahabr.ru/company/tm/blog/240135/ http://geektimes.ru
, куда переносятся все нетехнические и "оффтоповые" хабы и статьи. Как я понял, вся новостная лента IT, всё про Роскомнадзор, копирайты, космонавтику и прочее переносится туда.

Так как ленты хабра у нас пока нет, прошу принять во внимание, что теперь придётся фетчить 2 ресурса.

[#] Re: Разделение Хабра
Difrex(station13, 7) — vit01
2014-10-14 11:47:00


Давайте уже хоть что-нибудь попробуем зафетчить =)

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-10-14 12:24:42


>Давайте уже хоть что-нибудь попробуем зафетчить =)
Аккаунт на Хабре у Андрея, поэтому все вопросы к нему =)

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-10-14 13:21:57


>Так а зачем там акк нужен? Можно тащить хаб linux, например.
Чтобы сделать полный список подписок из кучи хабов и тащить их все вместе, а не каждый по-отдельности

[#] Re: Разделение Хабра
Difrex(station13, 7) — vit01
2014-10-14 14:41:29


>Чтобы сделать полный список подписок из кучи хабов и тащить их все вместе, а не каждый по-отдельности

Хм, мне было бы интересней по-отдельности. Например, мне не очень хочется читать про очередную перестановку кнопочек у убунточке. По-этому на какую-нибудь эху habra.ubuntarium.999 я бы не подписывался :)

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-10-14 14:54:24


>Хм, мне было бы интересней по-отдельности.
Не слишком ли много эх будет?

> Например, мне не очень хочется читать про очередную перестановку кнопочек у убунточке.
> По-этому на какую-нибудь эху habra.ubuntarium.999 я бы не подписывался :)
А как же нескучные обои? =)

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

[#] Re: Разделение Хабра
Difrex(station13, 7) — vit01
2014-10-14 13:07:04


Так а зачем там акк нужен? Можно тащить хаб linux, например.

[#] Re: Разделение Хабра
spline(station13, 1) — vit01
2014-10-14 14:09:16


>Аккаунт на Хабре у Андрея, поэтому все вопросы к нему =)

Блин, ребят. Извините =)

Сегодня запущу тестовую эху с подписками на хабре какие есть. Информацию по разделению хабра учту чуть позже.

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-10-14 14:59:24


>Хм, мне было бы интересней по-отдельности. Например, мне не очень хочется читать про очередную перестановку кнопочек у убунточке. По-этому на какую-нибудь эху habra.ubuntarium.999 я бы не подписывался :)

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

[#] Re: Разделение Хабра
Difrex(station13, 7) — spline
2014-10-14 18:36:43


>есть вероятность что если у нас и будет хабр, то не с моей ноды =(

Давай код. Могу развернуть у себя =)

[#] Re: Разделение Хабра
spline(station13, 1) — vit01
2014-10-14 15:07:04


>Тут уж как Андрей решит, так и будем читать.

Тестовую эху запущу в кучу, а дальше как пойдёт.

[#] Re: Разделение Хабра
Difrex(station13, 7) — spline
2014-10-14 18:00:09


Чем парсишь, кстати?

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-10-14 18:16:23


>Чем парсишь, кстати?

feedparser + lxml

Первым выдираю ленту, вторым выдираю целые статьи. Но в силу того, что lxml так просто на сервере мне нынче не поставить, есть вероятность что если у нас и будет хабр, то не с моей ноды =(

[#] Re: Разделение Хабра
spline(station13, 1) — spline
2014-10-14 17:48:50


Тестовая эха отменяется в ближайшее время. Мне не хватает кое чего на сервере -- придётся упростить парсер.

[#] Re: Разделение Хабра
Difrex(station13, 7) — vit01
2014-10-14 19:12:47


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

Айда ко мне на сервак :D

[#] Re: Разделение Хабра
Difrex(station13, 7) — Difrex
2014-10-15 11:04:29


>>Какая там ОС? :D
>Убунту 12.04

Но я тебе могу твой любимы дистрибутив развернуть, если что =)

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-10-15 02:39:19


>Айда ко мне на сервак :D
Какая там ОС? :D

[#] Re: Разделение Хабра
Difrex(station13, 7) — Difrex
2014-10-14 18:56:33


Точнее я тебе могу дать шелл у себя.
Скажешь только какие тебе пакеты поставить.

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-10-15 12:12:37


>>Убунту 12.04
Чужой сервер, от которого мне отец дал доступ - тоже на Ubuntu 12.04. Но там как-то рисково запускать всякие штуки: админ придёт и всё удалит, а то ещё и пароль сменит :)

>Но я тебе могу твой любимы дистрибутив развернуть, если что =)
Спасибо, не надо мне ещё серверов :)
А вообще, у меня на домашнем сервере стоит Арч.

[#] Re: Разделение Хабра
vit01(mira, 1) — spline
2014-10-14 18:43:32


>Но в силу того, что lxml так просто на сервере мне нынче не поставить
А скомпилить нельзя?

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

[#] Re: Разделение Хабра
Difrex(station13, 7) — vit01
2014-10-15 11:01:36


>Какая там ОС? :D
Убунту 12.04

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-10-24 11:32:11


>Уже почти свой фетчер хабры написал :D

Блин. Я забыл Т__Т

https://github.com/spline1986/habr2ii вот мой вариант =)

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-10-24 07:23:02


>Но я тебе могу твой любимы дистрибутив развернуть, если что =)

Это ни к чему. Может, развернём там ноду для хабра? =)

[#] Re: Разделение Хабра
Difrex(station13, 7) — spline
2014-10-24 11:11:15


>Может, развернём там ноду для хабра?
Ага, я так и хотел сделать =)
Уже почти свой фетчер хабры написал :D

[#] Re: Разделение Хабра
vit01(mira, 1) — spline
2014-10-24 19:47:43


А у меня вот такой скрипт рассылки используется в твоём rss-фетчере ii://lenta.dark.14

#!/usr/bin/python2
# -*- coding:utf8 -*-

import urllib,base64,os

authstr="мой пароль от ноды"
adress="http://ii-net.tk/ii/ii-point.php?q=/u/"

files=os.listdir("tosses") # каталог с раскиданными сообщениями

for file in files:
        f=open("tosses/"+file).read()
        code=base64.b64encode(f)

        data = urllib.urlencode({'tmsg': code,'pauth': authstr})
        out = urllib.urlopen(adress + 'point', data).read()
        print out

        if out.startswith('msg ok'):
                os.remove("tosses/"+file)
Тут совсем всё просто и понятно

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-10-24 13:47:39


>У меня стоят эти пакеты =)

Тогда надо смотреть что
html.tostring (page.find_class ("content html_format")
Выдаёт там. Я никаких воркэраундов не лепил просто и у себя на системе только тестировал.

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-10-24 13:25:16


Ему нужны две дополнительные либы: feedparser и html2text. Причём второе требует соответствующий пакет в системе (это и послужило препятствием внедрению у меня на ноде).

[#] Re: Разделение Хабра
Difrex(station13, 7) — spline
2014-10-24 13:30:02


У меня стоят эти пакеты =)

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-10-24 12:49:16


>Так, а как он должен работать, фетчер?

Кладём в директорию tools/client-toss вот такой скрипт и создаём поддиректорию msgs/RSS-bot. В неё скриптом habr2ii.py буду ссыпаться сообщения для тоссинга.
#!/bin/bash

#cd /srv/www/spline.rooker.ru/data/ii/tools/client-toss/
HISTORY=1 # Если установлено в 0, сообщения удаляются. Иначе переносятся в директорию histo

IIURL=http://127.0.0.1:62220/u/point
POINTS='../points.txt' # Путь к списку поинтов относительно данного скрипта
MKTOSS='../../mktoss.py' # Путь к тоссеру относительно директории поинта

ROOT_PWD=$(pwd)

for DIR in $(find ./msgs/ -maxdepth 1 -type d); do
    POINT=$(echo $DIR | sed 's/.\/msgs\///')
    if [[ $POINT != '' ]]; then
	PAUTH=$(cat $POINTS | grep $POINT | sed 's/:.*//')
	cd $DIR
	for MSG in $(find ./ -maxdepth 1 -type f -name "*.txt"); do
	    python2.7 $MKTOSS $MSG
	    wget -q --header="Host: spline.rooker.ru" $IIURL -O - --post-data "pauth=$PAUTH&tmsg=$(cat $MSG.toss)"
	    if [[ $HISTORY == 0 ]]; then
		rm $MSG
	    else
		if ! [ -d ./histo ]; then
		    mkdir ./histo
		fi
		mv $MSG ./histo
	    fi
	    rm $MSG.toss
	done
    fi
    cd $ROOT_PWD
done

Добавляем поинта в points.txt. Потом в habr2ii.py указываем путь для сыпания сообщений, линк на feed и название эхи.

$ python habr2ii.py && autotosspost.sh всё.

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

[#] Re: Разделение Хабра
Difrex(station13, 7) — spline
2014-10-24 13:18:54


python habr2ii.py
Traceback (most recent call last):
  File "habr2ii.py", line 40, in <module>
    f.write (get_content (rss.entries[i].link).encode ("UTF-8"))
  File "habr2ii.py", line 18, in get_content
    text = h.handle (html.tostring (page.find_class ("content html_format")[0]))
IndexError: list index out of range

[#] Re: Разделение Хабра
Difrex(station13, 7) — spline
2014-10-24 12:29:53


Так, а как он должен работать, фетчер?

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-10-31 14:57:26


Версии python-html2text и lxml какие? Пока я нашёл неприятный баг со старой версией html2text.

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-11-05 14:45:18


Ура, товарищи! Я уже загейтовал.

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-11-05 15:00:15


Отлично, но для этого сгодился бы любой RSS-фетчер на самом деле =)

Соль была в репосте статей целиком в формате markdown. Как учёбу разгребу, попробую накалякать что-нить менее требовательное к сторонним библиотекам. Где-то на уровне lxml проблема, судя по всему. Причём отловить её мне так и не удалось -- на одном и том же линке получаю разные данные и никогда статью целиком. Всегда это какой-то кусок страницы.

[#] Re: Разделение Хабра
Difrex(station13, 7) — Difrex
2014-11-05 13:30:53


http://ii.difrex.ru/habra.14 -- гейтуйте, если хотите. Хабра фетчится.

[#] Re: Разделение Хабра
vit01(mira, 1) — vit01
2014-11-05 14:55:08


Оу, тут куча пустых мест, хтмл теги и до хабраката :(
Ну ничего, и так читать можно =)

Спасибо, что даже так у нас есть, чего почитать =).

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-11-05 15:01:40


До кучи сделай замену вот такого вот [img habrastorage.org/files/112/e60/c80/112e60c801d640e9be72430911ab5abd.jpg" align="right" width="300] на директ-линки на изображения =)

[#] Re: Разделение Хабра
Difrex(station13, 7) — spline
2014-11-05 15:12:46


Да, проблемы есть. Набросал на коленке.

Можете в один пост баги написать, я все поправлю? :)

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-11-05 16:59:46


>Я просто заменяю > на '\n'
Лучше заменять на пробел, а то с \n читать совсем неудобно.

>Не вижу смысла тянуть всю статью. Она может быть не интересна совсем. А так, если захочется, то можно кликнуть на "читать дальше" и перейти на всю статью.
Логика понятна, жаль, что у нас тянутся все хабы, а не только те, которые нужны. Но просто удобнее не ходить по ссылкам постоянно, а читать всё в ii

>Куда сохранять? Линки же вроде остаются...
Теперь вижу :)

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-11-05 15:40:04


> Можете в один пост баги написать, я все поправлю? :)

1. Много пустых мест и отступов в содержимом
2. Отображается не вся статья, а только начало
3. Вместо нормальной читаемой разметки html-теги
4. Неплохо бы сохранять ссылки на картинки, чтобы посмотреть можно было

[#] Re: Разделение Хабра
Difrex(station13, 7) — vit01
2014-11-05 19:04:36


>жаль, что у нас тянутся все хабы, а не только те, которые нужны
Сейчас тянется только hub/linux/

Говорите, на какие подписаться :)

[#] Re: Разделение Хабра
Difrex(station13, 7) — Difrex
2014-11-05 19:08:36


И еще такой вопрос:
Тянуть статьи из песочницы или нет? Сейчас они пропускаются.

[#] Re: Разделение Хабра
Difrex(station13, 7) — vit01
2014-11-05 16:40:25


>1. Много пустых мест и отступов в содержимом
Я просто заменяю <br> на '\n'

>2. Отображается не вся статья, а только начало
Не вижу смысла тянуть всю статью. Она может быть не интересна совсем. А так, если захочется, то можно кликнуть на "читать дальше" и перейти на всю статью.
Хотя смысл во всей статье тоже есть. Подумаю над этим. Собственно говоря, добавить фетчер всей стать -- совсем не проблема.

>3. Вместо нормальной читаемой разметки html-теги
Работаю над этим =)

>4. Неплохо бы сохранять ссылки на картинки, чтобы посмотреть можно было
Куда сохранять? Линки же вроде остаются...

[#] Re: Разделение Хабра
Difrex(station13, 7) — Difrex
2014-11-05 19:29:35


Проба markdown. Там у них на хабре переодически прилетают всякие div, s и прочие html-теги. Надо придумать, как их правильно пропускать.

Кто там говорил про статью про парсилку хабры на хабре? =)

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-11-06 08:51:51


> Кто там говорил про статью про парсилку хабры на хабре? =)
Я говорил =) К примеру, вот эта статья: http://habrahabr.ru/post/192670/

[#] Re: Разделение Хабра
spline(station13, 1) — Difrex
2014-11-05 20:03:13


Парсилка html на легко делается с помощью html2text.

[#] Re: Разделение Хабра
vit01(mira, 1) — Difrex
2014-11-06 04:21:36


ii://HwArNq5Jtn2XGcZ0dg4A
ii://RwDkjN6NVBLt0feRdTi7
+ ещё lisp предлагали

[#] Re: Разделение Хабра
ntrknlmp.exe(mira, 9) — Difrex
2014-11-06 12:44:03


можно простым регэкспом вырезать все html теги. как вариант

[#] Re: Разделение Хабра
Difrex(station13, 7) — ntrknlmp.exe
2014-11-06 13:46:39


>можно простым регэкспом вырезать все html теги. как вариант

Так и сделал