Делал я эНто на предыдущем движке, вот, наконец-то, дошли руки переделать под этот...
Для запуска:
В каталоге ~/.config/autostart создать пустой файл. [highlight=black]~> touch ~/.config/autostart/some_file[/highlight]
В него скопировать код
В начале файла, в переменных USR и PSWD указать свои данные для входа на форум
За уведомления о пользователях отвечает переменная CHECK_USERS
Проверка ЛС - установите значение переменной CHECK_PM
и дать права на запуск [highlight=black]~> chmod +x ~/.config/autostart/some_file[/highlight]
Ну или с гитхаба https://github.com/Diablopc/LFR_NOTIFY



Дата последнего обновления: 28.01.2017 11:00 (GMT+2)
#!/bin/bash
#####==CONFIG==##############################################################
USR=username ##You username
PSWD=pa$$word ##You password
CHECK_USERS=1 ##Valid values 0 (don't check), 1 (check)
CHECK_PM=1 ##Valid values 0 (don't check), 1 (check)
SLEEP_TIME=6 ##Set sleep time
#####==CONFIG==##############################################################
#CHECK AND CREATE CONFIG
WORKDIR=/tmp/LF
ICON=$WORKDIR/favicon.ico
COOKIE=$WORKDIR/cookie
touch $WORKDIR/last_topic
if ! [ -d $WORKDIR ]; then
mkdir $WORKDIR
fi
if ! [ -f $ICON ]; then
wget https://linuxforum.tech/favicon.ico -O $ICON
fi
PRE_PM_ID=0
##FUNC-----------------------------------------------------------------------------------------
#AUTHENTICATION
AUTH ()
{
CSRF=$(curl https://linuxforum.tech/login.php | grep csrf_token | sed 's/.*value="//' | sed 's/".*//')
curl -X POST -c $COOKIE "https://linuxforum.tech/login.php" --data "form_sent=1&csrf_token=$CSRF&req_username=$USR&req_password=$PSWD&login=Войти"
sleep 3
}
#GET AND SHOW USER INFO
SHOWUSER ()
{
LASTUSERDATA=`curl -b $COOKIE "$LAST_USER_LINK" |\
grep 'h2 class="hn"' -A35 |\
sed 's/.*<div.*//g' |\
sed 's/<.*\/div.*>//g' |\
sed 's/.*<ul.*//g' |\
sed 's/.*<\/ul>.*//g' |\
sed 's/<li>//g' |\
grep -v "^$" |\
sed 's/<h2 class="hn">//' |\
sed 's/<\/h2>//'`
notify-send -t 0 --icon="$ICON" "$(echo -e "<b>Регистрация нового пользователя</b>")" "$(echo -e "$LASTUSERDATA")"
echo "$LASTUNAME" > $WORKDIR/last_user
PRELASTUNAME=`echo "$LASTUNAME"`
}
#CREATE AND SHOW MESSAGE
SHOWMSG ()
{
MESSAGE=`curl -b $COOKIE $ALINK |\
grep "id=\"post$POST\"" -A1000 |\
grep 'class="postfoot"' -B1000`
notify-send -t 0 --icon="$ICON" "$(echo -e "<b>@$LFUSER</b> $HEADER <br />$TOPICNAME")" "$(echo -e "$MESSAGE")"
echo "$MSGCOUNT" > $WORKDIR/last_topic
echo "$TOPICNAME" >> $WORKDIR/last_topic
PREMSGCOUNT=`echo "$MSGCOUNT"`
PRETOPICNAME=`echo "$TOPICNAME"`
}
#CHECK PRIVATE MESSAGES
GETNEWPM ()
{
PM_SENDER=`echo "$LAST_PM" |\
grep 'class="td3"'|\
sed 's/.*">//'|\
sed 's/<\/a>.*//'`
PM_HEADER=`echo "$LAST_PM"|\
grep 'class="td4"'|\
sed 's/<.*a href="http:\/\/linuxforum.ru\/misc.php?section=pun_pm&pmpage=inbox&message_id=34099">//'|\
sed 's/<\/a>.*//'`
PM_MESSAGE=
PM_LINK='https://linuxforum.tech/misc.php?section=pun_pm&pmpage=inbox&message_id='$PM_ID
notify-send -t 0 --icon="$ICON" "$(echo -e "Новое ЛС от @<b>$PM_SENDER</b> <br /> $PM_HEADER")" "$(echo -e "$PM_MESSAGE <br /> <a href=\"$PM_LINK\">Читать далее...</a>")"
echo "##################################"
echo $PM_ID
# exit
}
while true
do
{
##CHECK AUTH AND AUTHENTICATE
CHECKAUTH=`curl -b $COOKIE https://linuxforum.tech/index.php |\
grep "Пожалуйста, войдите или зарегистрируйтесь."`
if [ "$CHECKAUTH" != "" ]; then
AUTH
fi
##GET NEW USERS DATA
if [ "$CHECK_USERS" == "1" ]; then
LASTUSERREG=`curl -b $COOKIE https://linuxforum.tech/index.php | grep "Последним зарегистрировался"`
LASTUNAME=`echo "$LASTUSERREG" | sed 's/.*profile.php?id=.*">//' | sed 's/<\/a>.*//'`
LAST_USER_LINK=`echo "$LASTUSERREG" | sed 's/.*href="//' | sed 's/">.*//'`
fi
##CHECK PM
LAST_PM=`curl -b $COOKIE "https://linuxforum.tech/misc.php?section=pun_pm&pmpage=inbox" |\
grep '<td class="td1"><input type="checkbox" name="pm_delete\[\]" value="' -A1000 -m1`
PM_ID=`echo "$LAST_PM" |\
grep 'class="td1"'|\
sed 's/.*value="//'|\
sed 's/" \/>.*//'`
##GET DATA
GETINDEX=`curl -b $COOKIE https://linuxforum.tech/search.php?action=show_recent`
##SORT DATA
MSGCOUNT=`echo "$GETINDEX" | grep main-first-item -A10 |\
grep info-replies |\
sed 's/.*<strong>//' |\
sed 's/<\/strong.*//'`
TOPICNAME=`echo "$GETINDEX" | grep main-first-item -A10 |\
grep 'class="item-num"' |\
sed 's/.*viewtopic.php.*">//' |\
sed 's/<.*//'`
LFUSER=`echo "$GETINDEX" | grep main-first-item -A10 |\
grep info-lastpost |\
sed 's/.*<cite>//' |\
sed 's/<\/cite.*//'`
TOPICSTARTER=`echo "$GETINDEX" | grep main-first-item -A10 |\
grep item-starter |\
sed 's/.*<cite>//' |\
sed 's/<\/.*//'`
ALINK=`echo "$GETINDEX" | grep main-first-item -A10 |\
grep info-lastpost |\
sed 's/.*<a.href="//' |\
sed 's/">.*//'`
POST=`echo $ALINK | sed 's/.*#p//'`
PREMSGCOUNT=`head -n 1 $WORKDIR/last_topic`
PRETOPICNAME=`tail -n 1 $WORKDIR/last_topic`
{
if [ -z $MSGCOUNT ]; then
echo "No connection"
sleep $SLEEP_TIME
else
##SHOW NEW USERS
if [ "$CHECK_USERS" == "1" ]; then
if [ "$PRELASTUNAME" != "$LASTUNAME" ]; then
SHOWUSER
fi
fi
##SHOW PM
if [ "$CHECK_PM" == "1" ]; then
if [ "$PRE_PM_ID" != "$PM_ID" ]; then
GETNEWPM
PRE_PM_ID=`echo "$PM_ID"`
fi
fi
##CHECK CHANGES AND SHOW MESSAGE
if [ "$MSGCOUNT" = "0" ]; then
HEADER="создал новую тему:"
else
HEADER="ответил в теме:"
fi
if [ "$MSGCOUNT" != "$PREMSGCOUNT" ]; then
SHOWMSG
sleep $SLEEP_TIME
elif [ "$TOPICNAME" != "$PRETOPICNAME" ]
then
SHOWMSG
else
echo No changes
fi
sleep $SLEEP_TIME
fi
}
}
done
ЗЫ
Огромная благодарность letnab, за помощь))
ЗЗЫ
Пока оно сырое до ****** %))
Правок еще будет куча....
В планах:
- Сделать нормальную выдачу кода (Ибо сейчас оно на него неахти реагирует)
- Уведомления о регистрации пользователей
- Добавить цитаты
- Добавить ЛС
- Добавить текст ЛС в уведомление
- Добавить ответы в своих темах
