LINUX.ORG.RU

Новое на сайте: реакции «на мои сообщения» в «моих реакциях»

 


1

3

В «Моих реакциях» теперь есть еще отдельная выборка реакций «на мои сообщения».

При помощи нее можно посмотреть на реакции, оставленные под вашими сообщениями, даже если у вас выключены уведомления о реакциях.

За разработку фичи спасибо @alex0x08.

★★★★★

Чё опять парсер лора переписывать :D


Фичреквест, реакции на реакции, типа мне поставили кловуна, а на реакцию кловуна ставлю реакцию фейспалма и так далее. Уже три раздела с реакциями, идти так до конца!

LINUX-ORG-RU ★★★★★
()

Ура, наконец-то!

За разработку фичи спасибо @alex0x08.

Merge branch ‘maxcom:master’ into master

Зачем так делать? :)

dataman ★★★★★
()

Слушайте, видимо в алгоритме какая-то ошибка, потому что у меня там одни 🤡 и 🤦. Необходимо расследовать это issue.

MoldAndLimeHoney
()

А ведь это я фичу предложил!

Werenter ★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Слушайте

Это какую-то читалку нужно установить?

Не, в топку.

dataman ★★★★★
()
Ответ на: комментарий от Kolins

у всех верстка едет?

Это какие-то проблемы у древних версий Firefox и Pale Moon.

maxcom ★★★★★
() автор топика
Ответ на: комментарий от thesis

А я уже писал что при постановке реакции было бы прикольно к ней приписку делать, типа «фейспалм - в первой же строке лога ответ на вопрос», «клоун - нагло врёт и вводит людей в заблуждение» =)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Фичреквест, реакции на реакции, типа мне поставили кловуна, а на реакцию кловуна ставлю реакцию фейспалма и так далее.

Говорил же что от эможи ничего хорошего ждать не стоит, вот и пассивные оскорбления на пассивные оскорбления подъехали.

Следующим шагом будет эможи-бомбинг, когда очередной неадекват напишет user-script который будет при открытии темы всем проставлять клоунов.

Kolins ★★★★
()
Последнее исправление: Kolins (всего исправлений: 2)
Ответ на: комментарий от Kolins

Следующим шагом будет

Уже было, Максим ввёл временное ограничение на непрерывное проставление реакций.

LINUX-ORG-RU ★★★★★
()

Возможно, что превышен лимит реакций. Попробуйте снова через 10 минут

Ставлю второй лайк после захода на форум, а тут такое. Один лайк в 10 минут - очень жесткое ограничение, имхо

Jurik_Phys ★★★★★
()
Ответ на: комментарий от maxcom

Кстати! Фич-риквест: «Реакции пользователя» в профиле.
Java/Scala не знаю, только емодзи научился добавлять.

dataman ★★★★★
()
Ответ на: комментарий от dataman

Там это правится парой строк кода, я уже предлагал @maxcom это сделать, но он мне отказал. Сейчас у меня есть поддержка как минимум одного человека.

Werenter ★★★
()
Ответ на: комментарий от Werenter

Там это правится парой строк кода

Сомневаюсь.

у меня есть поддержка как минимум одного человека

Не вижу лайка! :)

dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от dataman

Сомневаюсь

Не сомневайся, я даже делал экспериментальную правку. Там просто стоит условие на отображение, твой ли это профиль(или ты модератор). Если нет, то кидает 403. Это условие надо убрать. После этого нужно в другом файле добавить ссылку на страницу реакций(в HTML или jsp, точно не знаю).

Werenter ★★★
()
Последнее исправление: Werenter (всего исправлений: 1)
Ответ на: удаленный комментарий

Как будто что-то плохое.

Кстати, есть два чая, может пора уже «два клоуна этому господину»?

papin-aziat ★★★★★
()

Новое на сайте: реакции «на мои сообщения» в «моих реакциях»

каво??? Это после какого языка такая деформация?

targitaj ★★★★★
()
Ответ на: комментарий от maxcom

5 за 10 минут

Думал, тачскрин на телефоне глючит и наспамил реакциями в фоне, но зашёл в ЛК и не вижу сегодняшних 5-ти реакций, видимо, баг

Jurik_Phys ★★★★★
()
Ответ на: комментарий от Werenter
  • Запуск lua reactor.lua
  • Зависимости apt install lua curl
