jungo 10.04.2011 23:49
Скрипты — Получаем данные со странички дропбокс с помощью python
Я использую xmonad без панелей/треев и тому подобных плюшек, которые лично мне не нужны для продуктивной работы. Как то раз понадобилось мониторить события, которые происходят на дропбоксе, в т.ч. в расшаренной с другими пользователями директории. Поэтому решил написать скрипт, который получал бы все произошедшие события и отрисовывал их на рабочем столе, прямо на обоине.Вообще рабочий стол я вижу редко, поэтому цвет и содержимое обоев для меня не важно, соответственно есть две возможности:
1) либо создавать обоину монотонного цвета (например, под цвет темы, у меня Zenburn)
2) либо использовать любое готовое изображение
Для работы скрипта необходимы:
1) Python 2
2) feh
3) Аккаунт на www.dropbox.com
Вот сам скрипт:
Настройки располагаются в самом скрипте (мне так было удобнее). Данный скрипт показывает общий подход к задаче - в принципе, можно выдернуть абсолютно любую информацию с личной страницы и отобразить её, например в conky/xmobar/dzen2/etc.
в python все же не принято использовать конструкции типа
ниже приведенный вариант более pythonic так сказать :):
for i in range(len(db_date)):
без особой на то нуждыниже приведенный вариант более pythonic так сказать :):
for i in db_date:
db_event.append(i<0>+i<1>, i)
return db_event
ага pythonic, но в данном случае, range нужен еще для получения индексов из db_title (не только db_date) ;)
оу... прошу прощения, действительно не заметил что данные берутся из title
но в таком случае более pythonic код был бы похож на это:
P.S. Не сочтите за наглость. Код отличается не значительно. Сколько программистов столько и подходов к программированию. :)
но в таком случае более pythonic код был бы похож на это:
for i, d in enumerate(db_date):
db_event.append(<0>+db_title<1>, d>)
return db_event
P.S. Не сочтите за наглость. Код отличается не значительно. Сколько программистов столько и подходов к программированию. :)
А если события все-же надо выводить на рабочий стол, то я порекомендовал бы функцию get_events() сделать вида:
def get_events():
data = urllib.urlopen("https://www.dropbox.com/циферки/циферки/циферки/events.xml").read()
db_date = re.findall('<pubDate>(.*)</pubDate>', data)
db_title = re.findall('(.*)<a href='.*' title=\".*\">(.*)</a>.', data)
db_event = <>
for i in range(len(db_date)):
db_event.append(<0>+db_title<1>, db_date>)
### db_event<0> = 'title'
### db_event<1> = 'date'
return db_event
Be happy! =)