Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=8804854&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 14:39:23 2016
Кодировка: Windows-1251
Троллье - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Servant >> Forum (Archive)

Страницы: 1
Emacs
Carpal Tunnel

Рег.: 19.06.2008
Сообщений: 4873
Рейтинг: 1683
  Троллье
      25.07.2009 12:18
16

По аналогии с этим написал утилитку построения графа вопрос-ответов.
Например, для треда http://forumlocal.ru/showflat.php?Cat=&Board=society&... он показывает, какой срач развела ерсупь - ей в основном отвечают.
http://img-fotki.yandex.ru/get/3614/denis-cheremisov.9/0_2c3...
code:
#!/usr/bin/env python # -*- coding: utf-8 -*- # призываю лучи поноса import re import sys import gzip import pydot import sgmllib import urllib2 from operator import truth from cStringIO import StringIO output_file = 'out.gif' cookies = dict( w3t_w3t_myid='', w3t_w3t_key='', ) headers = { 'User-Agent': 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11', 'Accept': 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'Accept-Language': 'en-us,en;q=0.5', 'Accept-Encoding': 'gzip,deflate', 'Accept-Charset': 'UTF-8,*', 'Keep-Alive': '300', 'Connection': 'keep-alive', 'Cookie': 'w3t_w3t_myid={w3t_w3t_myid}; w3t_w3t_key={w3t_w3t_key}; w3t_w3t_language=english; w3t_w3t_favicon=shaller1;'.format(**cookies), 'Cache-Control': 'max-age=0', } class Enumerate(object): def __init__(self, names): for number, name in enumerate(names.split()): setattr(self, name, number) state = Enumerate('WAIT_TR WAIT_SUBJECTTABLE_TD WAIT_FIRST_B READ_NAME WAIT_FONT_CLASS WAIT_FOR_RE') class ShitParser(sgmllib.SGMLParser): """ Выявляет направления полета какашек """ replyto = re.compile(r'\[re:(.*?)\]') shit_in_brackets = re.compile(r'(?:\(.*?\))?(.*)') def __init__(self, verbose = 0): sgmllib.SGMLParser.__init__(self, verbose) self.state = state.WAIT_TR self.name = '' self.pairs = [] def start_tr(self, attrs): if self.state == state.WAIT_TR: self.state = state.WAIT_SUBJECTTABLE_TD def end_tr(self): self.state = state.WAIT_TR def start_td(self, attrs): if not attrs: return key, value = attrs[0] if self.state == state.WAIT_SUBJECTTABLE_TD and (key,value) == ('class', 'subjecttable'): self.state = state.WAIT_FIRST_B def end_td(self): self.state = state.WAIT_TR def start_b(self, attrs): if self.state == state.WAIT_FIRST_B: self.state = state.READ_NAME def end_b(self): if self.state == state.READ_NAME: self.state = self.WAIT_FONT_CLASS def start_font(self, attrs): if self.state != state.WAIT_FONT_CLASS: return if not attrs: self.state = state.WAIT_TR else: key, value = attrs[0] if key == 'class' and value == 'small': self.state = state.WAIT_FOR_RE def handle_data (self, data): if self.state == state.READ_NAME: match = ShitParser.shit_in_brackets.match(data) self.name = unicode(match.group(1), 'cp1251').encode('utf-8') self.state = state.WAIT_FONT_CLASS elif self.state == state.WAIT_FOR_RE: match = ShitParser.replyto.match(data) if truth(match): self.pairs += [(self.name, unicode(match.group(1), 'cp1251').encode('utf-8'))] self.state = state.WAIT_TR def getTrolledThread(thread_id, board): """ Здесь можно получить только страничку с затролленым тредом, ибо других не бывает thread_id - это какая-то хуйня, но не индекс раздела board - тоже хуйня """ url = 'http://forumlocal.ru/showflat.php?Cat=&Board={board}&Number={thread_id}&fullview=2&src=&o=&tistart=all&vc=1&showlite=l&fullview=2'.format(thread_id = thread_id, board = board) req = urllib2.Request (url, None, headers) response = urllib2.urlopen(req) if 'content-encoding' in response.headers.dict: if response.headers.dict['content-encoding'] == 'gzip': return gzip.GzipFile('','r',0,StringIO(response.read())) return response parser = ShitParser() content = getTrolledThread(sys.argv[1], sys.argv[2]).read() parser.feed(content) parser.close() g = pydot.Dot() for user1, user2 in parser.pairs: g.add_edge(pydot.Edge(user1, user2)) g.write_png(output_file)




Ein Gemeinschaft, Ein Platform, Ein Emacs
А что за тема с белым кошаком?
rebel_yv
львы

Рег.: 28.08.2006
Сообщений: 20212
Из: Chelyabinsk
Рейтинг: 12840
  Re: Троллье [re: Emacs]
      26.07.2009 11:56
 

а что Пофигисту и Емаку надо от Ер_Суб?



Emacs
Carpal Tunnel

