From db4e5db1ef5d7c14c26fe7f4d9e348d4c8f533f3 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Fri, 10 Mar 2023 10:34:57 -0500 Subject: [PATCH 1/5] add maketemp function --- pbprotracktor | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pbprotracktor b/pbprotracktor index f838a63..f2b79e7 100755 --- a/pbprotracktor +++ b/pbprotracktor @@ -11,6 +11,14 @@ fi CONF_FILE="${SCRIPTDIR}/pbpro.conf" +_maketemp(){ + mktemp -q -t "$(basename "${0}").XXXXXX" + if [ "${?}" -ne 0 ]; then + echo "${0}: Can't create temp file, exiting..." + exit 1 + fi +} + if [ ! -f "${CONF_FILE}" ] ; then echo "A configuration file is needed." echo "Please edit ${CONF_FILE}" From 75e10a0d9fa1ea0c84f84139154bbf9aa16be622 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Fri, 10 Mar 2023 10:36:30 -0500 Subject: [PATCH 2/5] remove slow version lookup --- pbprotracktor | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pbprotracktor b/pbprotracktor index f2b79e7..a060933 100755 --- a/pbprotracktor +++ b/pbprotracktor @@ -3,11 +3,7 @@ SCRIPTDIR=$(dirname $(which "${0}")) SCRIPTNAME=$(basename "${0}") -if [[ "${SCRIPTDIR}" = "/usr/local/bin" ]] ; then - VERSION=$(TMP=$(brew info ${SCRIPTNAME} | grep -Eo "/${SCRIPTNAME}/.* \(") ; echo ${TMP:${#SCRIPTNAME}+2:(${#TMP}-${#SCRIPTNAME}-4)}) -else - VERSION="" -fi +VERSION="2020-04-30" CONF_FILE="${SCRIPTDIR}/pbpro.conf" From 9863fddbbb56827fd42bb83d4f95b3ff0eb023ba Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Fri, 10 Mar 2023 10:37:36 -0500 Subject: [PATCH 3/5] add an option to output a ical from protrack --- pbprotracktor | 67 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/pbprotracktor b/pbprotracktor index a060933..0e43274 100755 --- a/pbprotracktor +++ b/pbprotracktor @@ -49,25 +49,88 @@ Usage: ${SCRIPTNAME} [-a] [-c] {file_or_package} | -h -a return all instantiations per asset, rather than only the called one -c transform XML output into CSV -h display this help + -s Export a schedule of programming. By default, the export shall be in + ical format from a relative date range from one week ago to two + months from now. EOF } OPTIND=1 -while getopts ":ach" OPT ; do +while getopts ":achs" OPT ; do case "${OPT}" in a) ALL_INST="Y" ;; c) CSV="Y" ;; h) _usage ; exit 0 ;; + s) ICAL_EXPORT="Y" ;; *) echo "bad option -${OPTARG}" ; _usage ; exit 1 ;; esac done shift $(( ${OPTIND} - 1 )) -if [[ "${#}" = 0 ]] ; then +if [[ "${#}" = 0 && "${ICAL_EXPORT}" != "Y" ]] ; then _usage exit 1 fi +if [[ "${ICAL_EXPORT}" = "Y" ]] ; then + TEMP_TSV="$(_maketemp)" + psql -P pager=off -F $'\t' -Ath 10.25.103.11 -U archivesx -d protrack -c "\ + SELECT + ai_serial, + TO_CHAR(ai_air_strt_inst,'YYYYMMDD\"T\"HH24MISS'), + TO_CHAR(ai_air_einst,'YYYYMMDD\"T\"HH24MISS'), + TO_CHAR(air.up_date,'YYYYMMDD\"T\"HH24MISS'), + TRIM(quad_tab.ser_pgm_type), + CASE WHEN linkinfo.li_material_id IS NOT NULL THEN TRIM(linkinfo.li_material_id) ELSE 'UNASSIGNED' END, + CASE WHEN ser_titles.ttl_text IS NOT NULL THEN TRIM(ser_titles.ttl_text) ELSE TRIM(quad_tab.ser_title) END, + CASE WHEN epi_titles.ttl_text IS NOT NULL THEN TRIM(epi_titles.ttl_text) ELSE TRIM(quad_tab.pg_title) END + FROM air + LEFT JOIN airlink ON air.ai_serial = airlink.alk_air_id AND + NOT airlink.alk_air_id IS NULL + LEFT JOIN quad_tab ON air.ai_vsn_id = quad_tab.vsn_serial AND + NOT quad_tab.vsn_serial IS NULL + LEFT JOIN linkinfo ON airlink.alk_linkinfo_id = linkinfo.li_serial AND + NOT linkinfo.li_serial IS NULL + LEFT JOIN titles AS ser_titles ON air.ai_ser_id = ser_titles.ttl_ser_id AND + ser_titles.ttl_prog_id = '-1' AND + ser_titles.ttl_type = 'AC' AND + NOT ser_titles.ttl_ser_id IS NULL + LEFT JOIN titles AS epi_titles ON air.ai_ser_id = epi_titles.ttl_ser_id AND + epi_titles.ttl_prog_id = air.ai_prog_id AND + epi_titles.ttl_type = 'AC' AND + NOT epi_titles.ttl_ser_id IS NULL + WHERE ai_air_strt_inst > now () - interval '1 week' AND + ai_air_strt_inst < now () + interval '2 months' + ORDER BY ai_air_strt_inst" > "${TEMP_TSV}" +cat << ICAL_HEADER +BEGIN:VCALENDAR +PRODID:-//Google Inc//Google Calendar 70.9054//EN +CALSCALE:GREGORIAN +VERSION:2.0 +X-WR-CALNAME:TEST TEST +X-APPLE-CALENDAR-COLOR:#5c0562 +X-WR-TIMEZONE:America/New_York +ICAL_HEADER + + while IFS=$'\t' read id start end update category media_id title_1 title_2 ; do +cat << ICAL_ITEM +BEGIN:VEVENT +CREATED;TZID=America/New_York:${update} +UID:${update}_${id}@protrack_calendar +SUMMARY:${title_1} (${media_id}) +DESCRIPTION:${title_2} +LAST-MODIFIED;TZID=America/New_York:${update} +DTSTAMP;TZID=America/New_York:${update} +DTSTART;TZID=America/New_York:${start} +DTEND;TZID=America/New_York:${end} +END:VEVENT +ICAL_ITEM + done < "${TEMP_TSV}" +cat << ICAL_FOOTER +END:VCALENDAR +ICAL_FOOTER + exit +fi if [[ "${ALL_INST}" = "Y" ]] ; then INSTANTIATION_CALL="(SELECT XMLAGG ( XMLELEMENT(NAME \"pbcoreInstantiation\", From 506cb1cc9f7ff4f64bda2d6cf782c2f70ccb6c8b Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Tue, 17 Dec 2024 15:06:25 -0500 Subject: [PATCH 4/5] deprecate prot2rs --- prot2rs | 281 -------------------------------------------------------- 1 file changed, 281 deletions(-) delete mode 100755 prot2rs diff --git a/prot2rs b/prot2rs deleted file mode 100755 index feead37..0000000 --- a/prot2rs +++ /dev/null @@ -1,281 +0,0 @@ -#!/usr/bin/env bash - -SCRIPTDIR="$(dirname "$0")" -CONF_FILE="${SCRIPTDIR}/pbpro.conf" - -# pbcore 2 resourcespace mapping -# fields below prefixed with 'PBCORE_' will be mapped from PBCore to ResourceSpace -# it is recommended to set up a display template for these fields in resourcespace like this: -#

[title]

[value]

- -PBCORE_ASSETTYPE_FIELD=85 -PBCORE_TITLE_SERIES_FIELD=86 -PBCORE_ASSETDATE_FIELD=12 -PBCORE_IDENTIFIER_FIELD=98 -PBCORE_TITLE_FIELD=92 -PBCORE_SUBTITLE_FIELD=94 -PBCORE_DESCRIPTION_FIELD=88 -PBCORE_INSTANTIATION_FIELD=97 -PBCORE_COVERAGE_FIELD=103 -PBCORE_CREATOR_FIELD=104 -PBCORE_CONTRIBUTOR_FIELD=105 -PBCORE_PUBLISHER_FIELD=106 -LAST_UPDATED_FIELD=99 - -_usage(){ - cat < - old_lc_collate=$LC_COLLATE - LC_COLLATE=C - TEXT=$(echo "$1" | sed 's|"|\\\\\\"|g') - local length="${#1}" - for (( i = 0; i < length; i++ )); do - local c="${TEXT:i:1}" - case $c in - [a-zA-Z0-9.~_-]) printf "$c" ;; - *) printf '%%%02X' "'$c" ;; - esac - done - LC_COLLATE=$old_lc_collate -} - -_maketemp(){ - mktemp -q "/tmp/$(basename "${0}").XXXXXX" - if [ "${?}" -ne 0 ]; then - echo "${0}: Can't create temp file, exiting..." - _writeerrorlog "_maketemp" "was unable to create the temp file, so the script had to exit." - exit 1 - fi -} - -_remove_empty_xml_nodes(){ - xml ed -d '//*[not(./*) and (not(./text()) or normalize-space(./text())="")]' -} - -# resourcespace API functions -_search(){ - query="user=${user}&function=do_search¶m1=${1}¶m2=¶m3=resourceid¶m4=0" - sign=$(printf '%s' "${private_key}${query}" | sha256deep) - curl -# "${api_url}/?$query&sign=${sign}" | jq -r '.[] | select (.field8=="'"${1}"'") | .ref' 2>/dev/null -} - -_search_public_collections(){ - query="user=${user}&function=search_public_collections¶m1=¶m2=ref¶m3=ASC¶m4=false¶m5=false" - sign=$(printf '%s' "${private_key}${query}" | sha256deep) - curl -# "${api_url}/?$query&sign=${sign}" | jq -r '.[] | select (.name=="'"${1}"'") | .ref' -} - -_add_resource_to_collection(){ - query="user=${user}&function=add_resource_to_collection¶m1=${1}¶m2=${2}"; - sign=$(printf '%s' "${private_key}${query}" | sha256deep) - curl -# "${api_url}/?$query&sign=${sign}" -} - -_updatefield(){ - uploadtext=$(echo "${3}" | sed "s|\"|'|g") - query="user=${user}&function=update_field¶m1=${1}¶m2=${2}¶m3=$(urlencode "${uploadtext}")" - sign=$(printf '%s' "${private_key}${query}" | sha256deep) - curl -# "${api_url}/?$query&sign=${sign}" -} - -_query_protrack_push_to_resourcespace(){ - MEDIAID="${1}" - echo -n "Working on ${MEDIAID}" - # search rs for mediaid - REF="$(_search "${MEDIAID}" 2>/dev/null | head -n 1)" - if [[ -z "${REF}" ]] ; then - echo ", not found in resourcespace, skipping." - else - echo ", found in resourcespace (ref=$REF)" - TEMPXML=$(_maketemp) - # get PBCore XML for that mediaid - "${SCRIPTDIR}/pbprotracktor" "${MEDIAID}" | _remove_empty_xml_nodes 2> /dev/null > "${TEMPXML}" - if [[ -f "${SCRIPTDIR}/fmpbcore" && -f "${TEMPXML}" && ! -s "${TEMPXML}" ]] ; then - echo "No data retrived from protrack. Now trying to grab pbcore for ${MEDIAID} using fmpbcore." - "${SCRIPTDIR}/fmpbcore" "${MEDIAID}" | _remove_empty_xml_nodes 2> /dev/null > "${TEMPXML}" - fi - if [[ ! -s "${TEMPXML}" ]] ; then - echo "Error, no pbcore data found for ${MEDIAID}." - return - fi - xml val "${TEMPXML}" >/dev/null - if [ "${?}" != "0" ] ; then - echo "pbprotracktor did not return a result for ${MEDIAID}, skipping." - return - fi - # upload asset type - UPLOAD_ASSETTYPE=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreAssetType -v . -n -b "${TEMPXML}") - _updatefield "${REF}" "${PBCORE_ASSETTYPE_FIELD}" "${UPLOAD_ASSETTYPE}" - # upload asset date - UPLOAD_ASSETDATE=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreAssetDate -v . -o " (" -v @dateType -o ")" -n -b "${TEMPXML}") - _updatefield "${REF}" "${PBCORE_ASSETDATE_FIELD}" "${UPLOAD_ASSETDATE}" - # upload identifiers - UPLOAD_IDENTIFIERS=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreIdentifier -v . -o " (" -v @source -o ")" -n -b "${TEMPXML}") - _updatefield "${REF}" "${PBCORE_IDENTIFIER_FIELD}" "${UPLOAD_IDENTIFIERS}" - # upload title - UPLOAD_TITLES=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m "//p:pbcoreDescriptionDocument/p:pbcoreTitle[@titleType!='Series']|p:pbcoreTitle[@titleType!='Subtitle']" -v "." -o " (" -v "@titleType" -o ")" -n -b "${TEMPXML}" | sed "s| ()||g") - _updatefield "${REF}" "${PBCORE_TITLE_FIELD}" "${UPLOAD_TITLES}" - # upload title series - UPLOAD_TITLE_SERIES=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreDescriptionDocument -v "p:pbcoreTitle[@titleType='Series'][1]" "${TEMPXML}") - _updatefield "${REF}" "${PBCORE_TITLE_SERIES_FIELD}" "${UPLOAD_TITLE_SERIES}" - # upload subtitle - UPLOAD_SUBTITLE=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreDescriptionDocument -v "p:pbcoreTitle[@titleType='Subtitle'][1]" "${TEMPXML}") - _updatefield "${REF}" "${PBCORE_SUBTITLE_FIELD}" "${UPLOAD_SUBTITLE}" - # upload description info - UPLOAD_DESCRIPTIONS=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreDescriptionDocument/p:pbcoreDescription -v . -o " (" -v @descriptionType -o ")" -n -n -b "${TEMPXML}" | sed "s| ()||g") - _updatefield "${REF}" "${PBCORE_DESCRIPTION_FIELD}" "${UPLOAD_DESCRIPTIONS}" - # upload coverage info - UPLOAD_COVERAGE=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreDescriptionDocument/p:pbcoreCoverage -v . -o " (" -v @coverageType -o ")" -n -b "${TEMPXML}" | sed "s| ()||g") - _updatefield "${REF}" "${PBCORE_COVERAGE_FIELD}" "${UPLOAD_COVERAGE}" - # upload creator info - UPLOAD_CREATORS=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreDescriptionDocument/p:pbcoreCreator -v p:creator -o " (" -v @creatorRole -o ")" -n -b "${TEMPXML}" | sed "s| \[\]||g;s| ()||g") - _updatefield "${REF}" "${PBCORE_CREATOR_FIELD}" "${UPLOAD_CREATORS}" - # upload contributor info - UPLOAD_CONTRIBUTORS=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreDescriptionDocument/p:pbcoreContributor -v p:contributor -o " [" -v p:contributor/@affiliation -o "] (" -v @contributorRole -o ")" -n -b "${TEMPXML}" | sed "s|\[\]||g;s|()||g") - _updatefield "${REF}" "${PBCORE_CONTRIBUTOR_FIELD}" "${UPLOAD_CONTRIBUTORS}" - # upload publisher info - UPLOAD_PUBLISHERS=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreDescriptionDocument/p:pbcorePublisher -v p:publisher -o " (" -v @publisherRole -o ")" "${TEMPXML}" | sed "s| \[\]||g;s| ()||g") - _updatefield "${REF}" "${PBCORE_PUBLISHER_FIELD}" "${UPLOAD_PUBLISHERS}" - # upload interstitial info - UPLOAD_INSTANTIATION=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreInstantiation -m p:instantiationIdentifier -v . -o " (" -v @source -o ")" -n -b -o "timestart: " -v p:instantiationTimeStart -n -o "duration: " -v p:instantiationDuration -n -n "${TEMPXML}" | sed "s| ()||g") - _updatefield "${REF}" "${PBCORE_INSTANTIATION_FIELD}" "${UPLOAD_INSTANTIATION}" - - # provide last updated info - UPLOAD_LASTUPDATE=$(xml sel -N p="http://www.pbcore.org/PBCore/PBCoreNamespace.html" -T -t -m //p:pbcoreCollection -v @collectionDate "${TEMPXML}") - _updatefield "${REF}" "${LAST_UPDATED_FIELD}" "${UPLOAD_LASTUPDATE}" - if [ -f "${TEMPXML}" ] ;then - rm "${TEMPXML}" - fi - fi -} - -_catalog_airings(){ - CATALOGDATE="${1}" - CATALOGMONTH="$(echo "${CATALOGDATE}" | cut -d- -f1-2)" - CATALOGYEAR="$(echo "${CATALOGDATE}" | cut -d- -f1)" - CATALOG_NAME="${CATALOGDATE} Shows" - # check is a collection already exists for a broadcast date - DATE_COLLECTION_ID=$(_search_public_collections "${CATALOG_NAME}") - if [[ -z "${DATE_COLLECTION_ID}" ]] ; then - # create a collection in rs if needed - mysql -h "${RESOURCESPACE_DB_HOST}" -u "${RESOURCESPACE_DB_USER}" -p"${RESOURCESPACE_DB_PW}" -D "${RESOURCESPACE_DB_NAME}" -e "INSERT INTO collection (name,public,theme,theme2,theme3,theme4,created,user,allow_changes) VALUES('$(printf "%q" "${CATALOG_NAME}")',1,'Programming','$(printf "%q" "${CATALOGYEAR}")','$(printf "%q" "${CATALOGMONTH}")','$(printf "%q" "${CATALOGDATE}")',now(),3,1)" ; - DATE_COLLECTION_ID=$(_search_public_collections "${CATALOG_NAME}") - fi - # query protrack for records and add them all to a collection according to broadcast date - ## programs - psql -Ath "$PROTRACK_DB_URL" -U "$PROTRACK_DB_USER" -P pager=off -d protrack -c "SELECT CASE WHEN li_material_id is not null THEN trim(li_material_id) ELSE trim(fi_video_src) END FROM prog_log LEFT JOIN linkinfo ON li_vsn_id = prog_log.log_vsn_id LEFT JOIN filler ON fi_serial = prog_log.log_fi_id WHERE log_start_inst BETWEEN '${CATALOGDATE}' AND '$(date -j -f "%Y-%m-%d" -v+1d "${CATALOGDATE}" "+%Y-%m-%d")' AND log_type ='PG'" | sort -u | while read id ; do - MEDIAREF=$(_search "${id}") - if [[ ! -z "${MEDIAREF}" ]] ; then - echo "Adding ${id} with ref id of ${MEDIAREF} to ${CATALOGDATE} with ref id of ${DATE_COLLECTION_ID}" - _add_resource_to_collection "${MEDIAREF}" "${DATE_COLLECTION_ID}" - else - echo NOT uploading "$id" - fi - done - ## promos - CATALOG_PROMO_NAME="${CATALOGDATE} Promos" - DATE_PROMO_COLLECTION_ID=$(_search_public_collections "${CATALOG_PROMO_NAME}") - if [[ -z "${DATE_PROMO_COLLECTION_ID}" ]] ; then - # create a collection in rs if needed - mysql -h "${RESOURCESPACE_DB_HOST}" -u "${RESOURCESPACE_DB_USER}" -p"${RESOURCESPACE_DB_PW}" -D "${RESOURCESPACE_DB_NAME}" -e "INSERT INTO collection (name,public,theme,theme2,theme3,theme4,created,user,allow_changes) VALUES('$(printf "%q" "${CATALOG_PROMO_NAME}")',1,'Programming','$(printf "%q" "${CATALOGYEAR}")','$(printf "%q" "${CATALOGMONTH}")','$(printf "%q" "${CATALOGDATE}")',now(),3,1)" ; - DATE_PROMO_COLLECTION_ID=$(_search_public_collections "${CATALOG_PROMO_NAME}") - fi - psql -Ath "$PROTRACK_DB_URL" -U "$PROTRACK_DB_USER" -P pager=off -d protrack -c "SELECT CASE WHEN li_material_id is not null THEN trim(li_material_id) ELSE trim(fi_video_src) END FROM prog_log LEFT JOIN linkinfo ON li_vsn_id = prog_log.log_vsn_id LEFT JOIN filler ON fi_serial = prog_log.log_fi_id WHERE log_start_inst BETWEEN '${CATALOGDATE}' AND '$(date -j -f "%Y-%m-%d" -v+1d "${CATALOGDATE}" "+%Y-%m-%d")' AND log_type ='PR'" | sort -u | while read id ; do - MEDIAREF=$(_search "${id}") - if [[ ! -z "${MEDIAREF}" ]] ; then - echo "Adding ${id} with ref id of ${MEDIAREF} to ${CATALOGDATE} with ref id of ${DATE_PROMO_COLLECTION_ID}" - _add_resource_to_collection "${MEDIAREF}" "${DATE_PROMO_COLLECTION_ID}" - else - echo NOT uploading "$MEDIAREF" - fi - done -} - -if [ ! -f "${CONF_FILE}" ] ; then - echo "A configuration file is needed, please edit ${CONF_FILE}." - echo "Please edit ${CONF_FILE}" - echo "PROTRACK_DB_URL=" > "${CONF_FILE}" - echo "PROTRACK_DB_USER=" >> "${CONF_FILE}" - echo "RESOURCESPACE_DB_HOST=" >> "${CONF_FILE}" - echo "RESOURCESPACE_DB_NAME=" >> "${CONF_FILE}" - echo "RESOURCESPACE_DB_USER=" >> "${CONF_FILE}" - echo "RESOURCESPACE_DB_PW=" >> "${CONF_FILE}" - echo "# for resourcespace api" - echo "private_key=" >> "${CONF_FILE}" - echo "user=" >> "${CONF_FILE}" - echo "api_url=" >> "${CONF_FILE}" - exit 1 -fi - -. "${CONF_FILE}" || { echo "Missing ${CONF_FILE}. Exiting." ; exit 1 ; } - -OPTIND=1 -while getopts ":f:F:t:h" OPT ; do - case "${OPT}" in - f) FROM_DATE_PT="${OPTARG}" ;; - F) FROM_DATE_RS="${OPTARG}" ;; - t) MAKEDATE="${OPTARG}" ;; - h) _usage ;; - :) echo "Option -${OPTARG} requires an argument" ; _writeerrorlog "makeyoutube" "The option selected required an argument and none was provided. The script had to exit." ; exit 1 ;; - *) echo "bad option -${OPTARG}" ; _usage ;; - esac -done -shift $(( ${OPTIND} - 1 )) - -# if from date is relative (like a negative number) then figure out what that date actually is -if [[ "${FROM_DATE_PT:0:1}" = "-" ]] ; then - FROM_DATE_PT=$(date -j -v"${FROM_DATE_PT}"d "+%Y-%m-%d %H:%M:%S") -fi -if [[ "${FROM_DATE_RS:0:1}" = "-" ]] ; then - FROM_DATE_RS=$(date -j -v"${FROM_DATE_RS}"d "+%Y-%m-%d %H:%M:%S") -fi - -if [[ ! -z "${MAKEDATE}" ]]; then - _catalog_airings "$MAKEDATE" - #_catalog_airings "$(date -j -v+1d "+%Y-%m-%d")" -fi - -if [[ -n "${FROM_DATE_PT}" ]] ; then - # query protrack for filler and update data to rs - psql -Ath "$PROTRACK_DB_URL" -U "$PROTRACK_DB_USER" -P pager=off -d protrack -c "SELECT fi_video_src FROM filler AS f LEFT JOIN notes AS n ON n.no_parent = f.fi_serial WHERE f.up_date BETWEEN '${FROM_DATE_PT}' AND '3000-01-01' OR n.up_date BETWEEN '${FROM_DATE_PT}' AND '3000-01-01'" | while read MEDIAID ; do - _query_protrack_push_to_resourcespace "${MEDIAID}" - done - # query protrack for programs and episodes and update data to rs - psql -Ath "$PROTRACK_DB_URL" -U "$PROTRACK_DB_USER" -P pager=off -d protrack -c "SELECT li_material_id FROM linkinfo LEFT JOIN quad_tab ON linkinfo.li_vsn_id = quad_tab.vsn_serial WHERE linkinfo.up_date BETWEEN '${FROM_DATE_PT}' AND '3000-01-01'" | while read MEDIAID ; do - _query_protrack_push_to_resourcespace "${MEDIAID}" - done -elif [[ -n "${FROM_DATE_RS}" ]] ; then - # query rs for resources and query protrack for that data - echo "searching resourcespace records back to ${FROM_DATE_RS}" - mysql -BNr -h "${RESOURCESPACE_DB_HOST}" -u "${RESOURCESPACE_DB_USER}" -p"${RESOURCESPACE_DB_PW}" -D "${RESOURCESPACE_DB_NAME}" -e "SELECT field8 FROM resource WHERE archive!='3' and creation_date BETWEEN '${FROM_DATE_RS}' AND '3000-01-01'" | while read MEDIAID ; do - if [[ "${MEDIAID}" != "NULL" ]] && [[ "${MEDIAID}" != "" ]] ; then - _query_protrack_push_to_resourcespace "${MEDIAID}" - fi - done -else - # loop over list of ids provided and upload data from protrack to rs - while [ "${*}" != "" ] ; do - MEDIAID="${1}" - shift - _query_protrack_push_to_resourcespace "${MEDIAID}" - done - echo -fi From ba76213559d66e46f5130d26fd184adfe011d193 Mon Sep 17 00:00:00 2001 From: Dave Rice Date: Tue, 17 Dec 2024 15:06:44 -0500 Subject: [PATCH 5/5] better calendar name --- pbprotracktor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pbprotracktor b/pbprotracktor index 0e43274..cc48397 100755 --- a/pbprotracktor +++ b/pbprotracktor @@ -107,7 +107,7 @@ BEGIN:VCALENDAR PRODID:-//Google Inc//Google Calendar 70.9054//EN CALSCALE:GREGORIAN VERSION:2.0 -X-WR-CALNAME:TEST TEST +X-WR-CALNAME:Protrack Schedule X-APPLE-CALENDAR-COLOR:#5c0562 X-WR-TIMEZONE:America/New_York ICAL_HEADER