From c5e4d58d950509b0039aa616bc9bc696d224ab47 Mon Sep 17 00:00:00 2001 From: xf0r3m Date: Fri, 15 Sep 2023 11:04:16 +0200 Subject: [PATCH] =?utf8?q?Aktualizacja=20narz=C4=99dzia=20immudex-newsfeed?= =?utf8?q?=20-=20BT=20#107.=20Do=20przes=C5=82ania=20na=20public?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- tools/immudex-newsfeed | 103 +++++++++++++++++++++++++++++------------ 1 file changed, 74 insertions(+), 29 deletions(-) diff --git a/tools/immudex-newsfeed b/tools/immudex-newsfeed index 9ed98ff..df85686 100755 --- a/tools/immudex-newsfeed +++ b/tools/immudex-newsfeed @@ -1,8 +1,70 @@ #!/bin/bash +function createBufferFile() { + count=0; + for mark in $markList; do + if [ $count -gt 0 ]; then + sed -i "s,$mark,${mark}\n,g" ${1}.buffer; + else + sed "s,$mark,${mark}\n,g" $1 > ${1}.buffer; + count=$((count + 1)); + fi; + done +} + +function descSanitize() { + desc=$(echo $@ | sed -e 's,,,' -e 's,\]\]>,,' -e 's,,,' -e 's,,,' -e 's,<,<,g' -e 's,>,>,g' -e 's,

,,g' -e 's,,,' -e 's,,,' -e 's,

