From 68f42230516520b26c013afa13c831c48471852f Mon Sep 17 00:00:00 2001 From: nalbam Date: Wed, 11 Mar 2020 18:16:13 +0900 Subject: [PATCH] AWS Virtual Circuit 2020 --- README.md | 41 ------- report-backup.sh | 310 +++++++++++++++++++++++++++++++++++++++++++++++ report.sh | 249 ++++++++----------------------------- 3 files changed, 358 insertions(+), 242 deletions(-) create mode 100755 report-backup.sh diff --git a/README.md b/README.md index cc53e4fd6..4a04a4177 100644 --- a/README.md +++ b/README.md @@ -1,42 +1 @@ # deepracer-league - -## leaderboard - - -| # | Score | RacerName | | -| - | ----- | --------- | - | -| 1 | 1778.600 | RichardFan | <<< | -| 2 | 1776.859 | DBro | <<< | -| 3 | 1765.251 | ABaykov | <<< | -| 4 | 1749.602 | kimwooglae | <<< | -| 5 | 1737.749 | GT-DevelopersIO | <<< | -| 6 | 1734.155 | think | <<< | -| 7 | 1726.175 | piano | <<< | -| 8 | 1725.008 | JJ | <<< | -| 9 | 1712.425 | DriftKings-ET | <<< | -| 10 | 1709.560 | nalbam-me | <<< | -| 11 | 1707.729 | PolishThunder | <<< | -| 12 | 1685.961 | Robin-Castro | <<< | -| 13 | 1642.039 | MattCamp | <<< | -| 14 | 1624.459 | Mentaiko-DevelopersIO | <<< | -| 15 | 1624.281 | chilmeran | <<< | -| 16 | 1620.561 | Merfoulis | <<< | -| 17 | 1615.680 | ShibaInu-DevelopersIO | <<< | -| 18 | 1614.177 | Giacomo | <<< | -| 19 | 1552.364 | maestrodigatto | <<< | -| 20 | 1542.584 | Breadcentric | <<< | -| 21 | 1527.838 | hiroisojp | <<< | -| 22 | 1526.076 | dartjason | <<< | -| 23 | 1520.082 | AbdElrhman-Mohamed | <<< | -| 24 | 1513.692 | TRS-DR | <<< | -| 25 | 1505.623 | Kire | <<< | -| 26 | 1503.790 | Etaggel | <<< | -| 27 | 1487.132 | Duckworth | <<< | -| 28 | 1485.893 | DodolGarut | <<< | -| 29 | 1459.553 | BabyBoo | <<< | -| 30 | 1438.775 | IVaibhavMalpani | <<< | -| 31 | 1433.015 | Soothsayer | <<< | -| 32 | 1427.840 | trainocate | <<< | -| 33 | 1408.325 | nalbam-mz | <<< | -| 34 | 1400.699 | rodzanto | <<< | -| 35 | 1356.816 | bigfella | <<< | diff --git a/report-backup.sh b/report-backup.sh new file mode 100755 index 000000000..20847f682 --- /dev/null +++ b/report-backup.sh @@ -0,0 +1,310 @@ +#!/bin/bash + +OS_NAME="$(uname | awk '{print tolower($0)}')" + +SHELL_DIR=$(dirname $0) + +MODE=$1 + +URL_TEMPLATE="https://aws.amazon.com/api/dirs/items/search?item.directoryId=deepracer-leaderboard&sort_by=item.additionalFields.position&sort_order=asc&size=100&item.locale=en_US&tags.id=deepracer-leaderboard%23recordtype%23individual&tags.id=deepracer-leaderboard%23eventtype%23virtual&tags.id=deepracer-leaderboard%23eventid%23virtual-season-" + +SEASONS="2020-03-tt 2020-03-oa 2020-03-h2h" + +FIRST="2020-03-tt" +LATEST="2020-03-h2h" + +CHANGED= + +# command -v tput > /dev/null && TPUT=true +TPUT= + +_echo() { + if [ "${TPUT}" != "" ] && [ "$2" != "" ]; then + echo -e "$(tput setaf $2)$1$(tput sgr0)" + else + echo -e "$1" + fi +} + +_result() { + _echo "# $@" 4 +} + +_command() { + _echo "$ $@" 3 +} + +_success() { + _echo "+ $@" 2 + exit 0 +} + +_error() { + _echo "- $@" 1 + exit 1 +} + +_prepare() { + _command "_prepare" + + rm -rf ${SHELL_DIR}/build + + if [ "${MODE}" == "clear" ]; then + rm -rf ${SHELL_DIR}/cache + fi + + mkdir -p ${SHELL_DIR}/build + mkdir -p ${SHELL_DIR}/cache + + if [ -f ${SHELL_DIR}/build/points.log ]; then + rm -rf ${SHELL_DIR}/build/points.log + fi + + echo +} + +_load_leaderboard() { + # leaderboard + for SEASON in ${SEASONS}; do + _command "_build ${SEASON}" + + CACHE_FILE=${SHELL_DIR}/cache/${SEASON}.log + + # if [ -f ${CACHE_FILE} ] && [ "${SEASON}" != "${LATEST}" ]; then + # _result "_build ${SEASON} cached" + # continue + # fi + + URL="${URL_TEMPLATE}${SEASON}" + + curl -sL ${URL} \ + | jq -r '.items[].item | "\(.additionalFields.lapTime) \"\(.additionalFields.racerName)\" \(.additionalFields.points)"' \ + > ${CACHE_FILE} + + _result "_build ${SEASON} loaded" + done + + echo +} + +_load_extra() { + SEASON=$1 + + _command "_build ${SEASON} extra ----------------------------" + + CACHE_FILE=${SHELL_DIR}/cache/${SEASON}.log + + if [ ! -f ${CACHE_FILE} ]; then + _result "_build ${SEASON} not found" + continue + fi + + JDX=1 + while read LINE; do + NAME="$(echo ${LINE} | cut -d'"' -f2)" + + for SVAL in ${SEASONS}; do + if [ "${SVAL}" == "${SEASON}" ]; then + continue + fi + + LOG_TEMP=${SHELL_DIR}/cache/${SVAL}.log + + COUNT=$(cat ${LOG_TEMP} | grep "\"${NAME}\"" | wc -l | xargs) + + if [ "x${COUNT}" != "x0" ]; then + continue + fi + + URL="${URL_TEMPLATE}${SVAL}&item.additionalFields.racerName=${NAME}" + + curl -sL ${URL} \ + | jq -r '.items[].item | "\(.additionalFields.lapTime) \"\(.additionalFields.racerName)\" \(.additionalFields.points)"' \ + >> ${LOG_TEMP} + + _result "_build ${SVAL} ${NAME}" + done + + if [ "${JDX}" == "100" ]; then + break + fi + + JDX=$(( ${JDX} + 1 )) + done < ${CACHE_FILE} +} + +_load_extras() { + # extra + for SEASON in ${SEASONS}; do + _load_extra ${SEASON} + done + + echo +} + +_build_summary() { + # summary + _command "_build summary" + + while read LINE; do + ARR=(${LINE}) + + NAME="$(echo ${LINE} | cut -d'"' -f2)" + + TIME="${ARR[0]}" + POINTS="${ARR[2]}" + + for SEASON in ${SEASONS}; do + if [ "${SEASON}" == "${FIRST}" ]; then + continue + fi + + CACHE_FILE=${SHELL_DIR}/cache/${SEASON}.log + + if [ ! -f ${CACHE_FILE} ]; then + _result "_build ${SEASON} not found" + continue + fi + + ARR=($(cat ${CACHE_FILE} | grep "\"${NAME}\"" | head -1)) + + SUB_TIME="${ARR[0]}" + SUB_POINTS="${ARR[2]}" + + if [ "${SUB_TIME}" != "" ]; then + if [ "${SUB_POINTS}" == "null" ]; then + SUB_POINTS=$(echo "1000-60*${ARR[0]:0:2}-${ARR[0]:3}" | bc) + fi + + POINTS=$(echo "${POINTS}+${SUB_POINTS}" | bc) + fi + done + + echo "${POINTS} ${NAME}" >> ${SHELL_DIR}/build/points.log + done < ${SHELL_DIR}/cache/${FIRST}.log + + # backup + if [ -f ${SHELL_DIR}/cache/points.log ]; then + cp ${SHELL_DIR}/cache/points.log ${SHELL_DIR}/build/backup.log + fi + + # print + cat ${SHELL_DIR}/build/points.log | sort -r -g | head -35 > ${SHELL_DIR}/cache/points.log + + echo +} + +_build() { + _load_leaderboard + + # _load_extras + + # _build_summary +} + +_message() { + _command "_message" + + MESSAGE=${SHELL_DIR}/build/message.tmp + README=${SHELL_DIR}/build/readme.tmp + + echo "| # | Score | RacerName | |" > ${README} + echo "| - | ----- | --------- | - |" >> ${README} + + IDX=1 + while read LINE; do + if [ -f ${SHELL_DIR}/build/backup.log ]; then + COUNT=$(cat ${SHELL_DIR}/build/backup.log | grep "${LINE}" | wc -l | xargs) + else + COUNT="0" + fi + + ARR=(${LINE}) + + if [ "x${COUNT}" != "x0" ]; then + echo "${IDX}\t${ARR[0]}\t${ARR[1]}\n" >> ${MESSAGE} + echo "| ${IDX} | ${ARR[0]} | ${ARR[1]} | |" >> ${README} + else + CHANGED=true + + _result "changed ${ARR[0]} ${ARR[1]}" + + echo "${IDX}\t${ARR[0]}\t${ARR[1]}\t<<<\n" >> ${MESSAGE} + echo "| ${IDX} | ${ARR[0]} | ${ARR[1]} | <<< |" >> ${README} + fi + + IDX=$(( ${IDX} + 1 )) + done < ${SHELL_DIR}/cache/points.log + + echo + + # message + echo "*DeepRacer Virtual Circuit Scoreboard*\n" > ${SHELL_DIR}/build/message.log + cat ${MESSAGE} >> ${SHELL_DIR}/build/message.log + + # slack message + json="{\"text\":\"$(cat ${SHELL_DIR}/build/message.log)\"}" + echo $json > ${SHELL_DIR}/build/slack_message.json + + # commit message + printf "$(date +%Y%m%d-%H%M)" > ${SHELL_DIR}/build/commit_message.txt + + # readme + IDX=1 + while read LINE; do + COUNT="$(echo ${LINE} | grep "\-\- leaderboard \-\-" | wc -l | xargs)" + + if [ "x${COUNT}" != "x0" ]; then + break + fi + + IDX=$(( ${IDX} + 1 )) + done < ${SHELL_DIR}/README.md + + sed "${IDX}q" ${SHELL_DIR}/README.md > ${SHELL_DIR}/build/readme.md + cat ${README} >> ${SHELL_DIR}/build/readme.md + + if [ ! -z ${CHANGED} ]; then + cp -rf ${SHELL_DIR}/build/readme.md ${SHELL_DIR}/README.md + fi +} + +_json() { + _command "_json" + + JSON=${SHELL_DIR}/cache/points.json + + echo "{\"deepracer\":[" > ${JSON} + + IDX=1 + while read LINE; do + ARR=(${LINE}) + + if [ "${IDX}" != "1" ]; then + echo "," >> ${JSON} + fi + + printf "{\"no\":${IDX},\"name\":\"${ARR[1]}\",\"point\":${ARR[0]}}" >> ${JSON} + + IDX=$(( ${IDX} + 1 )) + done < ${SHELL_DIR}/build/points.log + + echo "]}" >> ${JSON} +} + +__main__() { + _prepare + + _build + _message + + # _json + + if [ -z ${CHANGED} ]; then + _error "not changed." + fi + + _success +} + +__main__ diff --git a/report.sh b/report.sh index 20847f682..4447e73ba 100755 --- a/report.sh +++ b/report.sh @@ -4,16 +4,13 @@ OS_NAME="$(uname | awk '{print tolower($0)}')" SHELL_DIR=$(dirname $0) -MODE=$1 - URL_TEMPLATE="https://aws.amazon.com/api/dirs/items/search?item.directoryId=deepracer-leaderboard&sort_by=item.additionalFields.position&sort_order=asc&size=100&item.locale=en_US&tags.id=deepracer-leaderboard%23recordtype%23individual&tags.id=deepracer-leaderboard%23eventtype%23virtual&tags.id=deepracer-leaderboard%23eventid%23virtual-season-" SEASONS="2020-03-tt 2020-03-oa 2020-03-h2h" -FIRST="2020-03-tt" -LATEST="2020-03-h2h" +# SEASON=$1 -CHANGED= +G_CHANGED= # command -v tput > /dev/null && TPUT=true TPUT= @@ -49,198 +46,95 @@ _prepare() { rm -rf ${SHELL_DIR}/build - if [ "${MODE}" == "clear" ]; then - rm -rf ${SHELL_DIR}/cache - fi - mkdir -p ${SHELL_DIR}/build mkdir -p ${SHELL_DIR}/cache - if [ -f ${SHELL_DIR}/build/points.log ]; then - rm -rf ${SHELL_DIR}/build/points.log - fi - echo } -_load_leaderboard() { - # leaderboard +_build() { for SEASON in ${SEASONS}; do - _command "_build ${SEASON}" - - CACHE_FILE=${SHELL_DIR}/cache/${SEASON}.log - - # if [ -f ${CACHE_FILE} ] && [ "${SEASON}" != "${LATEST}" ]; then - # _result "_build ${SEASON} cached" - # continue - # fi - - URL="${URL_TEMPLATE}${SEASON}" - - curl -sL ${URL} \ - | jq -r '.items[].item | "\(.additionalFields.lapTime) \"\(.additionalFields.racerName)\" \(.additionalFields.points)"' \ - > ${CACHE_FILE} - - _result "_build ${SEASON} loaded" + _load ${SEASON} + _message ${SEASON} done - - echo } -_load_extra() { +_load() { SEASON=$1 - _command "_build ${SEASON} extra ----------------------------" - - CACHE_FILE=${SHELL_DIR}/cache/${SEASON}.log + _command "_load ${SEASON} ..." - if [ ! -f ${CACHE_FILE} ]; then - _result "_build ${SEASON} not found" - continue + if [ -f ${SHELL_DIR}/cache/${SEASON}.log ]; then + cp -rf ${SHELL_DIR}/cache/${SEASON}.log ${SHELL_DIR}/build/${SEASON}.log fi - JDX=1 - while read LINE; do - NAME="$(echo ${LINE} | cut -d'"' -f2)" - - for SVAL in ${SEASONS}; do - if [ "${SVAL}" == "${SEASON}" ]; then - continue - fi - - LOG_TEMP=${SHELL_DIR}/cache/${SVAL}.log - - COUNT=$(cat ${LOG_TEMP} | grep "\"${NAME}\"" | wc -l | xargs) + URL="${URL_TEMPLATE}${SEASON}" - if [ "x${COUNT}" != "x0" ]; then - continue - fi + curl -sL ${URL} \ + | jq -r '.items[].item | "\(.additionalFields.lapTime) \"\(.additionalFields.racerName)\" \(.additionalFields.points)"' \ + > ${SHELL_DIR}/cache/${SEASON}.log - URL="${URL_TEMPLATE}${SVAL}&item.additionalFields.racerName=${NAME}" - - curl -sL ${URL} \ - | jq -r '.items[].item | "\(.additionalFields.lapTime) \"\(.additionalFields.racerName)\" \(.additionalFields.points)"' \ - >> ${LOG_TEMP} - - _result "_build ${SVAL} ${NAME}" - done - - if [ "${JDX}" == "100" ]; then - break - fi - - JDX=$(( ${JDX} + 1 )) - done < ${CACHE_FILE} -} - -_load_extras() { - # extra - for SEASON in ${SEASONS}; do - _load_extra ${SEASON} - done + _result "_load ${SEASON} done" echo } -_build_summary() { - # summary - _command "_build summary" - - while read LINE; do - ARR=(${LINE}) - - NAME="$(echo ${LINE} | cut -d'"' -f2)" - - TIME="${ARR[0]}" - POINTS="${ARR[2]}" - - for SEASON in ${SEASONS}; do - if [ "${SEASON}" == "${FIRST}" ]; then - continue - fi - - CACHE_FILE=${SHELL_DIR}/cache/${SEASON}.log - - if [ ! -f ${CACHE_FILE} ]; then - _result "_build ${SEASON} not found" - continue - fi - - ARR=($(cat ${CACHE_FILE} | grep "\"${NAME}\"" | head -1)) - - SUB_TIME="${ARR[0]}" - SUB_POINTS="${ARR[2]}" - - if [ "${SUB_TIME}" != "" ]; then - if [ "${SUB_POINTS}" == "null" ]; then - SUB_POINTS=$(echo "1000-60*${ARR[0]:0:2}-${ARR[0]:3}" | bc) - fi - - POINTS=$(echo "${POINTS}+${SUB_POINTS}" | bc) - fi - done - - echo "${POINTS} ${NAME}" >> ${SHELL_DIR}/build/points.log - done < ${SHELL_DIR}/cache/${FIRST}.log - - # backup - if [ -f ${SHELL_DIR}/cache/points.log ]; then - cp ${SHELL_DIR}/cache/points.log ${SHELL_DIR}/build/backup.log - fi - - # print - cat ${SHELL_DIR}/build/points.log | sort -r -g | head -35 > ${SHELL_DIR}/cache/points.log - - echo -} - -_build() { - _load_leaderboard - - # _load_extras - - # _build_summary -} - _message() { - _command "_message" + SEASON=$1 + + _command "_message ${SEASON} ..." - MESSAGE=${SHELL_DIR}/build/message.tmp - README=${SHELL_DIR}/build/readme.tmp + MESSAGE=${SHELL_DIR}/build/message-${SEASON}.tmp - echo "| # | Score | RacerName | |" > ${README} - echo "| - | ----- | --------- | - |" >> ${README} + CHANGED= IDX=1 while read LINE; do - if [ -f ${SHELL_DIR}/build/backup.log ]; then - COUNT=$(cat ${SHELL_DIR}/build/backup.log | grep "${LINE}" | wc -l | xargs) + if [ -f ${SHELL_DIR}/build/${SEASON}.log ]; then + COUNT=$(cat ${SHELL_DIR}/build/${SEASON}.log | grep "${LINE}" | wc -l | xargs) else COUNT="0" fi ARR=(${LINE}) + RACER=$(echo "${ARR[1]}" | sed -e 's/^"//' -e 's/"$//') + if [ "x${COUNT}" != "x0" ]; then - echo "${IDX}\t${ARR[0]}\t${ARR[1]}\n" >> ${MESSAGE} - echo "| ${IDX} | ${ARR[0]} | ${ARR[1]} | |" >> ${README} + echo "${IDX}\t${ARR[0]}\t${RACER}\n" >> ${MESSAGE} else CHANGED=true - _result "changed ${ARR[0]} ${ARR[1]}" + _result "changed ${ARR[0]} ${RACER}" - echo "${IDX}\t${ARR[0]}\t${ARR[1]}\t<<<\n" >> ${MESSAGE} - echo "| ${IDX} | ${ARR[0]} | ${ARR[1]} | <<< |" >> ${README} + echo "${IDX}\t${ARR[0]}\t${RACER}\t<<<\n" >> ${MESSAGE} + fi + + if [ "${IDX}" == "20" ]; then + break fi IDX=$(( ${IDX} + 1 )) - done < ${SHELL_DIR}/cache/points.log + done < ${SHELL_DIR}/cache/${SEASON}.log echo + if [ "${CHANGED}" == "" ]; then + return + fi + + G_CHANGED=true + # message - echo "*DeepRacer Virtual Circuit Scoreboard*\n" > ${SHELL_DIR}/build/message.log + echo "*AWS Virtual Circuit - ${SEASON}*\n" >> ${SHELL_DIR}/build/message.log cat ${MESSAGE} >> ${SHELL_DIR}/build/message.log + echo "" >> ${SHELL_DIR}/build/message.log +} + +_slack() { + if [ "${G_CHANGED}" == "" ]; then + _error "Not changed" + fi # slack message json="{\"text\":\"$(cat ${SHELL_DIR}/build/message.log)\"}" @@ -248,63 +142,16 @@ _message() { # commit message printf "$(date +%Y%m%d-%H%M)" > ${SHELL_DIR}/build/commit_message.txt - - # readme - IDX=1 - while read LINE; do - COUNT="$(echo ${LINE} | grep "\-\- leaderboard \-\-" | wc -l | xargs)" - - if [ "x${COUNT}" != "x0" ]; then - break - fi - - IDX=$(( ${IDX} + 1 )) - done < ${SHELL_DIR}/README.md - - sed "${IDX}q" ${SHELL_DIR}/README.md > ${SHELL_DIR}/build/readme.md - cat ${README} >> ${SHELL_DIR}/build/readme.md - - if [ ! -z ${CHANGED} ]; then - cp -rf ${SHELL_DIR}/build/readme.md ${SHELL_DIR}/README.md - fi } -_json() { - _command "_json" - - JSON=${SHELL_DIR}/cache/points.json - - echo "{\"deepracer\":[" > ${JSON} - - IDX=1 - while read LINE; do - ARR=(${LINE}) - - if [ "${IDX}" != "1" ]; then - echo "," >> ${JSON} - fi - - printf "{\"no\":${IDX},\"name\":\"${ARR[1]}\",\"point\":${ARR[0]}}" >> ${JSON} - - IDX=$(( ${IDX} + 1 )) - done < ${SHELL_DIR}/build/points.log - - echo "]}" >> ${JSON} -} - -__main__() { +_run() { _prepare _build - _message - # _json - - if [ -z ${CHANGED} ]; then - _error "not changed." - fi + _slack _success } -__main__ +_run