Сокращатель ссылок в каждый Zennoposter (разбираем bitly api, tinyurl api)

  • Автор темы Автор темы D1AVOL
  • Дата начала Дата начала

D1AVOL

Client
Регистрация
26.09.2015
Сообщения
89
Реакции
82
Баллы
18
Всем привет.
Сегодня мы разберем API популярного сервиса для сокращения ссылок Bit.ly и сделаем для него шаблон, который можно встроить в свой проект, либо использовать как самостоятельный проект :-)

Что такое API?
Если прочитать википедию, то становится понятно что это (англ. application programming interface) описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой.
Грубо говоря - это дает нам возможность отправить 1 или 2 запроса к сайту и получить нужный нам результат. Будь то сокращение ссылки или отправка сообщения в мессенджере. Нам не нужно будет заходить на сам сайт и затрачивать ресурсы нашего компьютера для загрузки страницы со всеми изображениями и форматированием.

Итак поехали:
Для того чтобы воспользоваться API данного сервиса, нам сначала нужно создать там аккаунт и получить ключ API_KEY.

На скринах пошагово показано как зарегистрироваться и получить API KEY:
Переходим на страницу и регистрируемся:
Страница регистрации: https://bitly.com/a/sign_up

На странице регистрации можно вписать несуществующий email. Аккаунты, которые не подтверждены по почте прекрасно работают у меня уже несколько лет.
bitlyimg1.jpg



Регистрируемся, нас перенаправит в наш аккаунт, в правом верхнем углу нажимаем на меню (указано стрелкой). Далее следуем скринам.
Жмем Settings > Advanced Settings > Api support и забираем там API кей и логин. (либо сразу можно перейти на эту страницу http://bitly.com/a/your_api_key)
bitlyimg2.jpg


У меня получилось:

Код:
Развернуть Свернуть Копировать
LOGIN:zennoposter11
APIKEY: R_fdb5a0a92fbb426486000faf8294d5a7

Дальше будем разбираться с самим API
Переходим к изучению API. Полное описание можно прочитать тут.

В bitly имеется несколько способов аутентификации. Подробнее об этом читаем тут. Мы будем использовать аутентификацию с помощью ранее полученного API KEY.
Из документации следует, что мы должны передавать в своем запросе следующие данные:
Код:
Развернуть Свернуть Копировать
login=**login**&apiKey=**apiKey**
Таким образом сервис bitly нас опознает и разрешит нам его использовать для сокращения ссылок.

Все методы я не буду разбирать в данной статье, нам нужен только метод для сокращения ссылок. https://dev.bitly.com/links.html#v3_shorten
Изучив это мы понимаем, что для того чтобы нам сократить ссылку, нужно отправить следующий GET запрос (Будем использовать авторизацию по apikey которую разбирали чуть выше):

http://api.bitly.com/v3/shorten?longUrl=НАША_ДЛИННАЯ_ССЫЛКА&login=ЛОГИН&apiKey=АПИ_КЕЙ
Разберем чуть подробнее этот запрос.
Мы обращаемся к адресу http://api.bitly.com/v3/shorten
Передаем ему следующие значения переменных:
longUrl= в котором передаем нашу длинную ссылку
login= в котором передаем наш логин
apiKey= api key который мы получили

Попробуем воспроизвести это действие в Zennoposter.
Для написания шаблона я использовал Zennoposter версии 5.23.0.0
Я буду сокращать ссылку на раздел форума 11 конкурса статей Zennoposter :-)

Первым делом нам необходимо закодировать нашу ссылку в UrlEncode, используем код C#. (Нужно подключить ссылку из GAC - System.Web)

Безымянный.png


Код:
Развернуть Свернуть Копировать
var post = System.Web.HttpUtility.UrlEncode(project.Variables["link"].Value);
    return post;

Далее делаем get запрос и если все хорошо, то получаем такой ответ:

Код:
Развернуть Свернуть Копировать
{"status_code":200,"status_txt":"OK","data":{"url":"http://bit.ly/30wwJl4","hash":"30wwJl4","global_hash":"30zrKjm","long_url":"https://zennolab.com/discussion/forums/odinnadcatyj-konkurs-statej.226/","new_hash":1}}

Теперь просто парсим регулярным выражением нашу ссылку. (hash) Используем встроенный в ProjectMaker конструктор регулярных выражений.
регулярка.png



К получившемуся хешу остается только подставить один из доменов bitly (bitly,bit.ly,j.mp), реализуем выбор рандомного домена одним кубиком.
Самый простой шаблон выглядит так:


простой шаблон.png

Теперь усложним его. Сделаем для начала шаблон для простого сокращения ссылок из файла. Добавим список из которого будем брать ссылки и список в который будем складывать результат.


шаблон сокращает по списку..png

результат выполнения шаблона по списку.png


Учитывайте, что у Bitly есть лимиты на количество ссылок. Это 1000 ссылок на 1 аккаунт в час и 10000 в месяц (если ничего не изменилось).

Добавим исключения в нашем шаблоне.

Если не получается спарсить hash ссылки - это означает то что ссылка не сократилась. В таком случае добавляем длинную ссылку обратно в список и выводим ошибку в лог.
Вот мы и получили рабочий шаблон для сокращения ссылок по списку. Вынесем апикей и логин во входные настройки.

Еще немного усложним шаблон.
Добавим возможность использовать его таким образом, чтобы его можно было использовать для встраивания в свой проект (проект в проекте).

Я реализую это таким способом.

Мы будем передавать в этот шаблон переменную link. Если при старте шаблона переменная link пустая, то будем сокращать ссылки по списку, а если переменная не пустая (т.е. мы ее передали из другого шаблона) то будем сокращать только ее и в ответ отдавать уже готовую сокращенную ссылку.