,,' -e 's/^[[:space:]]*//g'); + echo -n $desc; +} + +function titleSanitize() { + title=$(echo $@ | sed -e 's,,,' -e 's,,,' -e 's,",",g' -e 's/^[[:space:]]*//g'); + echo -n $title; +} + +function pubDateSanitize() { + pubDate=$(echo $@ | sed -e 's,,,' -e 's,,,' -e 's/^[[:space:]]*//g'); + echo -n $pubDate; +} + +function linkSanitize() { + link=$(echo $@ | sed -e 's,,,' -e 's,,,' -e 's/^[[:space:]]*//g'); + echo -n $link; +} + +function show() { + bufferFile="${1}.buffer"; + if grep -q '' $bufferFile; then + sed -i -e 's,,,g' -e 's,,,g' $bufferFile; + fi + newsCount=$(grep -o '.*' $bufferFile | wc -l | awk '{printf $1}'); + count=1 + while [ $count -le $newsCount ]; do + t=$(grep -o '.*' $bufferFile | sed -n "${count}p"); + title=$(titleSanitize $t); + pD=$(grep -o '.*' $bufferFile | sed -n "${count}p") + pubDate=$(pubDateSanitize $pD); + d=$(grep -o '.*' $bufferFile | sed -n "${count}p") + desc=$(descSanitize $d); + echo -e "\t$((count - 1)) (Link ID: $count): $title"; + echo -e "\t -> $pubDate"; + echo -e "\t >>> $desc"; + echo; + count=$((count + 1)) + done +} + +function getLink() { + bufferFile="${1}.buffer"; + newsNumber=$2; + linkLine=$(grep -o '.*' $bufferFile | sed -n "${newsNumber}p"); + link=$(linkSanitize $linkLine); + echo -n $link; +} + function help() { - echo "immudex-newsfeed - fetch and browse news feed from rss and atom channels"; - echo "@ 2023 morketsmerke.org"; + echo "newsfeed - fetch and browse news feed from rss and atom channels"; + echo "morketsmerke.net; COPYLEFT @ 2022"; echo; echo "Options:"; echo " --list - shows numbered list of names, saved in ~/.newsfeed names and"; @@ -21,7 +83,8 @@ function help() { echo " contains: name and URL of rss feed. For example:"; echo; echo " News Feed;https://newsfeed.example.org/rss"; -} +} + if [ ! -s ~/.newsfeed ]; then help; exit 1; @@ -53,7 +116,7 @@ else notify-send "$nameOfSubscription" "New $amountOfNewNewses newses" --icon=/usr/share/icons/rss.png; j=1; sleep 1; - while [ $j -le $amountOfNewNewses ]; do + while [ $j -le 1 ]; do news=$(diff /tmp/new_newsfeed_${i}.xml /tmp/newsfeed_${i}.xml | \ grep '' | sed -n "${j}p" | sed 's/<title>//' | \ sed 's/<\/title>//' | sed 's/[<>]//' | \ @@ -74,6 +137,9 @@ else notify-send "$nameOfSubscription" "New $amountOfNews newses" --icon=/usr/share/icons/rss.png; fi fi + fname="/tmp/newsfeed_${i}.xml"; + export markList=$(grep -o '</[a-z]*\:*[a-z]*[A-Z]*[a-z]*[A-Z]*[a-z]*>' $fname | sort | uniq | awk '{printf $1" "}'); + createBufferFile $fname; i=$((i + 1)); done if [ "$1" ] && [ "$1" = "--show" ] && [ "$2" ] && [ $2 -gt 0 ]; then @@ -82,33 +148,12 @@ else #Thanks to the linuxhint.com for command: #sed 's/^[[:space]]*//g' #https://linuxhint.com/trim_string_bash - - if grep -q 'CDATA' /tmp/newsfeed_${2}.xml; then - #sed 's/<\/title>/\n/g' /tmp/newsfeed_${2}.xml | \ - #sed 's/<item>/\n/g' | grep '<title>' | sed -n '2,$p' | \ - #sed 's/<title>//' | sed 's/"/"/g' | \ - #sed 's/<!\[CDATA\[//g' | sed 's/\]\]>//g' | \ - #sed 's/^[[:space:]]*//g' | nl | less; - grep -e '<title>' -e '<description>' /tmp/newsfeed_${2}.xml |\ - sed -n '3,$p' | sed -e 's/<title>//g' -e 's/<description>/>>>/g' |\ - sed 's/&#[0-9]*;//g' | \ - sed 's/"//g' | sed -e 's/<!\[CDATA\[//g' -e 's/\]\]>//g' |\ - sed -e 's/<img.*br\/>/<obrazek>/g' -e 's/^[[:space:]]*//g' \ - -e 's/<\/description>/\n/g' -e 's/<\/title>//g' | nl -b p^[[:alnum:]] | less - else - sed 's/<\/title>/\n/g' /tmp/newsfeed_${2}.xml | \ - sed 's/<item>/\n/g' | grep '<title>' | sed -n '2,$p' | \ - sed 's/<title>//' | sed 's/"/"/g' | \ - sed 's/^[[:space:]]*//g' | nl | less; - fi - echo $2 > /tmp/lastShowedNewsFeed; + show /tmp/newsfeed_${2}.xml | less + echo $2 > /tmp/lastShowedNewsFeed; elif [ "$1" ] && [ "$1" = "--open" ] && [ "$2" ] && [ $2 -gt 0 ]; then subscriptionNumber=$(cat /tmp/lastShowedNewsFeed); - if ! grep -q 'CDATA' /tmp/newsfeed_${subscriptionNumber}.xml; then - link=$(sed 's/<\/link>/\n/g' /tmp/newsfeed_${subscriptionNumber}.xml | sed 's/<\/title>/\n/g' | grep '<link>' | sed -n '2,$p' | sed 's/<link>//g' | sed -n "${2}p") - else - link=$(sed 's/<\/link>/\n/g' /tmp/newsfeed_${subscriptionNumber}.xml | sed 's/<\/description>/\n/g' | grep '<link>' | sed -n '2,$p' | sed 's/<link>//g' | sed -n "${2}p") - fi + fname="/tmp/newsfeed_${subscriptionNumber}.xml"; + link=$(getLink $fname $2); exo-open --launch WebBrowser "$link"; fi fi -- 2.39.5