#!/bin/bash # noter 1.2.1 - "feeds, holy shit!" - @k@layer8.space - mit showgenerator="true" backtotop="true" lastupdated="true" #rssfeed="true" nlog() { local ORANGE='\033[0;33m' local NO_COLOR='\033[0m' echo -e "${ORANGE}[noter] | ${1} ${NO_COLOR}" } if [ ! -d "notes" ]; then nlog "Error: 'notes' folder not found!" exit 1 fi checksetting() { # Use this function to check for a setting without repetition # Eg: # checksetting "yourmom" "$isyourmom" if [ "$2" = true ]; then echo "$1" >>"$output_file" fi } givefavicon() { local file_path="$1" if [ -f "$file_path" ]; then local base64_data="$(base64 -w 0 "$file_path")" echo "data:image/png;base64,$base64_data" fi } generate_note_html() { # NOTE TO SELF: Figure out parsing html blocks (ie: ) so that we can apply styles for whole # elements instead of doing what we're doing right now... local note_date="$(date -d "$(basename "$1" .txt)" +"%B %d, %Y")" for img in $(grep -oP '(?<=" echo "
" if [ "$2" = true ]; then echo "

$(date -d "$(basename "$1" .txt)" +"%Y")

" fi echo "

$note_date

" echo "
$(cat "$1")
" echo "
" } generate_top_year_bar() { local years=$(find notes -name "*.txt" ! -empty | cut -d'/' -f2 | cut -d'-' -f1 | sort -u | tac) local top_bar="
" local first_year=true for year in $years; do if [ "$first_year" = false ]; then top_bar+=" | " else first_year=false fi top_bar+="$year" done top_bar+="

" echo "$top_bar" } # this took way too long but fuck it # im faster than Google at getting a # feed going goddamit! generate_rss_feed() { local rss_file="feed.xml" local rss_title="koutsies telenotes" local rss_description="thoughts about mainly computers... maybe recipes and cats too?" local rss_link="https://k0.tel/" local rss_pubdate=$(date -u +"%a, %d %b %Y %H:%M:%S GMT") xml_escape() { local content="$1" sed 's/&/\&/g; s//\>/g; s/"/\"/g; s/'"'"'/\'/g' <<< "$content" } # im sorry for these crimes against humanity echo " $(xml_escape "$rss_title") $rss_link $(xml_escape "$rss_description") $rss_pubdate $rss_pubdate https://cyber.harvard.edu/rss/rss.html noter" >"$rss_file" if [ ! -d "notes" ]; then echo "Directory 'notes' not found!" return 1 fi # this works, don't touch. for file in $(find notes -name '*.txt' -type f -print0 | sort -zr | xargs -0); do if [ -f "$file" ] && [ -s "$file" ]; then local note_date=$(date -d "$(basename "$file" .txt)" +"%a, %d %b %Y %H:%M:%S GMT") local note_link="$rss_link#$(basename "$file" .txt)" local note_title=$(basename "$file" .txt) local note_description=$(head -n 1 "$file") # Use the first line of the note as the description echo " $(xml_escape "$note_title") $note_link $(xml_escape "$note_description") $note_date " >>"$rss_file" fi done echo " " >>"$rss_file" nlog "rss feed generated, please remember to move it too with the site: $rss_file" } notecount=$(find notes -name "*.txt" ! -empty | wc -l) # Create HTML file output_file="index.html" echo " $notecount notes | noter

koutsie's telenotes


fedi | rss | sauna
" >"$output_file" generate_top_year_bar >>"$output_file" # loop for every note in notes nlog "generating page..." for file in $(ls -r notes/*.txt); do nlog "processing: $file" if [ -f "$file" ] && [ -s "$file" ]; then generate_note_html "$file" >>"$output_file" fi done # generate page's rss feed # TODO: don't embed to site if not enabled:tm: generate_rss_feed # bottom navigation checksetting "
generated with noter
" "$showgenerator" checksetting "" "$backtotop" checksetting "
last Updated: $(date +"%Y-%m-%d %H:%M:%S")
" "$lastupdated" echo "
" >>"$output_file" nlog "Done, please see: $output_file."