Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Сетевые скрипты [PtokaX] _ ShortUrls

Автор: Nickolya 1.9.2010, 23:14

Название: ShortUrls
Версия: 1.01
Версия API: API2
Автор: Nickolya
Запросил: DEN 007 http://mydc.ru/topic3842.html

Скрипт сокращает в чате все ссылки, превышающие заданный в скрипте порог длинны, через сервис http://mydc.ru/r/?http://is.gd/

При отправке в чат чего-то типа

Код
http://mydc.ru/ipb.html?act=Search&nav=at&CODE=show&searchid=8176c5fd684f87cf834d8493133d1cb3&search_in=topics&result_type=topics&lastdate=86400
мы получим
Цитата
<Nickolya> http://mydc.ru/r/?http://is.gd/ePQkt (сокращенная ссылка на mydc.ru)


Код
    Изменения в 1.01:
        - команда для получения короткой ссылки
        - профили, которым доступна команда
        - меню для команды


Из конфига можно выделить
Код
local iMaxLen = 40    -- максимальная длинна ссылки для отправки в чат без сокращения, при ее привышении ссылка будет сокращена
http.TIMEOUT = 1    -- таймаут для ответа от сервера, в секундах

local sSeeCmd = "getshorturl"    -- команда для получения короткой ссылки
local tCanUseCmdsProfiles = {    -- профили, которым можно использовать команду
    [0] = true,
    [1] = true,
    [2] = true,
    [3] = true,
    [-1] = false,
}
local sMenuWay = "Меню пользователя\\"    -- путь в меню


Для работы, естественно, потребуется установленная http://mydc.ru/topic43.html.

Старая версия
 ShortUrls_by_Nickolya_v_1.00.lua ( 1.12 килобайт ) : 34


 ShortUrls_by_Nickolya_v_1.01.lua ( 2.58 килобайт ) : 113
 

Автор: DEN 007 1.9.2010, 23:32

Спасибо, за скрипт...

Автор: Nickolya 20.9.2010, 14:05

Обновил версию по запросу реквестера, вся информация в первом посту.

Автор: DEN 007 15.1.2011, 20:32

Заметил интересную недоработку не обрабатываются ссылки с защищенным соединением, то есть https://

--------
Проблема решена!
А решается она так:
Находим и заменяем (59 строка)

Код
sData, i = sData:sub(tUser.sNick:len()+4, -1):gsub("(http://%S+)", function(sUrl)

на
Код
sData, i = sData:sub(tUser.sNick:len()+4, -1):gsub("([h]?[tf][t][p][s]?:%S+)", function(sUrl)


Далее, находим (83 строка)
Код
local sHost = sUrl:match '^http://(%S-)/'

Заменяем на
Код
local sHost = sUrl:match '^https?://(%S-)/'


Кому сие операции делать лень, качаем поправленную версию:  ShortUrls_by_Nickolya_v_1.01.lua ( 2.59 килобайт ) : 9

Автор: DEN 007 4.3.2011, 3:21

нашел интересную недоработку в скрипте, при использовании скрипта версии 1.01, в нем есть настройка local iMaxLen = 40 при которой в зависимости от максимальной длинна ссылки для отправки в чат без сокращения, при ее превышении ссылка будет сокращена, но проблема заключается в том что в скрите есть еще функция сокращения ссылки по команде и при обработки ссылки по команде происходит также проверка длинны что и по ссылке из чата, что неправильно.

Код
    if sUrl:len() > iMaxLen then

Да и желательно было бы в первом посте скрипт поправить на предмет обработки ссылок по защищенному протоколу https.
И заодно вынести настройку кеширования в переменную.
Вот такие вот пожелания big_smile.gif

Автор: DEN 007 15.3.2011, 1:11

Найдена еще одна недоработка, скрипт сканирует также пользовательские команды с ссылками, то есть скрипт пытается сначала проверить, а затем сократить ссылки из команд хабу, что приводит команды в неработоспособность.