Сайт Димы Джуса / блог / записи с тегом «Python» /

Геотеги Flickr в EXIF

Понадобилось тут дёрнуть все привязанные к карте во Фликере фотки назад на компьютер, причём так, чтобы геотеги как-нибудь сохранились в EXIF.

Наваял небольшой скриптик ffg.py, который использует Python FlickrAPI и сохраняет все фотки с геотегами из аккаунта в локальной папке. Для записи геотегов я не нашёл ничего лучше, кроме как генерировать кучку вызовов exiv2(1) (мощная утилита для работы с EXIF, IPTC, XMP — всякими метаданными в фотках, короче; можно было бы юзать и какой-нибудь exiftool(1)).

То есть, юзается так:

./ffg.py --photos-directory=~/flickr-photos/ --exiv-script=~/flickr-photos/exif.sh

(в браузере появится запрос на подтверждение из Flickr)

А потом проставляем геотеги:

sh ~/flickr-photos/exif.sh

Можно грузить на Panoramio, там геотеги из EXIF подцепляются автоматически, чего не скажешь о Flickr — из-за этого и приходится извращаться.

Не имея готовых GPS-данных сегодня не так уж много путей по привязке фотографий к местности. Если не считать Веб-решений (Flickr, Panoramio), между которых без костылей типа описанного скрипта нет взаимозаменяемости, остаётся только digiKam (спасибо AP, подсказавшему о существования этой фичи), в котором используется Marble widget.

Комментарии

Простое извлечение микроформатов с помощью XSLT

Микроформаты — это хорошо, просто и понятно.

Как можно извлечь микроформатированный контент из документа и сделать с ним миллион классных штук?

XSLT

Удобно для запросов в XML-документе на извлечение микроформатированного контента использовать выражения XPath.

Читать далее
Комментарии (2)

PyTils

Долгое время на месте дат постов здесь выводились фразы, лишь временами верные грамматически, типа «5 недель назад», «1 недель назад», a то и вовсе «2 дней назад». Джанговский фильтр timesince лишь берёт перевод английских «weeks» или «days» из локали системы, где не предусмотрена поддержка падежей.

Органично также смотрятся даты вроде «2 марта» или «15 мая», но фильтр date при передаче F в составе форматирующей строки возвращает имя месяца в именительном падеже без возможности склонения. С днями недели то же самое.

Можно переделать перевод Django на свой лад (там используется gettext), однако есть весьма приятный пакет PyTils для Python, который встраивается в том числе и в Django, предоставляя функции для работы с русским языком.

После установки в Django становится возможным использовать вкусные плюшки. Во-первых, russian-aware фильтры форматирования даты — ru_strftime и ru_strftime_inflected. Такой код:

{{ entry.add_date|ru_strftime:"%d %B" }}

выведет дату в виде «19 марта».

На замену встроенному в Django фильтру timesince приходит distance_of_time:

{{ entry.add_date|distance_of_time }}

выведет дату в виде «5 дней назад».

Есть также славная работа с числами. choose_plural выбирает правильное окончание в зависимости от числа (варианты передаются как для чисел 1, 2, 5):

Всего {{ hits }} запис{{ hits|choose_plural:"ь,и,ей" }}

выведет текст «Всего 5 записей» или «Всего 121 запись».

Есть и несколько других приятных возможностей.

Комментарии

Daily Digest

Вчера с утреца попедалил на велосипеде, употелся, уже через 2 с половиной часика с языком на плече припёрся домой.

Написал на Python программку, помогающую смотреть телевизионные каналы в сети Corbina Telecom без браузера. Работает хитро: открывает соединение с веб-сервером, из полученной странички вырезает уникальную ссылку на видеопоток вида mms://blah-blah-blah и передаёт её в mplayer для просмотра. Для гуя используется PyGTK+glade; также задействованы модули urllib и re для выдёргивания адреса.

Сегодня ночью что-то не дрыхлось. Писал в блокноте тексты на пыхпыхе для своей новой системы. Потом проснулся снова от жуткой грозы (спросонья вообще не мог разобраться поначалу, что происходит). Потом к утру по телефону прозвонился какой-то хмырь и разбудил всех.

Комментарии (1)

Знакомство с фракталами

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

Самыми, на мой взгляд, простыми для понимания являются геометрические фракталы. Получаются они при помощи изменения исходной фигуры по определённым правилам и применения этих правил к получившимся фигурам некоторое количество раз, которое по определению фрактала стремится к бесконечности, а на практике же для визуализации ограничивается. Геометрические фракталы наиболее наглядно демонстрируют самоподобие фракталов.

Чтобы было понятнее, вот здесь можно посмотреть на изображения геометрических фракталов: здесь и здесь

Алгебраические фракталы строятся при помощи применения определённых формул к числам, в основном комплексным.

В интернете море примеров изображений разных фракталов, достаточно в любом поисковике ввести «фрактал» и посмотреть по ссылкам.

Фракталы имеют широкое практическое применение, в частности при визуализации сложных природных случайных объектов: деревьёев, береговых линий и т.п.

Меня заинтересовали алгоритмы построения простейших геометрических фракталов.

Реализовал на Python с использованием PIL построение простейшего фрактала — треугольника Серпиньского. Получилось здорово, алгоритм универсален для любого исходного треугольника, можно раскрашивать треугольники одного поколения в один цвет или красить всё случайным образом. Чистых source lines of code — 43.

Комментарии (1)

Знакомство с Python

Начал изучение Python. Очень приятный язык, простой, понятный, много модулей. Освоил glade - замечательно. Как появится много времени, можно будет реализовать ряд интересных идей на Python + PyGTK + glade.

Комментарии
Всего 6 записей с тегом «Python»