------------------------------------------------
-- : Конфигурация :
-- : нужно указать логин и пароль
-- : или/и пароль можно получить из файла
-- : путь до файла должен быть абсолютным
-- : или относительным в каталоге  скипта
------------------------------------------------
local config =
{
    username = ""; -- твой логин
    userpass = ""; -- твой пароль
    passfile = ""; -- файл в котром лежит пароль
    --------------------------------------------
    ucookies = "lorcookies.txt";
    usercsrf = "";
    uislogin = false;
    --------------------------------------------
    reactions = {
    get = {
        ["👍"]   = 0;
        ["👎"]   = 0;
        ["🔥"]   = 0;
        ["😊"]   = 0;
        ["🤔"]   = 0;
        ["😱"]   = 0;
        ["🤡"]   = 0;
        ["🤦"]   = 0;
        ["🪗"]   = 0;
        ["☕☕"] = 0;
    };
    set = {
        ["👍"]   = 0;
        ["👎"]   = 0;
        ["🔥"]   = 0;
        ["😊"]   = 0;
        ["🤔"]   = 0;
        ["😱"]   = 0;
        ["🤡"]   = 0;
        ["🤦"]   = 0;
        ["🪗"]   = 0;
        ["☕☕"] = 0;
    };
    };
    reactions_total = { get = 0, set = 0 };
    --------------------------------------
    const =
    {
        -- lorsource: ------------------
        -- RegisterRequestValidator.java
        --------------------------------
        MIN_PASSWORD_LEN = 4;
    };
};
---------------------------------------------------
-- : Получение пароля (проверка переменной и файла)
---------------------------------------------------
local function get_pass()
    if (#config.userpass < config.const.MIN_PASSWORD_LEN)
    then
        ---------------------------------------------
        if (config.passfile == "")
        then
           print("---------------------------------");
           print("Переменная с паролем не задана");
           print("Файл с паролем не задан ---------");
           print("---------------------------------");
           os.exit();
        end
        ----------------------------------------------
        local passfile = io.open(config.passfile,'r');
        if (not passfile)
        then
           print("---------------------------------");
           print("Проверь путь/имя файла с паролем");
           print("---------------------------------");
           os.exit();
        end
        ----------------------------------------------
        config.userpass = passfile:read('*l');
        passfile:close();
        if(#config.userpass < config.const.MIN_PASSWORD_LEN)
        then
           print("---------------------------------");
           print("Пароль слишком короткий, идинафиг");
           print("---------------------------------");
           os.exit();
        end
        ----------------------------------------------
    end
end
--------------------------------------------------------------
-- : Получение временного токена (для возможности регистрации)
--------------------------------------------------------------
local function get_csrf()
   local header =
   io.popen('curl -s "https://www.linux.org.ru/" --head');
   config.usercsrf =
   header:read('*a'):match('CSRF_TOKEN=(........................);');
end
---------------------------------------------------------------
-- : Регистрация для получения cookies (запрос к личным данным)
---------------------------------------------------------------
local function lor_login()
   get_csrf();
   get_pass();
   ------------------------------------------------------------
   local authorization =
   io.popen('curl -s "https://www.linux.org.ru/ajax_login_process"'..
             ' --header "Cookie:CSRF_TOKEN='..config.usercsrf..';" -XPOST '..
             ' -d "nick='  ..config.username..'"'..
             ' -d "passwd='..config.userpass..'"'..
             ' -d "csrf='  ..config.usercsrf..'"'..
             ' -c '        ..config.ucookies);
   ------------------------------------------------------------
   local server_ansver = authorization:read('*a');
   authorization:close();
   ------------------------------------------------------------
   if (server_ansver:find('true',1,true))
   then
      config.uislogin = true;
   else
      print("---------------------------------");
      print("Сервер ответил -> "..server_ansver);
      print("---------------------------------");
      print("Вроде неправильный логин / пароль");
      print("Если виден HTML попробуй ещё раз ");
      print("запутить скрипт ничего не меняя  ");
      print("---------------------------------");
      os.exit();
   end
   ------------------------------------------------------------
end

local function lor_reations_info(react_type)
    local offset  = 0;
    local cookey  = '" -b ';
    local offset_ = '?offset=';
    local command = 'curl -s ';
    local set_pfx = '/reactions';
    local get_pfx = '/reactions/to';
    local postfix = "---";
    local siteurl = '"https://www.linux.org.ru/people/';
    ----------------------------------------------------
    if (react_type == 'set') then postfix = set_pfx; end
    if (react_type == 'get') then postfix = get_pfx; end
    if (react_type == '---') then error('🤡🤡🤡🤡'); end
    ----------------------------------------------------
    if (config.uislogin == false)
    then
       lor_login();
    end
    io.stdout:setvbuf('no');
    ----------------------------------------------------
    while (true)
    do
        local reactions = '';
        ------------------------------------------------
        reactions = io.popen(command..
                             siteurl..config.username..
                             postfix..offset_..offset..
                             cookey..config.ucookies);
        -------------------------------------------------
        local text = reactions:read('*a');
        reactions:close();
        -------------------------------------------------
        for react in text:gmatch("[^\n]+")
        do
            for n,v in pairs(config.reactions[react_type])
            do
                if (react:find(n,1,true))
                then
                   config.reactions[react_type][n] =
                   config.reactions[react_type][n] + 1;
                   offset=offset+1;

                   if (n == "☕☕") then n = "☕" end

                   io.write("\rСканирование кловунов и не только "
                                 ..n..' №'..offset..'\r');
                   break;
                end
            end
        end
        -----------------------------------------------
        if (not text:find('следующие',1,true))
        then
           config.reactions_total[react_type] = offset;
           break;
        end
        -----------------------------------------------
    end
end

lor_reations_info('set');

print("----------------------------------------------")
print(' Пользователь '..config.username..' понаставил')
print("----------------------------------------------")
for name,val in pairs(config.reactions.set) do
    print(name..' -> '..val);
end
print(">>> Всего оставлено "..config.reactions_total.set.." реакций");

lor_reations_info('get');

print("-----------------------------------------------")
print(' Пользователь '..config.username..' понаполучал')
print("-----------------------------------------------")
for name,val in pairs(config.reactions.get) do
    print(name..' -> '..val);
end
print(">>> Всего получено "..config.reactions_total.get.." реакций");
print("-----------------------------------------------")
LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Вроде работает

dron@gnu:~$lua reactor.lua 
----------------------------------------------
 Пользователь LINUX-ORG-RU понаставил
----------------------------------------------
👍 -> 374
😱 -> 325
🔥 -> 101
😊 -> 692
👎 -> 34
☕☕ -> 100
🪗 -> 7
🤦 -> 26
🤔 -> 81
🤡 -> 133
>>> Всего оставлено 1873 реакций
-----------------------------------------------
 Пользователь LINUX-ORG-RU понаполучал
-----------------------------------------------
👍 -> 205
😱 -> 31
🔥 -> 112
😊 -> 203
👎 -> 9
☕☕ -> 277
🪗 -> 4
🤦 -> 27
🤔 -> 17
🤡 -> 134
>>> Всего получено 1019 реакций

Неточности вызваны наличием шмайликов в самих сообщениях, но дополнительная проверка грозит,
тем что при изменении вёрстки всё опять сломается. Пяток лишне подсчитанных реакций не критичны на фоне сотен.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от Jurik_Phys

Поясни что именно у тебя происходит.

maxcom ★★★★★
() автор топика
Ответ на: комментарий от Jurik_Phys

Один лайк в 10 минут - очень жесткое ограничение

Такое сообщение выскакивает и если в момент проставления реакции сеть недоступна.

NickNotNick
()
Ответ на: комментарий от LINUX-ORG-RU
----------------------------------------------
 Пользователь Werenter понаставил
----------------------------------------------
👎 -> 28
👍 -> 243
� -> 6
😊 -> 128
🔥 -> 39
☕☕ -> 138
🤦 -> 117
😱 -> 8
🤡 -> 275
🤔 -> 17
>>> Всего оставлено 999 реакций
-----------------------------------------------
 Пользователь Werenter понаполучал
-----------------------------------------------
👎 -> 20
👍 -> 141
� -> 57
😊 -> 26
🔥 -> 17
☕☕ -> 121
🤦 -> 23
😱 -> 12
🤡 -> 95
🤔 -> 6
>>> Всего получено 518 реакций
-----------------------------------------------
Werenter ★★★
()
Ответ на: комментарий от LINUX-ORG-RU
----------------------------------------------
 Пользователь dataman понаставил
----------------------------------------------
🤦 -> 22
☕☕ -> 45
😊 -> 504
😱 -> 18
🤡 -> 38
👍 -> 361
🪗 -> 12
🔥 -> 90
👎 -> 24
🤔 -> 31
>>> Всего оставлено 1145 реакций
-----------------------------------------------
 Пользователь dataman понаполучал
-----------------------------------------------
🤦 -> 12
☕☕ -> 56
😊 -> 79
😱 -> 17
🤡 -> 57
👍 -> 158
🪗 -> 5
🔥 -> 42
👎 -> 10
🤔 -> 15
>>> Всего получено 451 реакций
-----------------------------------------------

Фич-риквест: выводить результат в виде маркдаун-таблиц.

dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от NickNotNick

Такое сообщение выскакивает и если в момент проставления реакции сеть недоступна.

Да, 99.9%, что был именно этот случай. В момент появления надписи «Возможно, что превышен лимит реакций. Попробуйте снова через 10 минут» как раз был плохой мобильный интернет; maxcom ситуация прояснилась.

Jurik_Phys ★★★★★
()
Ответ на: комментарий от dataman
local separ = ' | ';
local total = config.reactions_total;
io.write("| Реакция | Получил (Всего "..total.get..") ");
io.write("| Поставил (Всего "..total.set..")|\n");
print("|:-------:|:-------:|:--------:|");
for react,get in pairs(config.reactions.get)
do
    local set = config.reactions.set[react];
    print(separ..react..separ..get..separ..set..separ);
end
РеакцияПолучил (Всего 1021)Поставил (Всего 1878)
🤔34156
😊4201382
👍410740
🤡268296
🪗814
☕☕540204
🤦5654
👎1872
🔥226198
😱62640

Но мне категорически не нравится как выглядят таблицы на ЛОРе. Они размашистые, столбцы не выделяются, по краям рамки нету. Заголовок цветом не выделен. Ещё был вариант горизинтальной таблички типа что внизу, более компактно, но тоже такое себе. Короче мне нинраица :3 А как сделать их лучше не знаю, типа сжать ячейки до ширины размера самого длинного элемента, а затем саму таблицу отцентрировать на странице целиком так как с боку от неё всё равно писать нельзя.

🤦👍🤔☕☕😊🪗🤡😱👎🔥
564103454042082686218226
LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Спасибо!

РеакцияПолучил (Всего 455)Поставил (Всего 1160)
🤡6335
👍152369
🤔1634
🪗512
🔥4289
☕☕5349
😊81506
😱1820
🤦1322
👎1224
dataman ★★★★★
()
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от thesis

Реакция «поясни за клоуна»!

В принципе достаточно добавить реакцию «сам дурак», и все остальные реакции можно выкидывать:

СД.png
  Re: СД.png
    Re[2]: СД.png
      Re[3]: СД.png
        Re[4]: СД.png
          Re[5]: СД.png
            и т.д.
pr849
()
Ответ на: комментарий от pr849

И чтоб скор снимался. Потом будут по ЛОРУ ходить ветераны с поседевшими в боях звездами.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Реакция «поясни за клоуна»!

Лучше «нет, ты!»

goingUp ★★★★★
()

maxcom, alex0x08, не знаю, ошибка или фича, но нашел вот такое.
На странице «Реакции на мои сообщения» отображается реакция на сообщение которое было удалено модератором. Соответственно, ссылка битая и ведет на страницу «Сообщение удалено или не существует».
Должны ли удаляться соответствующие реакции с удалением сообщения?

Ссылка на удаленное сообщение: www.linux.org.ru/forum/talks/17395581?cid=17397098

urxvt ★★★★★
()
Последнее исправление: urxvt (всего исправлений: 1)
Ответ на: комментарий от urxvt

Там же два интерфейса: один админский, второй обычный. Полагаю админам надо оставить этот функционал с переходом на удаленные.

@maxcom ?

alex0x08 ★★★
()
Ответ на: комментарий от maxcom

Нашёл. Я думал в уведомлениях будет, а не в профиле. Вообще не знал/забыл про ссылку реакции в профиле

ox55ff ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.