LinkExchange — это программная библиотека для языка Python, предназначенная для интеграции различных систем купли-продажи ссылок с сайтом, созданным на Python.
На данный момент поддерживаются системы Sape.ru (обычные и контекстные ссылки) и LinkFeed.ru.
Коротко об основных преимуществах перед официальным PHP-кодом и кодом на Python, сделанным по его подобию:
- удобное разбиение ссылок на блоки и их форматирование;
- высокая производительность на крупных сайтах;
- легко подключается к популярным фреймворкам и приложениям.
LinkExchange состоит из следующих компонентов:
- клиенты к различным системам купли-продажи ссылок;
- классы форматирования блоков ссылок;
- драйвера баз данных для хранения данных, что возвращают удаленные службы клиентам;
- вспомогательный код для интеграции с различными основанными на Python веб-приложениями и фреймворками.
Рассмотрим пример подключения к Django. Фрагмент файла settings.py:
Код:
from os.path import dirname, join
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
# загружаем переменные для доступа к ссылкам из шаблонов
'linkexchange.django.context_processors.linkexchange',
)
# определяем путь к конфигу LinkExchange
LINKEXCHANGE_CONFIG = join(dirname(__file__), 'linkexchange.cfg')
Файл linkexchange.cfg:
Код:
[options]
; если надо принудительно задать хост, ставим эту опцию,
; иначе хост определяется по HTTP запросу
; host = example.com
; определение клиента
[client-1]
type = linkfeed
user = user12345
; используем модуль shelve для доступа к БД, что позволяет нам
; быстро получать нужные данные, не загружая весь список
; ссылок в память.
db_driver.type = shelve
; храним БД в файле linkfeed-XXX.db, где XXX заменяется на имя домена
db_driver.filename = linkfeed-XXX.db
; определение объектов форматирования
; количество объектов форматирования определяет
; количество блоков ссылок на странице
[formatter-1]
; первый блок ссылок оформляется как список <UL><LI>...</UL>
type = list
; до двух ссылок в блоке
count = 2
; класс тега UL будет linx
class_ = linx
; префикс к каждой ссылке
prefix = "- "
; а в конце ставим точку
suffix = ". "
[formatter-2]
; второй блок оформим как элемент DIV с перечисленными
; в нем ссылками
type = inline
count = 2
class_ = linx
; ссылки разделяем этой строкой
delimiter = " | "
; если в блоке есть ссылки, то перед ними ставим это
prolog = "| "
; а после ссылок ставим это
epilog = " |"
[formatter-3]
; здесь опять ненумерованный список
type = list
; этот блок последний и он забирает все оставшиеся ссылки
count = none
class_ = linx
prefix = "+ "
suffix = ". "
В шаблоне используем переменную linkexchange_blocks:
Код:
<p> Место 1 : {{ linkexchange_blocks.0|safe }}</p>
<p> Место 2 : {{ linkexchange_blocks.1|safe }}</p>
<p> Место 3 : {{ linkexchange_blocks.2|safe }}</p>