#!/usr/bin/env bash

CAVE_HTML_FILE=$1

if [ "$CAVE_HTML_FILE" = "" ]; then
    CAVE_HTML_FILE="-"
fi

cat "$CAVE_HTML_FILE" \
    | grep -v '<!DOCTYPE html>' \
    | sed -e 's/.*\(Search results\)/\1\n/' \
    | sed -e 's/<div class="item b1" data-code="\([^>][^>]*\)">/\n\n::: code:   \1\n/g' \
    | sed -e 's/<div class="item b1 opened" data-code="\([^>][^>]*\)">/\n\n::: code:   \1\n/g' \
    | sed -e 's/<div class="name cyan">\([^<][^<]*\)<\/div>/::: name:   \1\n::: type:   new\n/g' \
    | sed -e 's/<div class="name">\([^<][^<]*\)<\/div>/\n\n::: name:   \1\n::: type:   old\n/g' \
    | sed -e 's/<div class="creator">\([^<][^<]*\)<\/div>/::: author: \1\n/g' \
    | sed -e 's/data-src="[^"]*type=\(....\)\(..\)\(..\)......"/\n::: date:   \1-\2-\3\n/g' \
    | sed -e 's/Attempts: <span class="pc">\([^<][^<]*\)<\/span>/\n::: played: \1\n/g' \
    | sed -e 's/Solutions: <span class="so">\([^<][^<]*\)<\/span>/\n::: solved: \1\n\n/g' \
    | sed -e 's/<div .*"lazy" //g' \
    | sed -e 's/><\/a><div class="stat">//g' \
    | sed -e 's/<div class="head"><div class="fav-star">//g' \
    | sed -e 's/<\/div>/\n/g' \
    | sed -e 's/::: author: \(.*\) \(.*\)/::: author: \1_\2/g' \
    | grep "^::: " \
    | perl -p0e 's/::: code:\s*([^\n]*)\n::: name:\s*([^\n]*)\n::: type:\s*([^\n]*)\n::: author:\s*([^\n]*)\n::: date:\s*([^\n]*)\n::: played:\s*([^\n]*)\n::: solved:\s*([^\n]*)/$5 $1 $3 $4 $6 $7 - $2/igs' \
    | perl -p0e 's/::: code:\s*([^\n]*)\n::: name:\s*([^\n]*)\n::: type:\s*([^\n]*)\n::: author:\s*([^\n]*)\n::: date:\s*([^\n]*)\n::: played:\s*([^\n]*)/$5 $1 $3 $4 $6 0 - $2/igs' \
    | perl -p0e 's/::: code:\s*(AqsxH52aZCmL)\n::: name:\s*([^\n]*)\n::: type:\s*([^\n]*)\n::: author:\s*([^\n]*)\n::: played:\s*([^\n]*)\n::: solved:\s*([^\n]*)/2023-03-19 $1 $3 $4 $6 $7 - $2/igs' \
    | perl -p0e 's/::: code:\s*(VpvpG57vquKW)\n::: name:\s*([^\n]*)\n::: type:\s*([^\n]*)\n::: author:\s*([^\n]*)\n::: played:\s*([^\n]*)\n::: solved:\s*([^\n]*)/2025-04-28 $1 $3 $4 $6 $7 - $2/igs' \
    | perl -p0e 's/::: code:\s*(XBiS3D2KSFvc)\n::: name:\s*([^\n]*)\n::: type:\s*([^\n]*)\n::: author:\s*([^\n]*)\n::: played:\s*([^\n]*)\n::: solved:\s*([^\n]*)/2025-08-10 $1 $3 $4 $6 $7 - $2/igs' \
    | perl -p0e 's/::: code:\s*(Aqim5lNxYJBG)\n::: name:\s*([^\n]*)\n::: type:\s*([^\n]*)\n::: author:\s*([^\n]*)\n::: played:\s*([^\n]*)\n::: solved:\s*([^\n]*)/2025-09-19 $1 $3 $4 $6 $7 - $2/igs' \
    | cat

exit 0
