Python: Сокращаем URL с помощью bit.ly API

Адаптивная, SEO подготовленная WordPress тема WordPress тема под вирусный контент и социальные сети

Для начала стоит ответить на вопрос чего вообще сокращать ссылки. Варианты могут быть разные, но самая суть — это экономия места там, где оно действительно ценно. Т.е. если вы на форуме даёте ссылку на википедию, то, вероятно, лучше не пользоваться подобными сервисами, будет более удобно сразу видеть куда ведёт ссылка. Но в некоторых случаях это оправдано: при передаче через sms или, например, ссылку на ту же википедия иногда проще будет продиктовать голосом если она будет укорочена, при использовании, например, в рекламе, хотя тут уже спорно. Главная мысль — не надо их использовать где попало, это иногда раздражает.

Итак, к сути. На одном из проектов изначально планировалось использовать goo.gl в качестве сервиса по сокращению ссылок, но, случайно нашёл на stackoverflow инфомрацию о том, что некоторые операторы начали фильтровать SMS с такими URL от goo.gl (ответ был в сентябре 2012). Непонятно какие это операторы, скорее всего штатовские, да и было сказано что тех. поддержка twilio (облачный сервис который предоставляет различные услуги, связанные с телефонией, в том числе, отправка и приём SMS сообщений) пытается решить эту проблему, однако, не может предоставить отчёт о статусе, потому как всё зависит от тех самых мобильных операторов. Хотя с другой стороны, может не всё так плохо, я знаю как минимум один сервис который предоставляет коммуникацию с клиентами по SMS с использованием goo.gl, да и Google всё же крупная контора и, может быть, уже уладила данную проблему сама.

Однако, дабы не проверять эту теорию опытным путём, было принято решение использовать bit.ly в качестве сервиса по сокращению URL. Честно говоря, выглядит он на голову лучше goo.gl: менее запутанная документация, да чего уж там, в качестве картинки в шапке на странице с документацией размытый python-код, вероятно, в редакторе vim с темой solarized! Совпадение или знак? И сама документация выглядит более приятно.

Есть большой набор для готовых библиотек на разных языках для взаимодействия с API bit.ly. Для python таких целых 3, одна из которых официальная:

  • http://github.com/bitly/bitly-api-python (официальный Python клиент)
  • http://www.chrishannam.co.uk/2009/01/bitly-competition-entry (для Google App Engine)
  • http://code.google.com/p/python-bitly

Вторая отпадает, т.к. проект не под GAE, третья — хостится на code.google.com, который, может и был достойным конкурентом во времена популярности sourceforge, но сейчас скорее напоминает кладбище SVN-репозиториев сомнительного качества (потому как почти все нормальные перешли на github или bitbucket, остальные либо мертвы, либо сами по себе не очень). В общем, на мой взгляд, выбор очевиден — официальный клиент.

Устанавливаем bit.ly клиент:

$ pip install bitly_api

Пока он ставится, получаем свой access token по этой ссылке.

Дальше всё достаточно просто:

Создаём клиент, вызываем метод shorten указав ему ссылку, которую надо сократить. В ответ получаем такой словарь:

Где:

  • long_url — ссылка которая была сокращена, не всегда эквивалентна переданному значению: могут возникнуть отличия в ходе нормализации ссылки — может отличаться, например, регистр доменного имени, но в функциональном плане, естественно, они будут указывать на один и тот же ресурс;
  • new_hash — флаг того, что она была сокращена впервые;
  • hash — идентификатор long_url в bit.ly, который уникален для текущего аккаунта;
  • global_hash — глобальный идентификатор long_url;
  • url — сама сокращённая ссылка;

Далее мы можем посмотреть, например, количество кликов по сокращённой ссылке:

Этот вариант вернёт число кликов, есть ещё метод con.clicks, но он использует deprecated-вариант API (т.е. устаревший) и возвращает несколько больше данных — хеши, саму ссылку, да ещё всё это будет обёрнуто в список.

Возможностей несколько больше: можно объединять ссылки в т.н. связки (bundles), получать статистику по кликам в минуту, количество расшариваний в социальных сетях, информацию о referrer’ах. Всё это легко найти в официальных доках, но, если будут желающие, можно описать тут некоторые интересные фичи.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: