<- [[:forum:inews]] ====== Multiple Video IDs ====== //Andreas Hartmann, 20.03.2008 09:49: // ==Question== Can we create video ids also different for different shows? ==Answer== Yes, but again not with built-in components of iNEWS. The idea behind this solution is the same as for the single video id script (see [[forum:inews:video-ids]]). :!: There are two strict limitations so far: * You have to create stories for different rundowns in separate folders. It is not possible to choose the relevant show during the video id assignment. * Name((Strictly spoken the last part of a queue name - i.e. show.1800.**rundown**)) of queues where video ids are assigned in must have exactly a given length. Otherwise the macro will fail. The given macros below assume a queue name with seven characters like ''rundown''. At all you need a combination of a Linux shell script and a macro inside iNEWS. - The shell script is started via crontab once a day very early morning. It generates multiple lists of new video-ids (for that day) in hidden places inside the show directories. - The macro moves the next entry out of the relating list and paste it into the video-id field of the current story. An already assigned video id will not be overwritten by the macro. So this solution take care about: - The video id is unique. Whenever a user picks up a video id out of the list this id is immediately removed from the list. No chance to take the same id twice. - The video id for a given story is fix. The macro keeps an already assigned id in the target story. It's not possible to change the id after working with (at least not with our macro) - The video id contains a show-specific string The specification which shows will get what video ids in what format with what special string is to setup inside the iNEWS system directory. - The video id has finally the format ''-''. The show string and date format are configurable. The sequence number runs from 001 up to 999. == Setup == - Management story - inside iNEWS Client as superuser * Create a queue inside the system directory, usually SYSTEM.RUNDOWNS * Place one story inside this queue which contains the description of each rundown or folder where video ids for a given show have to be assigned. If there are more than one story in this queue all stories are processed. * All empty lines and strings after semicolon (;) are ignored. Also the program proofs the format of the remaining lines and only valid ones are taken. * The format of each line is * The '''' is the queue where video ids are assigned. Its parent folder must contain a hidden folder with a video-id queue inside. See next point how to create it. * The '''' is a string containing only characters A-Z, a-z and 0-9 and especially it must contain no spaces. * The '''' refers to the linux strftime format. Call ''man strftime'' on the iNEWS server console to get more help. * Here is a sample story for description of some rundowns: ; This story must contain the list of all rundown queues. ; It is used by the linux script /site/scripts/video-ids/video-ids.sh. ; All rundowns must be named "RUNDOWN". ; There must be a HIDDEN.VIDEO-IDS queue in each show directory. ; Format of the entries is: ; news.1800.rundown N18 %d%m%y news.2130.rundown N21 %d%m%y features.business.rundown FB %d%m%y - Video-id queues - inside iNEWS Client * Create a new folder ''hidden'' in each show directory (see previous point) inside iNEWS database. * Inside create a new queue ''video-ids''. * Set readgroup for the folder to ''nobody''. * Set readgroup **and** writegroup for the queue to ''!none'' or the group which is allowed to assign video-ids. * Set the queue to inverted. - Script - Linux shell as user root (su) on **both** machines - inews-a and inews-b, respectively. * Create a directory ''/site/scripts/video-ids'' * Create a directory ''/site/scripts/video-ids/data'' * Inside ''/site/scripts'' create a file ''yes2'' with following content: y y * Inside ''/site/scripts/video-ids'' create a file ''video-ids.sh'' with following content: #! /bin/bash # # Author: Andreas Hartmann # andreas@hmedia.de # # creates video-ids # runs every morning at (via crontab) # produces separate video id lists for different rundowns # takes the rundowns from a list inside iNEWS # # check www.hmedia.de/wiki for more information # # LISTQUEUE="system.rundowns" PROGRAMDIR="/site/scripts/video-ids" DATADIR="$PROGRAMDIR/data" LOGFILE=/var/log/messages LOGDATE=$(date | cut -c5-19) if /exc/ifis master then doc -gu $LISTQUEUE | sed --quiet -e 's/;.*//;s/[ \t][ \t]*/ /g;/^[^ \.][^ \.]*\.[^ ][^ ]* [A-Za-z0-9][A-Za-z0-9]* %/p' > "$DATADIR/list" for SHOW in $(cat "$DATADIR/list" | cut -f1 -d" " | rev | cut -f2 -d"." | rev) do ID=1 DIGIT=00 echo "" > $DATADIR/ids RUNDOWN="$(cat "$DATADIR/list" | grep $SHOW | cut -f1 -d" ")" if /exc/list q $RUNDOWN 2>&1 | grep "No directories or queues match" > /dev/null then echo "$LOGDATE localhost $(basename $0): ERROR: Can't create video IDs for $SHOW! $RUNDOWN is not a queue." >> $LOGFILE continue fi IDQUEUE="$(cat "$DATADIR/list" | grep $SHOW | cut -f1 -d" " | rev | cut -f2- -d"." | rev).hidden.video-ids" if /exc/list q $IDQUEUE 2>&1 | grep "No directories or queues match" > /dev/null then echo "$LOGDATE localhost $(basename $0): ERROR: Can't create video IDs for $SHOW! $IDQUEUE is not a queue." >> $LOGFILE continue fi CHANNELTAG="$(cat "$DATADIR/list" | grep $SHOW | cut -f2 -d" ")" SHOWTAG="$(cat "$DATADIR/list" | grep $SHOW | cut -f3 -d" ")" DATE="$(date +$(cat "$DATADIR/list" | grep $SHOW | cut -f4 -d" "))" /exc/dbpurge $IDQUEUE 0 < /site/scripts/yes2 > /dev/null while test $ID -le 999 do if test $ID -ge 10 then DIGIT="0" fi if test $ID -ge 100 then DIGIT="" fi echo "$CHANNELTAG$SHOWTAG$DATE-$DIGIT$ID" >> $DATADIR/ids ID=$(expr $ID + 1) done /exc/doc -pu $IDQUEUE $DATADIR/ids echo "$LOGDATE localhost $(basename $0): creating video IDs for $SHOW" >> $LOGFILE done fi * Set permissions for video-ids.sh with chmod 744 /site/scripts/video-ids/video-ids.sh * Test the script. If you get no error messages at the terminal but stories with video-ids inside the ''hidden.video-ids'' queues, your script works properly. Also you should check the /var/log/messages file for some errors. To run the script type: /site/scripts/video-ids/video-ids.sh * Add an entry to roots crontab like 35 5 * * * /site/scripts/video-ids/video-ids.sh > /dev/null 2&>1The leading two parameters specify the time when the script has to run (in our case 05:35). See the man-page for more information. Type ''man crontab'' to read this man-page. The last parameters after ''>'' prevent some error messages to get printed. You should have an entry for ''video-ids.sh'' in the crontab of each iNEWS server. - Type forms story - inside iNEWS Client as superuser((The macro can address the video-id-field just with ''tabs''. To avoid a disruption of its functionality by changing the rundown queue forms the macro works with its own queue view)) * Create a queue ''system.forms.t.type-q'' * Insert a new story and change the fields for that story. For our macro it is necessary to have the video-id field at second position. Other fields don't matter for our macro - maybe for others... - Macro - inside iNEWS Client as superuser * In a keyboard story of your choice (normally the producer keyboard) assign the following macro to a key.\\ English version: {alt {right}{right}{left}}{alt wo}{end}{backspace}{backspace}{backspace}{backspace}{backspace}{backspace}{backspace}hidden.video-ids{enter} {alt {right}{right}}{ctrl {home}}{shift {end}{left}}{ctrl x}{delete}{ctrl se}{alt wc}{alt vuf}type-q{enter}{home}{tab}{f2}{home}{ctrl v}{shift {end}}{ctrl x}{shift {home}}{ctrl v}{f2}{shift {tab}}{alt vun}{home}{tab}{tab}{tab}\\ German version: {alt {right}{right}{left}}{alt fa}{end}{backspace}{backspace}{backspace}{backspace}{backspace}{backspace}{backspace}hidden.video-ids{enter} {alt {right}{right}}{ctrl {home}}{shift {end}{left}}{ctrl x}{delete}{ctrl se}{alt fs}{alt abf}type-q{enter}{home}{tab}{f2}{home}{ctrl v}{shift {end}}{ctrl x}{shift {home}}{ctrl v}{f2}{shift {tab}}{alt abn}{home}{tab}{tab}{tab}\\ French version: {alt {right}{right}{left}}{alt no}{end}{backspace}{backspace}{backspace}{backspace}{backspace}{backspace}{backspace}hidden.video-ids{enter} {alt {right}{right}}{ctrl {home}}{shift {end}{left}}{ctrl x}{delete}{ctrl se}{alt nf}{alt hum}type-q{enter}{home}{tab}{f2}{home}{ctrl v}{shift {end}}{ctrl x}{shift {home}}{ctrl v}{f2}{shift {tab}}{alt hun}{home}{tab}{tab}{tab} * Test the macro. Save the keyboard story. Choose this keyboard in your preferences. Then go to a rundown story and press the related shortcut. If the story have had no video-id, now it should have the next one out of your list (and this number should be removed from the list). If the story have had a video-id before, this video-id should be there even if you run the macro. In that case nevertheless a number is removed from the list. == Comments == ~~DISCUSSION~~