LINUX.ORG.RU

Скрипт на python + vk api + conky

 , ,


2

4

И так. Всем доброго времени суток. Есть идея выводить последний пост с группы вк в conky, но получаются проблемы. Код для python 2.7

#!/usr/bin/env python
#coding=utf-8

from urllib2 import urlopen
import json

address = 'https://api.vk.com/method/wall.get?user_id=ID_Группы_или_пользователя%20&v=5.45&access_token=Ваш_TOKEN'
data = urlopen(address)
decoded_response = data.read().decode('utf-8')
final_data = json.loads(decoded_response)
post = final_data['response']
print post

В итоге я получаю JOSN ответ как я понял, но приходит какая то хрень за место того что должно бы.

[{u'post_source': {u'platform': u'android', u'type': u'api'}, u'copy_history': [{u'post_source': {u'type': u'vk'}, u'text': u'\u0420\u0435\u0448\u0438\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0444\u0438\u043b\u044c\u043c\u0435\u0446 \u043e\u0434\u0438\u043d. \u041f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u043c\u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0447\u043b\u0435\u043d. \u042f \u043e\u0442\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c. \u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0433\u0443\u0431\u044b. \u041f\u043e\u0442\u043e\u043c \u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u0441\u0435\u043a\u0440\u0435\u0442 \u043f\u043e\u0445\u0443\u0434\u0435\u043d\u0438\u044f \u0410\u043b\u043b\u044b \u041f\u0443\u0433\u0430\u0447\u0435\u0432\u043e\u0439. \u041d\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0439\u0442\u0438 4838477 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u0443\u0437\u043d\u0430\u0442\u044c. \u041f\u043e\u0442\u043e\u043c \u043c\u043d\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043e \u043d\u043e\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0438\u0433\u0440\u0435. \u041d\u043e \u0447\u0442\u043e\u0431\u044b 

Прошу помощи. На Python.su послали в саппорт вк.

Ответ на: комментарий от anonymous

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

funk2256
() автор топика
Ответ на: комментарий от funk2256

conkyrc

######################
# - Conky settings - #
######################
update_interval 1
total_run_times 0
net_avg_samples 1
cpu_avg_samples 1

imlib_cache_size 0
double_buffer yes
no_buffers yes

format_human_readable

#####################
# - Text settings - #
#####################
use_xft yes
xftfont Droid Sans:size=8
override_utf8_locale yes
text_buffer_size 1024

own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

alignment top_right
gap_x 25
gap_y 40
minimum_size 182 0
maximum_width 260

default_bar_size 60

# Defining colors


#########################
# - Graphics settings - #
#########################
draw_shades no
default_color 3C3B37
color0 bebebe
color1 d3d3d3
color2 C0C0C0


# Loading lua script for drawning rings
#lua_load ./seamod_rings.lua
#lua_draw_hook_post main

## System information using conky capabilities

# Header with base system info
own_window_argb_value 0
own_window_colour 000000


TEXT
${voffset 20}${font Droid Sans:style=Bold:size=8}ДАТА $stippled_hr${font}
${voffset -12}${goto 28}${font Arial Black:size=38}${color2}${time %H}${color}${font}${voffset -28}${font Droid Sans:style=Bold:size=11}${color2}${time :%M}${time :%S}${color}${font}
${voffset -2}${goto 100}${font Droid Sans:style=Bold:size=8}${color2}${time %A}${color2}${font}
${goto 100}${time %d %b %Y}


##############
# - SYSTEM - #
##############
${color0}${voffset 6}${font OpenLogos:size=19}u${font}${color}${goto 32}${voffset -14}Kernel:  ${alignr}${color2}${kernel}${color}
${goto 32}Время работы: ${alignr}${color2}${uptime}${color}
$stippled_hr
# |--CPU
${offset 1}${color0}${font Poky:size=16}P${color}${font}${voffset -4}${goto 32}CPU 1: ${font Droid Sans:style=Bold:size=8}${color1}${cpu cpu1}%${color}${font}${alignr}${color2}${cpugraph cpu1 8,100 C6B9A6 C6B9A6}${color}
${offset 1}${color0}${font Poky:size=16}P${color}${font}${voffset -4}${goto 32}CPU 2: ${font Droid Sans:style=Bold:size=8}${color1}${cpu cpu2}%${color}${font} ${alignr}${color2}${cpugraph cpu2 8,100 C6B9A6 C6B9A6}${color}


# |--MEM
${color0}${font Poky:size=16}M${font}${color}${goto 32}${voffset -7}RAM: ${font Droid Sans:style=Bold:size=8}${color1}$memperc%${color}${font}
${offset 1}${voffset 2}${color0}${membar 4,18}${color}${goto 32}${voffset -2}F: ${font Droid Sans:style=Bold:size=8}${color2}${memeasyfree}${color}${font} U: ${font Droid Sans:style=Bold:size=8}${color2}${mem}${color}${font}

###############
# - NETWORK - #
###############
${voffset 4}${font Droid Sans:style=Bold:size=8}СЕТЬ $stippled_hr${font}
# |--WLAN0
${if_up wlan0}
${voffset -13}${color0}${font VariShapes Solid:size=14}q${font}${color}${goto 32}${voffset -6}Отправка: ${font Droid Sans:style=Bold:size=8}${color1}${upspeed wlan0}${color}${font} ${alignr}${color2}${upspeedgraph wlan0 8,50 C6B9A6 C6B9A6}${color}
${goto 32}Всего: ${font Droid Sans:style=Bold:size=8}${color2}${totalup wlan0}${color}${font}
${voffset -2}${color0}${font VariShapes Solid:size=14}Q${font}${color}${goto 32}${voffset -6}Приём: ${font Droid Sans:style=Bold:size=8}${color1}${downspeed wlan0}${color}${font} ${alignr}${color2}${downspeedgraph wlan0 8,50 C6B9A6 C6B9A6}${color}
${goto 32}Всего: ${font Droid Sans:style=Bold:size=8}${color2}${totaldown wlan0}${color}${font}
${voffset -2}${color0}${font Poky:size=14}Y${font}${color}${goto 32} ${voffset -2}Сигнал: ${font Droid Sans:style=Bold:size=8}${color1}${wireless_link_qual wlan0}%${color}${font} ${alignr}${color2}${wireless_link_bar 8,60 wlan0}${color}
${voffset 4}${color0}${font Poky:size=13}w${font}${color}${goto 32}${voffset -8}Локальный IP: ${alignr}${color2}${addr wlan0}${color}
${goto 32}Внешний IP: ${alignr}${color2}${execi 10 wget -O - -q icanhazip.com}${font}
# |--ETH0
${else}${if_up eth0}
${voffset -13}${color0}${font VariShapes Solid:size=14}q${font}${color}${goto 32}${voffset -6}Отправка: ${font Droid Sans:style=Bold:size=8}${color1}${upspeed eth0}${color}${font} ${alignr}${color2}${upspeedgraph eth0 8,60 C6B9A6 C6B9A6}${color}
${goto 32}Всего: ${font Droid Sans:style=Bold:size=8}${color2}${totalup eth0}${color}${font}
${voffset -2}${color0}${font VariShapes Solid:size=14}Q${font}${color}${goto 32}${voffset -6}Приём: ${font Droid Sans:style=Bold:size=8}${color1}${downspeed eth0}${color}${font} ${alignr}${color2}${downspeedgraph eth0 8,60 C6B9A6 C6B9A6}${color}
${goto 32}Всего: ${font Droid Sans:style=Bold:size=8}${color2}${totaldown eth0}${color}${font}
${voffset -2}${color0}${font Poky:size=13}w${font}${color}${goto 32}${voffset -4}Локальный IP: ${alignr}${color2}${addr eth0}${color}
#${goto 32}Внешний IP: ${execi 10 wget -O - -q icanhazip.com}${font}
# |--PPP0
${else}${if_up ppp0}
${voffset -13}${color0}${font VariShapes Solid:size=14}q${font}${color}${goto 32}${voffset -6}Отправка: ${font Droid Sans:style=Bold:size=8}${color1}${upspeed ppp0}${color}${font} ${alignr}${color2}${upspeedgraph ppp0 8,60 C6B9A6 C6B9A6}${color}
${goto 32}Всего: ${font Droid Sans:style=Bold:size=8}${color2}${totalup ppp0}${color}${font}
${voffset -2}${color0}${font VariShapes Solid:size=14}Q${font}${color}${goto 32}${voffset -6}Приём: ${font Droid Sans:style=Bold:size=8}${color1}${downspeed ppp0}${color}${font} ${alignr}${color2}${downspeedgraph ppp0 8,60 C6B9A6 C6B9A6}${color}
${goto 32}Всего: ${font Droid Sans:style=Bold:size=8}${color2}${totaldown ppp0}${color}${font}
${voffset -2}${color0}${font Poky:size=13}w${font}${color}${goto 32}${voffset -4}Локальный IP: ${alignr}${color2}${addr ppp0}${color}
${else}${voffset 4}${color0}${font PizzaDude Bullets:size=12}4${font}${color}${goto 32}Сеть недоступна${voffset 14}${endif}${endif}${endif}

#---POGODA---"
${voffset 0}${font Droid Sans:size=8:weight=bold}${color2}$alignc${execi 60 cat ~/.cache/pogoda/wheath.txt | sed '1!d'}${font}${color}
# В ..:..за окном:
${font Droid Sans:size=10:weight=bold}${color2}$alignc${execi 350 curl -s "http://wxdata.weather.com/wxdata/weather/local/RSXX1597?cc=*&dayf=10&unit=m" -o ~/.cache/pogoda/yahoo.xml}
# Скрипт bash подгрузка
${voffset 20}${execi 355 ~/.cache/pogoda/wheather.sh} 
#Градусник значек
${voffset -50}${offset 0}${font Weather:size=50}y${color2} 
#Вывод градусов через скрипт bash
${voffset -85}${offset 20}${font Droid Sans:size=20:weight=bold}${color1}${execi 60 cat ~/.cache/pogoda/wheath.txt | sed '3!d' | cut -b 25-29}С${font}${color}
#Ветер значек
${voffset -35}${offset 100}${color1}${font Weather:size=40}w 
#Скорость ветра из скрипта bash
${voffset -60}${offset 130}${font Droid Sans:size=10:weight=bold}${color2}${execi 900 cat ~/.cache/pogoda/wheath.txt | sed '6!d'}
#Дальше идут строчки погоды текстовые
#Ощущается как:
${voffset 10}${font Droid Sans:size=8:weight=bold}${color2}${execi 900 cat ~/.cache/pogoda/wheath.txt | sed '4!d'}
#Направление ветра
${font Droid Sans:size=8:weight=bold}${color2}${execi 900 cat ~/.cache/pogoda/wheath.txt | sed '5!d'}
#Влажность
${font Droid Sans:size=8:weight=bold}${color2}${execi 900 cat ~/.cache/pogoda/wheath.txt | sed '7!d'}
#Давление
${font Droid Sans:size=8:weight=bold}${color2}${execi 900 cat ~/.cache/pogoda/wheath.txt | sed '9!d'}
#Видимость
${font Droid Sans:size=8:weight=bold}${color2}${execi 900 cat ~/.cache/pogoda/wheath.txt | sed '10!d'}

${font Droid Sans:size=8:weight=bold}${color2}Funk@xakep.ru
${execpi 300 python ~/.scripts/gmail.py}

${font Droid Sans:size=8:weight=bold}${color2}Funk2256@gmail.com
${execpi 300 python ~/.scripts/gmail2.py}
${font Droid Sans:size=8:weight=bold}${color2}
${execpi 300 python3 ~/.scripts/vk_script.py}{font}

funk2256
() автор топика
Ответ на: комментарий от shrub

А вот тоже не понял, после переустановки появилось, не смотрел еще.

funk2256
() автор топика
Ответ на: комментарий от anonymous
#!/usr/bin/env python3
# -*- coding: utf-8 -*- 

import textwrap
import vk
api=vk.API(vk.Session())
post1 = api.wall.get(domain='pn6', count=2)
post2 = (u'Пост 1: ', post1[2].get('text'))
print(textwrap.fill(post2, width=40))

Так? еще не разобрался до конца с модулями.

funk2256
() автор топика
Ответ на: комментарий от funk2256

post2 = (u'Пост 1: ', post1[2].get('text'))

Це ж кортеж, как ты его печатать будешь?

post2 = 'Пост 1: ' + post1[2].get('text', '')
anonymous
()
Ответ на: комментарий от funk2256

Я грю, почему транслитом? Есть же нормальная кириллица.

anonymous
()
Ответ на: комментарий от anonymous

Упс... простите...

#!/usr/bin/env python3
# -*- coding: utf-8 -*- 

import textwrap
import vk
api=vk.API(vk.Session())
post1 = api.wall.get(domain='pn6', count=2)
print(textwrap.fill(post1[2].get('text'), 20))

Решено, всем спасибо.

funk2256
() автор топика
Ответ на: комментарий от funk2256

execpi будет лочить обновление коньков на время выполнения скрипта, и, например, часы будут подвисать. Для себя я решил проблему использованием texecpi.

Xenon ★★★
()
Ответ на: кстати да, от funk2256

Как я понял texeci вызывается ассинхронно, в отдельном потоке.

Xenon ★★★
()

Привет. Хотел бы ответить на ваш вопрос, а так же порекомендовать свои наработки по взаимодействию с vk.

1) Вам в ответе приходит словарь где текст это unicode строка (очевидно вы используете python2.X). Вам нужно привести это к utf-8

print(response[0]['text'].encode('utf-8'))

2) Для взаимодействия с vk рекомендую библиотеку https://github.com/prawn-cake/vk-requests которая сильно упростит вам жизнь =)

prwnck
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.