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

D1AVOL

Client
Регистрация
26.09.2015
Сообщения
82
Благодарностей
78
Баллы
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


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

 

Вложения

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

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование модератором:

D1AVOL

Client
Регистрация
26.09.2015
Сообщения
82
Благодарностей
78
Баллы
18
Ответ приходит в json формате. Можно же парсить json кубиком "Обработка JSON/XML", а не регуляркой.
у меня этот шаблон работает уже 2 года, с тех времен когда этого кубика еще не было. а так, конечно, будет удобнее распаршивать ответ
 

Brabus_bots

Client
Регистрация
13.04.2019
Сообщения
103
Благодарностей
35
Баллы
28
А почему просто не сделать на пост/гет ? На много меньше действий пришлось бы сделать :-)
 
  • Спасибо
Реакции: GreenWay

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
8 501
Благодарностей
2 922
Баллы
113
  • Спасибо
Реакции: ZSHab

D1AVOL

Client
Регистрация
26.09.2015
Сообщения
82
Благодарностей
78
Баллы
18
А почему просто не сделать на пост/гет ? На много меньше действий пришлось бы сделать :-)
моя статья об использовании апи данного сервиса. можно отснифать браузер и сделать без апи, но это уже совершенно другая тема для другой статьи :-) в последнее время у меня не получается сократить много ссылок через веб морду без прокси
 
  • Спасибо
Реакции: Alex1987

Alex1987

Client
Регистрация
21.06.2016
Сообщения
54
Благодарностей
8
Баллы
8
Спасибо будем использовать ) В веб и правда много не сократишь без проксей)
 

bumer

Client
Регистрация
15.03.2015
Сообщения
222
Благодарностей
81
Баллы
28
Хороша статья про ссылки, походу это лучшая что Я читал . Но это просто идея как использовать зенку, молодец автор. Много заработал уже используя это?
 

vrska

Client
Регистрация
07.02.2010
Сообщения
456
Благодарностей
305
Баллы
63
Шаблоны помогают автоматизировать рутинные действия и экономить время, а не приносить прибыль
Вряд ли какая то конкурсная статья переплюнет по профиту твою, об удобрениях
 
Последнее редактирование:
  • Спасибо
Реакции: bumer

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
173
Благодарностей
143
Баллы
43
Шаблоны помогают автоматизировать рутинные действия и экономить время, а не приносить прибыль
Да ладно? Ну ок...

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

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

vrska

Client
Регистрация
07.02.2010
Сообщения
456
Благодарностей
305
Баллы
63
Да ладно? Ну ок...
Резануло слух? Прости, если задел. Ты всю жизнь пилишь шаблоны, а оно вот как получается
пс Я говорил о шаблонах похожих на этот
токсичное комьюнити

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

D1AVOL

Client
Регистрация
26.09.2015
Сообщения
82
Благодарностей
78
Баллы
18
Добавил версию 1.1, которая умеет парсить JSON актуальным способом.
 

Вложения

Последнее редактирование:

D1AVOL

Client
Регистрация
26.09.2015
Сообщения
82
Благодарностей
78
Баллы
18
Доработал шаблон. Теперь аккаунты bit.ly хранятся в файле, а не во входных настройках, можно добавлять сразу несколько аккаунтов. Сделал видео как встраивать шаблон в свой проект.
 

Вложения

  • Спасибо
Реакции: Carri и Ha9p

sunblaze

Пользователь
Регистрация
16.07.2013
Сообщения
39
Благодарностей
2
Баллы
8
Еще сервис с API http://url-qr.tk на 1500 ссылок бесплатных
 

ishimoku

Client
Регистрация
28.03.2018
Сообщения
12
Благодарностей
0
Баллы
1
Шаблон только сокращает ссылки, которые вставлены в список? Он не размножает ссылки? Если дать ему одну ссылку и он например из нее сделает 500.
 

D1AVOL

Client
Регистрация
26.09.2015
Сообщения
82
Благодарностей
78
Баллы
18
Шаблон только сокращает ссылки, которые вставлены в список? Он не размножает ссылки? Если дать ему одну ссылку и он например из нее сделает 500.
этот нет.
Шаблон только сокращает ссылки, которые вставлены в список? Он не размножает ссылки? Если дать ему одну ссылку и он например из нее сделает 500.
 

Animal

Client
Регистрация
15.06.2016
Сообщения
714
Благодарностей
126
Баллы
43
Как рандомизацию окончания настроить?

Код:
http://bit.ly/30wwJl4
Что-то у меня оно не рандомизируеться.
 

Animal

Client
Регистрация
15.06.2016
Сообщения
714
Благодарностей
126
Баллы
43
разхные ссылки скармливать
В моем случае нужно как раз наоборот: на входе одна и та же ссылка, а на выходе - разные.
Если у кого-то есть решение - подскажите как поправить.
 

doc

Client
Регистрация
30.03.2012
Сообщения
7 635
Благодарностей
3 740
Баллы
113
В моем случае нужно как раз наоборот: на входе одна и та же ссылка, а на выходе - разные.
Если у кого-то есть решение - подскажите как поправить.
добавляй рандомные гет параметры к своей ссылке
 

doc

Client
Регистрация
30.03.2012
Сообщения
7 635
Благодарностей
3 740
Баллы
113
Не катит. Адрес на выходе получается не действительный.
использовать другую сокращалку как прокладку для генерации кучи адресов, которые после скормить бит лу. Если он это позволяет. Ну или юзать другой сервис
 

Animal

Client
Регистрация
15.06.2016
Сообщения
714
Благодарностей
126
Баллы
43
использовать другую сокращалку как прокладку для генерации кучи адресов, которые после скормить бит лу. Если он это позволяет. Ну или юзать другой сервис
Геморное это дело.
В личном кабинете, в ручную можно меня окончание. Если это как-то реализовать на запросах... было бы гуд.
 

doc

Client
Регистрация
30.03.2012
Сообщения
7 635
Благодарностей
3 740
Баллы
113

Duser

Client
Регистрация
11.08.2013
Сообщения
200
Благодарностей
136
Баллы
43
Вот автор - великий человек. Собирался сам писать такой шаблон, полез в гугол, а тут оказываетя уже всё сделано ))

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

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