ipw4 This program generates w4 structures - lists and files - for the w4 browser-based tasting system. Each incoming file is compared against the parameter file and added to each directory found. The text is left unaltered as it assumes 'ipxchg' has already cleaned it up. A single file can be in none, one or many lists. A single copy of the file is maintained for all the lists so that when it is copied/exported, the audit message is inserted at all relevant points in all relavant lists. If more than one publication is specified, then a copy of the file is made for each publication. In this case the audit message is restricted to those lists belonging to that publication. To decide which lists a file should be in, each destination in the Fip destination field 'DU' is compared to all the entries of the 'dest' parameters. Then the same is done for any 'testforlist' parameters. Note there MUST always be a DU field - even if you are only using 'testforlist'. The Parameter file is in tables/w4 and, by default, is called W4. The syntax is the normal Fip style : ; comment dest: define which lists an entry is inserted for each destination eg dest:w4arte list:KULTUR,ARTE Each list must be defined by a 'list:' parameter as below. These are fixed lists. eg dest:w4soccer list:SOCCER_SUNDAY,SPORT_SUNDAY list:SOCCER_SUNDAY maxitems:200 list:SPORT_SUNDAY .. or a specified FipSeq. dest:w4client list:\DA list:SUBLIST default-list-parameters:SUBLIST If you do not use 'default-list', any non-matching file is ignored. Case is ignored for the names of the 'list' and 'pub' There can be multiple lists separated by a comma. The same 'list' can be defined on several 'dest' lines but only one entry will be made. testforlist: define lists for one or more FipHdr tests. Syntax is testforlist:(list1,list2,..) (FipHdr)=(test) (FipHdr)#(test) There can be one or more lists separated by a comma (no spaces) There can be one or more tests with can be either equal '=' or not equal '#' (not equal can also be '!=' ) For the test a single wildcard '*' can be added at the end. To test for a blank field (or a field which does not exist), use double quotes : XY="" ZZ#"" eg: testforlist:AFX_SPORTS SU=afx XC=s* XC#sdd Both the FipHdr and the Test fields can be FipSeq .. eg ; Check if the source is 'epd' ; should be the XA field XA:epd ; BUT also XA:/AFP-SX77, so repeat on punctuation ; if XA does NOT exist or there is no data, chk SU repeat:Q1 XA,,1,#x repeat:Q2 XA,,2,#x combie:QA Q1|Q2|SU testforlist:epd QA=epd\$d Note that 'testforlist' and 'dest' can be equivalent except the test for 'testforlist' is case INsensitive while for 'dest' sensitive. list: define the size of a list and optional ticker. Sub Parameters are : maxitems maximum number of items Specify zero to mean all items default is all files. maxsize maximum no of chrs of text per item default is 1000 bytes ticker-items maximum no of items for the ticker if not specified, there is no ticker ticker-size max no of chrs per ticker item default is 60 bytes refresh (optional) refresh the main list only once every X secs. Normally the main LIST is refreshed on every new file pub (optional) publication name It restricts audits to a single publication. pub:sunday entry (optional) name of a specific entry if not the default. group (optional) Group List name Use this to build collated lists of several sub lists. eg group:ALL_SPORT The item is also put in this LIST The GROUP list is specified as an ordinary List but may/may not have any 'dests' or 'testforlists' pointing to it. It must be specified BEFORE any other list refers to it. maint:500 (optional) Trim the Top List to this number of items NONE - implying no maintenance - ie all items will be left in the main top list - ** Only use this with extreme care as the list can get very big !! MIDNIGHT or 0 (default) - trim the top list to start at midnight (number of items from 1 to 3000) - just that ! eg list:MOTOR maxitems:0 maxsize:300 ticker-items:100 ticker-size:60 pub: define publication - optional, use only for multi-pub sites. The same parameter is added to each 'list' line which means that any audit message will be restricted to that pub eg pub:sunday before: text to add at the top of the data file. after: text to add at the bottom of the data file. filebefore: file to add at the top of the data file. fileafter: file to add at the bottom of the data file. entry: List entry for each file in HTML with FipSeq. This is the directory line in the LIST. Special care should be taken if you need to change from the default as certain key fields are requred for Audit and Search These include the '<!-- @@## -->' and the first '<br>'. If more than one entry are specified (up to 100 may be), the first (ie top of file) is considered the default. Syntax: entry:(name) (HTML in FipSeq) see below for an example entry-abstract: ditto for the abstract part of the list (ie the bit underneath the clickable link to the data) search-entry: ditto for the search entry which defaults to "\\WQ/\\WN|\\$U|\\WK|\\WM|" ticker-entry: The List entry for Tickers. This is generally fairly short with no or few comments to reduce the size of each ticker list. script: Run a script after the file has been written. log: Item log entry if not default. folder: name of a sub-folder under /fip/data/w4 for this list. This should be used for your own scripts as the standard Fip w4 does not normally track folders. default-maxsize:(number of bytes) default is 1000 bytes metadata-for-source: Define the MetaData for a particular source. Do NOT put a tab in or NL or CR. syntax is metadata-for-source:(agencyName) (Meta Strings) Default the 'default-metadata' keyword or 'pri=\WP cat=\WC' for non-fip search and '\WP \WC' for fip search eg metatdata-for-source:WIRE2 sender=\XU ref=\XR The Headline (\WK), Source (\SU) and Filename (\SN) are always added automatically and do not need to be specified. default-metadata: Define default search metadata Default meta is 'pri=\WP cat=\WC' for non-fip search and '\WP \WC' for fip search Other less often used parameters : missing-list: (name of list) If the file is NOT in any other, it is added to this default: file is ignored default-list-parameters: (name of list) Use this to 'list' for all default parametes NOT specified. syndication-list: (FipSeq containing name of client) default-list-for-syndication: (name of list) Any file that matches a 'dest' but the 'list' is not specified uses the parameters as specified by this 'list' but is named as in the 'dest' line. ie if DA:biggles and DU:w4planes : syndication-list:\DA list:heros maxitems:0 default-list-for-syndication:heros so the list will be called BIGGLES with no check on the number of items. use-hour-folders: Where there is masses of data, store the files in hour folders in order to improve disk access. number: default number system - octal,decimal or hex. chkexists: for NFS or NT mapped drives, a check-file to make sure the drive is valid outputdrive: (NT only) drive letter for data audit-msg: Html string to replace the default audit message default: <font color=\"green\">Fetched by \\WA at \\WT<br></font> audit-text: Html string to replace the default audit text point output-filename: change the output filename supercede: files with the same name are normally replaced no-supercede: files with the same name are normally replaced use this to create new everytime. owner: Unix only, logon of the owner of the files if not yours archive: Archive the file in log/data NewSU: FipHdr field for source if NOT 'SU' wild: wild string chr for matching if not the default '*' singlewild: wild single chr for matching if not the default '?' hostname: Name of this host if not that booted from (for IP address) log-unmatched-files: If a file is NOT in any list - log it with a !ox flag allow-deletes: Allow Delete tokens to zap files and list items - default:no chrmap: (old 8 bit chr) (replacement 8 bit chr) default:no chrmap:\236\243 for FipHdr fields only list-end-of-line: String (in FipSeq) to flag an end-of-line in a List or Search default is none - all endoflines are translated to a space. Take care not to reuse a special chr which you are using to flag something else In particular the text-marker which is usually a TAB or a NL/CR which are end-of-item. default-unwrap-abstract: yes/no if the abtract text is wrapped - at 64 chrs for example - use this to put the list-end-of-line marker at the end of a para. Each file is checked for the optional FipHdr field W4_ABSTRACT_UNWRAP: yes/no which, if found, will override the default. zap-xml-abstract: yes/no ZAp all xml <p>, <br> etc in the abstract default: just zap the < and > Each file is checked for the optional FipHdr field W4_ABSTRACT_ZAP_XML: yes/no which, if found, will override the default. hdr-hash:\005 A single chr (usually a control chr - \005 or \035) to use internally in place of a hash '#' in the FipHdr default is 035 hdr-passthru:\023 A single chr (usually a control chr eg \023) to use as a placeholder for another chr (usually a hash) Normally this is used in conjuction with web/setup/(block).setup and w4_readfile.pl : passthru:\023# default is 000 indicating NO passthru chr allow-flow: (version9) Allow data to input into the Fip Web Flow system version 0 for pre 2014 multi-instance mods (default) version 1 for multi-instance flow-default-section: default section default: fip flow-default-status: default status default: Input flow-unique-id: FipSeq for generating the unique-id if there is not a W4_FLOW_ID default:\\WR flow-ext: File extension for files default: fip Do Not add the '.' This should match any filemapping on the client side for flow_edit.pl or flow_read.pl flow-balance: Balance Group for all data files default:none Files should have one or more of the FipHdr fields : W4_FLOW: This flag is needed to signal the file is part of a flow. no parameters required W4_FLOW_SECTION: (section name required - if not default) W4_FLOW_STATUS: (status required - if not default) W4_FLOW_ID:(actual ID to use) Optionally they can also have : W4_FLOW_L1: (data) .. W4_FLOW_L9: (data) These are extra fields for the LISTs in addition to the first line of data. They can be defaulted using parameters 'flow-default-1' etc Plus the usual suspects for FipSeq - such as fixed: partial: combie: option: repeat: style: replace: newdate: etx (pls link to http://www.fingerpost.co.uk and look for FipSeq ) Ordinary incoming files are checked for FIP header fields : W4_TOP: name of template file to add before the data of the file. The full path should be specified. default: none W4_BOTTOM: name of template file to add after the data of the file. The full path should be specified. default: none W4_HTML_IN_LIST: This flag will NOT strip any HTML in the List file Normally all tags - HTML, SGML or XML are stripped for the list Nor are they counted inthe 'chunks' for a list. ** Please label all Pictures this way : ie in sys/USERS w4reupix= DP:localhost DQ:2w4 DC:\SC W4_HTML_IN_LIST: W4_TOP_LIST: name of file to add before the List Entry. The full path should be specified. default: none W4_BOTTOM_LIST: name of template file to add after the List Entry. The full path should be specified. default: none W4_CHRSET: (chrset) Used with -C utf8 to flag files which are already UTF8 and so need no conversion This changes both fiphdrs and the abstract use W4_ABSTRACT_CHRSET: utf8 to change/flag the Abstract only use W4_FIPHDR_CHRSET: utf8 to change/flag the FipHdr only The chrset can be blank or utf8 W4_ABSTRACT: (FipSeq) Replacement for the abstract in the List and Search from the data in this FipHdr which is normally the first bit of text OR the entry-abstract:(entryname) for that service W4_ABSTRACT_FILE: (FullPathName) Replacement for the abstract in the List and Search from the contents of this file which is normally the first bit of text OR the entry-abstract:(entryname) for that service W4_ABSTRACT_UNWRAP: yes/no unwrap/ do not unwrap the abstract for this file default: no W4_ABSTRACT_ZAP_XML: yes/no remove any XML tags from the abstract default: no W4_LIST_DATE: (yyymmdd) Force the List/Search date to be this (default is current system time when the file hits the input folder) QAZ W4_BLOB_TYPE: W4_BLOB_THUMB: W4_BLOB_VIEW: W4_BLOB_PLAY: FipHdr fields used include : WM: Mime Type WZ: Xchg to use when reading the file. WI: IP address of the host creating this DS: Supercede this file if it already exists default: yes XD: DO NOT Supercede this file if it already exists default: yes WB: if the mimetype is NOT text, use this as replacement text for the list WN: filename WQ: subpath (the top path is assumed as /fip/data) WL: all the lists this file is in, semicolon separated WV: all the lists, space separated - for displaying WD: all the list DELTAS WG: all the list GROUPS WJ: Julian day of this file WH: Date of this file WC: Category WP: Priority WK: Headline WW: No of words (added 07y1) W$: No of chrs (added 07y1) For AUDIT messages, incoming files are checked for FIP header fields : WA: audit file logon WT: Time and date of audit WY: audit message WN: (From Data) filename WQ: (From Data) subpath (the top path is assumed as /fip/data) WL: (From Data) all the lists this file is in, comma separated WV: (From Data) all the lists, space separated - for displaying WD: (From Data) all the list DELTAS WJ: (From Data) Julian day of this file WH: (From Data) Date of this file For DELETE messages, incoming files are checked for FIP header fields : WX: Security checksum for this file WA: logon of the delete person WT: Time and date of delete WN: (From Data) filename WQ: (From Data) subpath (the top path is assumed as /fip/data) WL: (From Data) all the lists this file is in, comma separated WV: (From Data) all the lists, space separated - for displaying WD: (From Data) all the list DELTAS (semicolon separated) WJ: (From Data) Julian day of this file WH: (From Data) Date of this file For Flow messages, ipw4 will ADD the following FipHdr fields : WR Duid WF 1stline of text (Section and Status are implict in the Flow system and are NOT carried in FipHdr fields) (unused are WE, WO, WS IPW4 uses the following environment variables : FIP_W4_defEQ default queue default: general FIP_W4_LINE default line length for \$L def: 80 FIP_W4_WORD default word length for \$W def: 6 \$2 is the second line of text .. \$9 is the ninth line of text Input switches (all optional) : -0 : Use Old Version 0 format files default: current version -9 : run in Speedy mode default: no -a : alert file if not the default which is no publications specified : tables/w4/ALERT publications specified : tables/w4/ALERT_PUBLICATION -c : check this queue or file exists before writing files (for NFS and other mounted queues - see CHKEXISTS above) default: no -C : convert list entry characters to .. default: unconverted -C utf8 convert to utf8 -d : Output Drive (WINNT only) default: drive with Fip on This is overridden by the 'outputdrive' keyword. -D : name of a done queue for input files after processing. If this does not start with a '/', it is assumed to be under /fip/spool. default: files are deleted -f : default flow path default: /fip/data/flow -F : default no of flow sub queues (before 07r was 256). default: 100 -g : do NOT make search Group lists default: do -l : log all files default: do NOT log -L : do NOT log files default: do NOT log -m : UNIX file mask - input to umask for file creation. default is that set for the starting logon (normally 'fip') Pls remember this is input as an octal number eg -m 640 reflects 'rw-r-----' access -N : use the next/previous flags default: do not -o : Output path name default for Version 0 : /fip/spool/w4data If this does not start with a '/', it is assumed to be under /fip/spool. default for other versions : /fip/data/w4/ -q : queue to scan default: 2w4 -Q : keep quiet if the queue for the incoming file does not exist or there are two many duplicates. default:no -r : reindex - just reindex incoming (resent) files. do not add to the lists. default: no do not add the files either. -R : reindex - just reindex incoming (resent) files. do not add to the lists. default: no -s : using external Search default: fip search with a search Group list too -S : using external Search default: fip search WITHOUT a search Group list too -t : sleep time betwix scans default: 1 sec -T : name of search tickers file default: none -u : default owner for ALL files. default: that of 'ip' This may be overridden by the 'owner' parameter. -V : version default: 8 0 - html lists 5 - audit in list 8 - filsize in lists -X : No Search file nor Index file required default: fip search -z : default parameter file default: tables/w4/W4 -v : print version number and exit ---------- Example ---------- pub:herald pub:times pub:sunday ; Text at start of file - Put time stamp and cross references at the end of the file filebefore:/fip/web/setup/w4.file.top ; Text at end of file fileafter:/fip/web/setup/w4.file.bottom ; The aim is to have a cross reference to a file in a directory below this level, ; with the SU as the name of the directory where stories are saved entry:default <DT><!-- \$U CAT:\XC PRI:\XP --><a href="/fip-cgi/pick_showlist.pl?Fipid=91251948919514&file=19981201_rtr/reu4052.0502.html" TARGET="wirecopy_window"> <IMG SRC=/fip-pages/gifs/crush.gif width=10 height=10 border=0> </a><A HREF="/fip-cgi/wir_readfile.pl?Fipid=##FIPID##&file=\WQ/\WN" TARGET="wirecopy_window">\WK</A>\s<FONT SIZE=-1 FACE="Helvetica" COLOR="red">(\s\$D \$M \$Y,\s\$H:\$N<!-- ##@@ -->\s)</FONT><BR> ; Run Verity index program afterwards script:/bin/echo "/fip/data/w4/files/\WQ/\WN" > /fip/spool/2verity/\WN ; Actual lists list:ALL_WIRES_HER maxitems:0 maxsize:300 ticker-items:100 ticker-size:25 pub:herald list:ALL_WIRES_SUN maxitems:0 maxsize:300 ticker-items:100 ticker-size:25 pub:sunday list:AP_ADVISORIES_HER maxitems:0 maxsize:300 ticker-items:100 ticker-size:25 pub:herald ; ---------------------------------------------------------------------- ; Associated Press/Press Association/Reuters dest:all_wires list:ALL_WIRES_HER,ALL_WIRES_SUN ; ; Associated Press ; dest:ap_advisories list:AP_ADVISORIES_HER,AP_ADVISORIES_SUN,AP_ADVISORIES_ET ; NO Financial for Evening Times dest:ap_financial list:AP_FINANCIAL_HER,AP_FINANCIAL_SUN audit-msg:Read by \WA at \WT ---------------------------------------------------------------------- Notes - Installation Do you need to run UTF8 ??? SYSTEM - ipw4 -l -N -C utf8 -T sticker USERS - just text needs w4cp1251 DP:localhost DQ:2w4 W4_ABSTRACT_DC:W4ABS DC:\SC CX:PREW4 W4_ABSTRACT_CHRSET:UTF8 - fiphdr and text w4cp1251 DP:localhost DQ:2w4 W4_ABSTRACT_DC:W4ABS DC:\SC CX:PREW4 W4_CHRSET:UTF8 - xchg (SC)2W4ABS ; W4 Abstract - Russian (CP1251) to UTF8 ; ; Default character set c:isoascii z:chghdr:IH,HK z:convert-fiphdr:utf8,map z:unicode-map:CP1251.TXT ; Convert to UTF-8 z:convert-to-utf8 - Tuning points For the OLD system (-0 input switch or pre version 05 of ipw4) if you have any Lists which will : either have more than 0.5 mb of data at the end of the day or have more than 3 or 4 items per minute Then use the 'refresh' parameter in the list to put the last x secs worth of data into the cache file. This does not affect searching or anythingelse - but it really speeds up processing. In particular this covers wires like Dow Jones, Bloomberg, Business Wire and Bridge/KR. This is not applicable for the ipw4 05+ as the new lists are in chucks of 100 files. - examples for the SYSTEM Using Glimpse as the Search - including Groups (or Collated) w4 local ipw4 -l -s Using Verity as the Search - Excluding Groups (or Collated) w4 local ipw4 -l -S Using Fip Search - with Groups w4 local ipw4 -l Using Fip Search - withOUT Groups w4 local ipw4 -l -g -- What if it is not text in the incoming file - check a couple of areas 1.1 FipHdr field WM does NOT start 'text' 1.2 and there is NO fiphdr market W4_TEXT_REPLACEMENT Nothing will be put out - except the contents of an optional fiphdr field WB - and/or 2.1 add FipHdr field W4_LIST_ABSTRACT with the text/html to - and/or 3.1 match the entry-abstract ---------------------------------------------------------------------- Version Control ;7z46 25jul02 added flow (do not use versions 7a or 7b) (7d for WR) ;h 13may03 audit on other sys was broken. ;i 10jun03 flow - added delete BEFORE adding search link ;j 08aug03 bugette with large files. ;k-o 23apr04 bugette with Audit... ;p-q 05sep04 zippy and timing stats ;r-u 03feb05 added -F for flow queues 256 -> 100 ;v-w 18apr05 added flow-balance-group ;x1 23sep07 buggette in filename - not always unique! ;y1 19mar08 redid search meta to allow for FipSearch too/add WW and W$ ;2-3 16may08 added -C utf8 and chrmap ;z4 6jun08 added next/prv 'np' and -N ;5-6 bugette in search WW/W$ ;8 added default-maxsize ;9 18nov08 added W4_CHRSET ;10 28nov08 bugette with utf8 ;11-12 entry-abstract added ;13-14 29dec08 added W4_DATE ; 15 bugette with utf8 ;16-18 added eolnList and unwrapAbs ;19-24 added W4_ABSTRACT_FILE/UNWRAP/ZAP_XML/CHRSET ;25 added missing-list: to hold files not in any other list ;26 minor bugette if zero length file ;27-28 added hdr-hash and bugette with size of W$ ;30 30apr14 file-trace ;31 buffer sizes -> STDBUF ;32 added zap-xml-abstract ;33 allow-flow:1 for multi-instance ;34 12may15 made search-entry variable ;35 added SX tracking ! ;36-40 better NPseqno - and max items for Ticker ; added hdr-passthru ;41-43 10may20 better blobs and abstracts ;44 npSeqno MUST be in list as 1file can be in multiple Lists ;45 -m reworked as an OCTAL number ;46 zap the x/w4/abs file better ;06l 14feb01 added mimetypes with different entries ;a/b 23feb01 added WG: for groups as fiphdr field in file and -X ;c/d/e 26feb01 added W4_HTML_IN_LIST: ;f 08may01 maint:none ;g/h/i 10sep01 testforlist not catching NOT fields (XC#ABC or XC!=ABC) ;j/k 18mar02 added syndication stuff to version 1 ;l 14may02 added log-unmatched-files ;05g 09aug00 version 2 lists -cdef ;b added -S and w4index for external searches ;c 17oct00 bugette for txt64 for BIG (>64k) files ;d 02nov00 added Groups plus -Reindex ;e 14nov00 added metadata-for-source, audit balanced. ;f 26nov00 added -s and addGroupSearch ;g 14feb01 cleanup (copyright) 2022 and previous years FingerPost Ltd.