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

Discussion in 'Одиннадцатый конкурс статей' started by D1AVOL, May 20, 2019.

  1. D1AVOL

    D1AVOL Client

    Joined:
    Sep 26, 2015
    Messages:
    72
    Likes Received:
    67
    Всем привет.
    Сегодня мы разберем 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

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

    Code (text):
    1. LOGIN:zennoposter11
    2. APIKEY: R_fdb5a0a92fbb426486000faf8294d5a7
    Дальше будем разбираться с самим API
    Переходим к изучению API. Полное описание можно прочитать тут.

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

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

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

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

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

    Code (text):
    1. var post = System.Web.HttpUtility.UrlEncode(project.Variables["link"].Value);
    2.     return post;
    Далее делаем get запрос и если все хорошо, то получаем такой ответ:

    Code (text):
    1. {"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

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

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

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

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



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

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

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

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



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

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

     

    Attached Files:

    Last edited by a moderator: Jun 2, 2019
  2. Denomm

    Denomm Client

    Joined:
    Mar 25, 2019
    Messages:
    485
    Likes Received:
    213
    Ответ приходит в json формате. Можно же парсить json кубиком "Обработка JSON/XML", а не регуляркой.
     
    D1AVOL and Dorian_Gray like this.
  3. D1AVOL

    D1AVOL Client

    Joined:
    Sep 26, 2015
    Messages:
    72
    Likes Received:
    67
    у меня этот шаблон работает уже 2 года, с тех времен когда этого кубика еще не было. а так, конечно, будет удобнее распаршивать ответ
     
  4. Brabus_bots

    Brabus_bots Client

    Joined:
    Apr 13, 2019
    Messages:
    52
    Likes Received:
    18
    А почему просто не сделать на пост/гет ? На много меньше действий пришлось бы сделать :-)
     
    GreenWay likes this.
  5. Mikhail B.

    Mikhail B. Moderator

    Joined:
    Dec 23, 2014
    Messages:
    5,842
    Likes Received:
    1,894
    Ткните пальцем где тут, не на запросах. А то не вижу))
     
  6. D1AVOL

    D1AVOL Client

    Joined:
    Sep 26, 2015
    Messages:
    72
    Likes Received:
    67
    моя статья об использовании апи данного сервиса. можно отснифать браузер и сделать без апи, но это уже совершенно другая тема для другой статьи :-) в последнее время у меня не получается сократить много ссылок через веб морду без прокси
     
    Alex1987 likes this.
  7. Alex1987

    Alex1987 Client

    Joined:
    Jun 21, 2016
    Messages:
    38
    Likes Received:
    5
    Спасибо будем использовать ) В веб и правда много не сократишь без проксей)
     
  8. bumer

    bumer Client

    Joined:
    Mar 15, 2015
    Messages:
    220
    Likes Received:
    78
    Хороша статья про ссылки, походу это лучшая что Я читал . Но это просто идея как использовать зенку, молодец автор. Много заработал уже используя это?
     
  9. vrska

    vrska Client

    Joined:
    Feb 7, 2010
    Messages:
    252
    Likes Received:
    91
    Шаблоны помогают автоматизировать рутинные действия и экономить время, а не приносить прибыль
    Вряд ли какая то конкурсная статья переплюнет по профиту твою, об удобрениях
     
    Last edited: May 21, 2019
    bumer likes this.
  10. Jeronimo

    Jeronimo Client

    Joined:
    Jan 7, 2014
    Messages:
    164
    Likes Received:
    128
    Да ладно? Ну ок...

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

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

    vrska Client

    Joined:
    Feb 7, 2010
    Messages:
    252
    Likes Received:
    91
    Резануло слух? Прости, если задел. Ты всю жизнь пилишь шаблоны, а оно вот как получается
    пс Я говорил о шаблонах похожих на этот
    токсичное комьюнити

    Что касается статьи, в 2к19 парсить json регулярками не актуально.
    Да-да, я прочел, что когда автор делал этот шаблон, кубика json не было. Но был c#, который присутсвует в этом шаблоне
     
    Last edited: May 21, 2019
    Jeronimo likes this.
  12. D1AVOL

    D1AVOL Client

    Joined:
    Sep 26, 2015
    Messages:
    72
    Likes Received:
    67
    Добавил версию 1.1, которая умеет парсить JSON актуальным способом.
     

    Attached Files:

    Last edited: May 21, 2019
  13. D1AVOL

    D1AVOL Client

    Joined:
    Sep 26, 2015
    Messages:
    72
    Likes Received:
    67
    Доработал шаблон. Теперь аккаунты bit.ly хранятся в файле, а не во входных настройках, можно добавлять сразу несколько аккаунтов. Сделал видео как встраивать шаблон в свой проект.
     

    Attached Files:

    Ha9p likes this.
  14. sunblaze

    sunblaze Пользователь

    Joined:
    Jul 16, 2013
    Messages:
    34
    Likes Received:
    2
    Еще сервис с API http://url-qr.tk на 1500 ссылок бесплатных
     
  15. D1AVOL

    D1AVOL Client

    Joined:
    Sep 26, 2015
    Messages:
    72
    Likes Received:
    67
    фрином домены?
     
  16. ishimoku

    ishimoku Новичок

    Joined:
    Mar 28, 2018
    Messages:
    9
    Likes Received:
    0
    Шаблон только сокращает ссылки, которые вставлены в список? Он не размножает ссылки? Если дать ему одну ссылку и он например из нее сделает 500.
     
  17. D1AVOL

    D1AVOL Client

    Joined:
    Sep 26, 2015
    Messages:
    72
    Likes Received:
    67
    этот нет.
     

Пользователи просматривающие тему (Пользователей: 1, Гостей: 0)

  1. D1AVOL