готовый шаблон.png
Теперь мы можем встроить наш шаблон в свой комбайн :-)
Получилось достаточно примитивно, но решениие вполне рабочее, сам его использую в "промышленных масштабах" :-)

Api других популярных сокращалок тоже простое.
В большинстве нужно просто подставить ссылку закодированную в urlencode в Get запрос (даже без api кей и авторизации)

Рассмотрим еще сервис Tinyurl.com. На самом сайте я не нашел документацию к апи, поэтому загуглил и нашел вот это решение.

Из него следует:

http://tinyurl.com/api-create.php?url=НАША_ДЛИННАЯ_ССЫЛКА

отправляем сюда get запрос и получаем нашу готовую ссылку, даже не нужно парсить ее из ответа. Не забываем закодировать ссылку в urlencode.



Добавил в шаблон еще и этот сервис.
результат.png


Надеюсь своим шаблоном я ни кому не навредил :-)

 
Номер конкурса статей
  1. Одиннадцатый конкурс статей
Тема статьи
  1. Другое

Вложения

Последнее редактирование модератором:
Ответ приходит в json формате. Можно же парсить json кубиком "Обработка JSON/XML", а не регуляркой.
у меня этот шаблон работает уже 2 года, с тех времен когда этого кубика еще не было. а так, конечно, будет удобнее распаршивать ответ
 
А почему просто не сделать на пост/гет ? На много меньше действий пришлось бы сделать :-)
моя статья об использовании апи данного сервиса. можно отснифать браузер и сделать без апи, но это уже совершенно другая тема для другой статьи :) в последнее время у меня не получается сократить много ссылок через веб морду без прокси
 
  • Спасибо
Реакции: Alex1987
Спасибо будем использовать ) В веб и правда много не сократишь без проксей)
 
Хороша статья про ссылки, походу это лучшая что Я читал . Но это просто идея как использовать зенку, молодец автор. Много заработал уже используя это?
 
Шаблоны помогают автоматизировать рутинные действия и экономить время, а не приносить прибыль
Вряд ли какая то конкурсная статья переплюнет по профиту твою, об удобрениях
 
Последнее редактирование:
  • Спасибо
Реакции: bumer
Шаблоны помогают автоматизировать рутинные действия и экономить время, а не приносить прибыль
Да ладно? Ну ок...

Вряд ли какая то конкурсная статья переплюнет по профиту твою
А какой профит? Я что-то его тут не увидел.

API облегчают жизнь разработчику... Спасибо кто прикручивает этот механизм к своим сервисам.
У Bitly очень простой синтаксис API. Пару месяцев назад разрабатывал такой же шаблон.
Стоит отметить, что у Bitly есть лимиты - не более 1000 ссылок в месяц. Далее за дополнительную плату.
 
Да ладно? Ну ок...
Резануло слух? Прости, если задел. Ты всю жизнь пилишь шаблоны, а оно вот как получается
пс Я говорил о шаблонах похожих на этот
токсичное комьюнити

Что касается статьи, в 2к19 парсить json регулярками не актуально.
Да-да, я прочел, что когда автор делал этот шаблон, кубика json не было. Но был c#, который присутсвует в этом шаблоне
 
Последнее редактирование:
  • Спасибо
Реакции: Jeronimo
Добавил версию 1.1, которая умеет парсить JSON актуальным способом.
 

Вложения

Последнее редактирование:
Доработал шаблон. Теперь аккаунты bit.ly хранятся в файле, а не во входных настройках, можно добавлять сразу несколько аккаунтов. Сделал видео как встраивать шаблон в свой проект.
 

Вложения

  • Спасибо
Реакции: Carri и Ha9p
Еще сервис с API http://url-qr.tk на 1500 ссылок бесплатных
 
Шаблон только сокращает ссылки, которые вставлены в список? Он не размножает ссылки? Если дать ему одну ссылку и он например из нее сделает 500.
 
Шаблон только сокращает ссылки, которые вставлены в список? Он не размножает ссылки? Если дать ему одну ссылку и он например из нее сделает 500.
этот нет.
Шаблон только сокращает ссылки, которые вставлены в список? Он не размножает ссылки? Если дать ему одну ссылку и он например из нее сделает 500.
 
Как рандомизацию окончания настроить?

Код:
Развернуть Свернуть Копировать
http://bit.ly/30wwJl4

Что-то у меня оно не рандомизируеться.
 
разхные ссылки скармливать
В моем случае нужно как раз наоборот: на входе одна и та же ссылка, а на выходе - разные.
Если у кого-то есть решение - подскажите как поправить.
 
В моем случае нужно как раз наоборот: на входе одна и та же ссылка, а на выходе - разные.
Если у кого-то есть решение - подскажите как поправить.
добавляй рандомные гет параметры к своей ссылке
 
Не катит. Адрес на выходе получается не действительный.
использовать другую сокращалку как прокладку для генерации кучи адресов, которые после скормить бит лу. Если он это позволяет. Ну или юзать другой сервис
 
использовать другую сокращалку как прокладку для генерации кучи адресов, которые после скормить бит лу. Если он это позволяет. Ну или юзать другой сервис
Геморное это дело.
В личном кабинете, в ручную можно меня окончание. Если это как-то реализовать на запросах... было бы гуд.
 
Вот автор - великий человек. Собирался сам писать такой шаблон, полез в гугол, а тут оказываетя уже всё сделано ))

Вопрос: Сколько ссылок позволяет сократить сервис bitly на один аккаунт?
 
  • Спасибо
Реакции: Carri

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)