Рег.: 19.06.2008
Сообщений: 4873
Рейтинг: 1683
  Re: Троллье [re: rebel_yv]
      27.07.2009 13:40
1

я повелся - думал она заблуждается, неверно трактуя представления историков о нравах русского общества XV-XVII веков.



Ein Gemeinschaft, Ein Platform, Ein Emacs
А что за тема с белым кошаком?
rebel_yv
львы

Рег.: 28.08.2006
Сообщений: 20212
Из: Chelyabinsk
Рейтинг: 12840
  Re: Троллье [re: Emacs]
      27.07.2009 20:39
 

а она верно трактовала?
(сожно ссылку на тред?)



Emacs
Carpal Tunnel

Рег.: 19.06.2008
Сообщений: 4873
Рейтинг: 1683
  Re: Троллье [re: rebel_yv]
      28.07.2009 02:35
2

ссылка в первом посте.

нет, неверно: судя по всему, она имеет весьма приблизительные познания в русской истории того времени. В частности, исходила из посыла, что православная церковь никогда не поддерживала процессы схожие в инквизицией, хотя во всех источниках посвященных инквизиции и упоминающих наших попов всегда встречается утверждение, что "в русской православной церкви инквизиционная деятельность не приобрела такого размаха как в западной европе". Ерсупь же, для которой откровением стали отдельные факты наказаний на почве религиозного инакомыслия в русском государстве, на это возражение ответила в ключе, что "совки ноют будто у других было еще хуже".

Ну то есть на лицо низкая эрудированность в этой области + желание подкинуть говнеца в вентилятор.



Ein Gemeinschaft, Ein Platform, Ein Emacs
А что за тема с белым кошаком?
sokol
ясный

Рег.: 08.11.2002
Сообщений: 39240
Рейтинг: 12313
  Re: Троллье [re: Emacs]
      28.07.2009 04:02
 

Воспринимать Ерсуб всерьез это уже признак неадеквата.
Забей на нее чувак. :D

rebel_yv
львы

Рег.: 28.08.2006
Сообщений: 20212
Из: Chelyabinsk
Рейтинг: 12840
  Re: Троллье [re: sokol]
      28.07.2009 09:48
 

да уж лучше прислушайся, она все верно написала (по крайней мере, на первых страницах) и посыл ее понятен, в отличие от православных утрарадикальных фундаменталистов



Emacs
Carpal Tunnel

Рег.: 19.06.2008
Сообщений: 4873
Рейтинг: 1683
  Re: Троллье [re: rebel_yv]
      28.07.2009 11:38
1

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



Ein Gemeinschaft, Ein Platform, Ein Emacs
А что за тема с белым кошаком?
FAQ

Рег.: 21.01.2006
Сообщений: 27776
Из: Воронеж
Рейтинг: 13090
  Re: Троллье [re: Emacs]
      28.07.2009 16:15
1

а есть возможность этот скрипт прикрутить в фичи форума. чтобы в треде была внизу кнопка "посмотреть графическое представление"?

Emacs
Carpal Tunnel

Рег.: 19.06.2008
Сообщений: 4873
Рейтинг: 1683
  Re: Троллье [re: FAQ]
      28.07.2009 17:23
 

вряд ли, генерация графа - очень трудоемкая процедура, на моем компе занимает довольно много времени и жрет очень много памяти, порядка 1-2 гигов на больших тредах.



Ein Gemeinschaft, Ein Platform, Ein Emacs
А что за тема с белым кошаком?
Owen
как взрослый

Рег.: 01.05.2005
Сообщений: 10054
Рейтинг: 21235
  Re: Троллье [re: Emacs]
      28.07.2009 17:49
 

В принципе, его можно хранить в базе и достраивать в момент добавления очередного опста. Правда, итоговая реализация обещает быть весьма заморочной. Хоть такая фишка была бы и правда весьма приятна, имхо, окажется, что овчинка не стоит выделки =(

Bubbleguy
Оппозицонный ватник

Рег.: 23.06.2005
Сообщений: 20339
Из: ул Ицамны 15
Рейтинг: 12652
  Re: Троллье [re: Emacs]
      28.07.2009 20:24
 


 Генерация картинки? Я думаю, куда проще переварить результат в таблицу. Строки - кому отвечали, столбцы, кто отвечал. В полях число постов.
 Сам сбор данных должен быть очень быстрым.



Не заботаешь матан, будешь добывать уран. Слава Росатому!
Rad
delinquent guy

Рег.: 06.09.2005
Сообщений: 17290
Из: here and there
Рейтинг: 2232
  Re: Троллье [re: Bubbleguy]
      29.07.2009 01:25
 

нафига картинку форуму генерить? У графа есть куча более легких для построения представлений.
Кстати, мне кажется нецелесообразным рисовать по отдельности каждую линию: ведь все равно они несут информацию только о количестве и направлении, а первое можно закодировать, например, цветом.



Страницы: 1

Servant >> Forum (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  shaller 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в