~lucidiot's wiki

Last modified Information Relaying Specification (LIRS) 2.1

Creation date: 1999-10-13 18:00
Update date: 2001-12-16 22:48

This document is an unofficial English translation of the original Japanese specification made by someone who has no knowledge of Japanese. Implement at your own risk.

About LIRS

LIRS is designed to include the minimal necessary information for update time acquisition agents (antennas). It assumes that a site that provides update times should not be burdened with anything other than reporting update times. It also assumes that the sites all run on UNIX environments.

The person exclusively responsible for changes to this specification is Hiya (hiya@haun.org).

Format

  • An LIRS file is a text file compressed using gzip.
  • The text is encoded using EUC-JP and consists in a series of records.
  • A record starts with LIRS,, followed by a data part, and ends with a comma and LF or CRLF.
  • LF is recommended, and CR alone is prohibited.
  • Lines that begin with # are comments and should be ignored.
  • The data part of a record consists in a series of fields separated by commas (,).
  • Field values must not include the CR or LF characters, or unescaped commas.
  • All dates are expressed as Unix timestamps: seconds from 1970-01-01T00:00:00Z.
  • With the exception of the extension field, blank fields should be represented as a zero (0).

Escaping

The backslash character (\) is the escape character. Commas in fields should be escaped (\,). A literal backslash can be inserted using two backslashes (\\).

Fields

The following fields should appear in all records, in this order:

  • Last-Modified
  • Last-Detected
  • Time difference
  • Content-Length
  • URL
  • Title
  • Author name
  • Source URL
  • Extension

Last-Modified

Timestamp of when the target site was last updated.

Should the last update detection fail, the LIRS provider should set this field to zero, and antenna agents should assume this record is unusable.

Last-Detected

Timestamp of when the LIRS provider last checked for the last update time for this site. This defines a notion of “freshness” that antenna agents can use to sort records by priority, or discard old records.

Should the last update detection fail, the LIRS provider should set this field to zero, and antenna agents should assume this record is unusable.

Time difference

Signed integer. Difference, in seconds, between GMT and the timezone of the target site; 32400 or +32400 in Japan. Since update times are reported in GMT, this allows sharing the timezone of the target site.

Content-Length

Size of the content served at the target URL, in bytes. LIRS providers that check the target site, and do not have more internal ways to detect an update, should consider a change in the Content-Length to be an update.

URL

URL of the target site. This field must be unique; a single URL must not be repeated twice in the same LIRS file. This field can be used as a unique identifier by antenna implementations.

Title

Title of the content served at the target site; usually the contents of the HTML <title> tag.

Author name

Name of the author of the content served at this URL.

Source URL

URL that was used by the LIRS provider to acquire update information. This is usually the same as the URL; in case of an implementation that aggregates update information from other LIRS providers, this could be the URL of each LIRS file. How to use this field is left to the implementor.

Extension

Arbitrary string for agent-specific information. Instead of 0 as the default for a blank field, this should be left empty.

Best practices

  • LIRS files should be cached, not generated dynamically.
  • LIRS implementations should automatically discard records that were last detected more than 28800 seconds (8 hours) ago.

Example

This is a single LIRS record, uncompressed:

LIRS,938779260,938781002,32400,49383,http://hiya.ouchi.to/n/,Tadayo Memories,Hiya,http://amano.hauN.org/,blah blah,\r\n

This translates to the following fields:

Title
Tadayo Memories
Author
Hiya
Site URL
http://hiya.ouchi.to/n/
Last modified
1999-10-01T14:01:00Z
Last detected
1999-10-01T14:30:02Z
Server timezone
UTC+9 (32400 seconds)
Source
http://amano.hauN.org/
Custom data
blah blah

Changelog

2001-12-16 22:48
Added a link to the Meta::LIRS Perl module
2000-10-25 14:36
Fixed an error in the description of the URL field.
2000-10-13 15:20
Fixed an error in the usage of gzip in LIRS.pm.
2000-06-23 13:52
Added details about handling line feeds (\015, \012).
2000-06-16 13:47
Added a link to lirs.rb.
2000-05-31 20:00
Backslashes should now be escaped too (\\).
Minor corrections due to changes in LIRS.pm.
1999-11-11 19:41
Document converted to HTML, and minor corrections.
1999-11-03 03:25
Minor corrections after a discussion about DI.
Added the About LIRS section.
1999-10-13 18:00
Initial version.