LinuxForum.Fans
Тема

коньки и башорг :)

Автор: BaCuJIuu 9 сообщений 3935 просмотров
#112322

В общем столкнулся я с такой проблемой, захотел что бы в коньках выводились цитаты с баша, нашел скрипт и получил фигвам :)
дистр debian lenny 5.0.7 amd64

text

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Первый параметр у скрипта - ширина поля вывода в символах
# Если параметр опущен, то ширина равно 50 символов

import pycurl, cStringIO, re, sys, textwrap

# Функция перевода html-кодов и тегов в нормальное представление def unescape(s): s = s.replace("<br>", "\n") s = s.replace("<br />", "\n") s = s.replace("&quot;", "\"") s = s.replace("&lt;", "<") s = s.replace("&gt;", ">") return s

# Если дополнительные параметры не переданы,то # Ставим ширину поля вывода равной 50 символов if len(sys.argv) < 2: text_width = 50 else: # Иначе равной первому параметру text_width = int(sys.argv[1])

# cStringIO понадобится для CURL data = cStringIO.StringIO()

# Инициализация CURL curl = pycurl.Curl() # Передаем адрес сайта - страница с рандомными цитатами curl.setopt(pycurl.URL, 'http://bash.org.ru/random') # Указываем функцию, которой будет передаваться содержимое страницы curl.setopt(pycurl.WRITEFUNCTION, data.write) # Выполняем запрос curl.perform() curl.close()

# По регулярному выражению ищем все цитаты на странице # В дальнейшем будет браться только одна, но решил оставить так res = re.findall("<div>(.*)</div>",data.getvalue())

data.close()

# Придаем тексту читабельный вид quote= unescape(res[0])

# Переводим в кодировку utf8 quote = quote.decode('cp1251') quote = quote.encode('utf8')

# Разбиваем текст на список строк. Дело в том, что textwrap.fill # Игнорирует существующие переносы строк, он соединяет весь текст # А затем заново делает переносы quotes = quote.split("\n")

# Создаем объект для нашего "враппера" wrapper = textwrap.TextWrapper(width=text_width, # Ширина поля вывода initial_indent="", # Символы красной строки subsequent_indent="") # Символы, которые будут # вставляться после переноса

# Наконец-то перебираем строки и выводим их for quote in quotes: print wrapper.fill(quote)

а вот фурычить оно не хочет..
[console]
File "/root/.conky/bash.org.py", line 10
s = s.replace("<br>", "\n")
^
IndentationError: expected an indented block
[/console]

вывести все это в коньки не сложно, экспериментируйте.
${color1}Bash.org.ru:
${color2}${execi 300 /home/test/bash.org.py 50}

Ну и ессно прошу помощи :)

#112323

Это скорее в программирование надо а не сюда

#112325

а ну да, алкоголь он такой :)
а может просто чего то в системе не хватает?

#112335

да у меня не установлены был pycurl
apt-get для начала к пакету
python-pycurl

Исправил, вот файлом скрипт, тут точно пробелы правильно выставлены:
http://rghost.ru/3827229
http://filesurf.ru/211937/test10.py.html

В пайтоне пробел часть синтаксиса
Вот еще в спойлере но тут может пробелы не пральна в посте:

Показать
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Первый параметр у скрипта - ширина поля вывода в символах
# Если параметр опущен, то ширина равно 50 символов

import pycurl, cStringIO, re, sys, textwrap

# Функция перевода html-кодов и тегов в нормальное представление
def unescape(s):
s = s.replace("<br>", "\n")
s = s.replace("<br />", "\n")
s = s.replace("&quot;", "\"")
s = s.replace("&lt;", "<")
s = s.replace("&gt;", ">")
return s

# Если дополнительные параметры не переданы,то
# Ставим ширину поля вывода равной 50 символов
if len(sys.argv) < 2:
text_width = 50
else:
# Иначе равной первому параметру
text_width = int(sys.argv[1])

# cStringIO понадобится для CURL
data = cStringIO.StringIO()

# Инициализация CURL
curl = pycurl.Curl()
# Передаем адрес сайта - страница с рандомными цитатами
curl.setopt(pycurl.URL, 'http://bash.org.ru/random')
# Указываем функцию, которой будет передаваться содержимое страницы
curl.setopt(pycurl.WRITEFUNCTION, data.write)
# Выполняем запрос
curl.perform()
curl.close()

# По регулярному выражению ищем все цитаты на странице
# В дальнейшем будет браться только одна, но решил оставить так
res = re.findall("<div>(.*)</div>",data.getvalue())

data.close()

# Придаем тексту читабельный вид
quote= unescape(res[0])

# Переводим в кодировку utf8
quote = quote.decode('cp1251')
quote = quote.encode('utf8')

# Разбиваем текст на список строк. Дело в том, что textwrap.fill
# Игнорирует существующие переносы строк, он соединяет весь текст
# А затем заново делает переносы
quotes = quote.split("\n")

# Создаем объект для нашего "враппера"
wrapper = textwrap.TextWrapper(width=text_width, # Ширина поля вывода
initial_indent="", # Символы красной строки
subsequent_indent="") # Символы, которые будут
# вставляться после переноса

# Наконец-то перебираем строки и выводим их
for quote in quotes:
print wrapper.fill(quote)
#112337

Зы переименуй тену на более нормальное - ошибка python ndentationError: expected an indented block

#112338

BaCuJIuu, это ваш первый опыт с питоном?.... вы в курсе что означают отступы в питоне?

#112343

Спасибо :)

Один, был раньше небольшой опыт, но давно .. Сотри соседнюю тему пожалуйста :)

С Наступающими вас!

#112398

а что мешает просто из RSS показвать?

#112405

удолил.

(подпись: модератор раздела.)

Войдите или зарегистрируйтесь, чтобы ответить.