inews

Video IDs

Andreas Hartmann, 25.05.2007 11:48:

Question

Can we create video-ids automatically?

Answer

Yes, but not with built-in components of iNEWS. You need a combination of a Linux shell script and a macro inside iNEWS.

  1. The shell script is started via crontab once a day very early morning. It generates a list of new video-ids (for that day) in a hidden place of the iNEWS database.
  2. The macro moves the next entry out of this 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:

  1. 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.
  2. 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)
Setup
  1. Video-id queue - inside iNEWS Client
    • Create a new folder hidden in 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.
  2. 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
      #
      # creates video-ids
      # runs every morning at (via crontab)
      #
      if /exc/ifis master
      then
          LOGFILE=/var/log/messages
          LOGDATE=$(date | cut -c5-19)
          DATE=$(date +%Y-%m-%d)
          ID=1
          DIGIT=00
       
          /exc/dbpurge hidden.video-ids 0 < /site/scripts/yes2 > /dev/null
          rm /site/scripts/video-ids/data/ids
       
          while test $ID -le 300
          do
              if test $ID -ge 10
              then
                  DIGIT="0"
              fi
              if test $ID -ge 100
              then
                  DIGIT=""
              fi
              echo "$(date +%d%m)-$DIGIT$ID" >> /site/scripts/video-ids/data/ids
              ID=$(expr $ID + 1)
          done
       
          /exc/doc -pu hidden.video-ids /site/scripts/video-ids/data/ids
          echo "$LOGDATE localhost $(basename $0): creating video IDs for $DATE" >> $LOGFILE
      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 a story with video-ids inside the hidden.video-ids queue, your script works properly. 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&>1

      The 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.

  3. Type forms story - inside iNEWS Client as superuser1)
    • 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…
  4. 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 wo}hidden.video-ids{enter} {alt {right}{right}} {ctrl {home}} {shift {end}{left}} {ctrl x} {delete} {ctrl se} {alt wc} {alt {right}{right}{left}} {alt vuf}type-q{enter} {home} {tab} {f2} {space}{backspace} {home} {ctrl v} {shift {end}} {ctrl x} {shift {home}} {ctrl v} {ctrl se} {alt vun} {home} {tab}{tab}


      German version:

      {alt fa}hidden.video-ids{enter} {alt {right}{right}} {ctrl {home}} {shift {end}{left}} {ctrl x} {delete} {ctrl se} {alt fs} {alt {right}{right}{left}} {alt abf}type-q{enter} {home} {tab} {f2} {space}{backspace} {home} {ctrl v} {shift {end}} {ctrl x} {shift {home}} {ctrl v} {ctrl se} {alt abn} {home} {tab}{tab}


      French version:

      {alt no}hidden.video-ids{enter} {alt {right}{right}} {ctrl {home}} {shift {end}{left}} {ctrl x} {delete} {ctrl se} {alt nf} {alt {right}{right}{left}} {alt hum}type-q{enter} {home} {tab} {f2} {space}{backspace} {home} {ctrl v} {shift {end}} {ctrl x} {shift {home}} {ctrl v} {ctrl se} {alt hun} {home} {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
1) 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