eggtcl / rss-synd

Highly configurable asynchronous RSS & Atom feed reader for Eggdrops written in TCL. Supports multiple feeds, gzip compressed feeds, automatically messaging channels with updates at set intervals, custom private/channel triggers and more.
BSD 3-Clause "New" or "Revised" License
25 stars 17 forks source link

################################################################################ README ################################################################################

================================================================================ INSTALL

  1. Copy rss-synd.tcl and rss-synd-settings.tcl to your scripts directory.
  2. Add "source scripts/rss-synd.tcl" to your eggdrop.conf file.

Dependencies (for additional features)

This script will run perfectly fine without any of these dependencies, but if you want any of these features you'll need to download and install the respective package(s).

================================================================================ SETTINGS

Follow the details below. It is possible to define values in either the default variable or within the individual rss feed variables. You can define values in both places, but each feeds individual settings will overwrite the default ones.

Required values:

url The URL of the RSS/ATOM feed. Example: http://www.example.tld/feed.xml https://www.example.tld/feed.xml http://username:password@www.example.tld/feed.xml

channels List of channels the feed (and trigger) are to be active in. (Use space to separate multiple channels)

database Full (or relative from your eggdrops path) path to where you want to store the database file. Example: ./scripts/feedname.db

output The format you would like the RSS to be outputted to you channel in.

max-depth Maximum amount of times the script should follow Location: headers. Keep this relatively low. Default: 5

timeout Timeout of connections (in milliseconds). Default: 60000

user-agent User agent to send in the http request.

announce-type How you want the announce updates to be sent to your channels. Options: 0 = Message Channel 1 = Notice Channel Default: 0

announce-output Maximum articles to output to channel on announce. Setting this to 0 will silence the automatic output. Default: 3

trigger-type How you want the trigger replies to be sent when triggered both in channel and via private message. The format is: : Options: 0 = Message Channel 1 = Notice Channel 2 = Message User 3 = Notice User Default: 0:2

trigger-output Maximum articles to output when triggered. Setting this to 0 will silence the trigger output. Default: 3

update-interval How often (in minutes) you want the feed to be checked. Try and keep this number sensible, something above 15 minutes. Some websites will ban you for hammering their feeds. Default: 30

Optional values:

trigger Public trigger to list feeds. (if you only want to define it once in default use @@feedid@@, this will be replaced by each individual feeds id)

evaluate-tcl Evaluate the output before sending it to channel. Default: 0 (Off)

enable-gzip Enable gzip decompression for this feed. Default: 0 (Off)

remove-empty Remove empty cookies from the output. Default: 1 (On)

output-order The order you want the articles to be announced in channel. Options: 0 = Ascending (Oldest -> Newest) 1 = Descending (Newest -> Oldest)

charset This is the charset you want the feed to be outputted using. The default charset is what your local system charset is set to use. In most cases, if you're having problems with output just use utf-8. Example: utf-8 cp1251 iso8859-1 feedencoding This is the charset the feed is in. (look in the sourcecode it is usualy mentioned in the <?xml> header. Please note that Tcl uses other encoding names, esp. the Windows-xxx encodings. In Tcl they are named cpxxx.

Cookies:

Output works on a cookie system, in this case its dynamic so it depends on what data the feed contains as to what you can output.

As of version 0.3 you are able to reference any tag within each article, or if you really want the whole feed. The format is @@!!...@@, @@item@@ and @@entry@@ cookies are 'shortcuts' and will always point to the current article. If you wish to output an attribute of a tag you can do that by using the attribute name with an = in front of it (eg: @@entry!link!=href@@). This would get the 'href' attribute from the tag. Refer to rss-synd.tcl for more examples.

================================================================================ FAQ

Q: The output to my channel has a lot of random \'s everywhere. A: set the 'eval-tcl' option to 0 (off).

Q: My feeds announce all the articles in the feed, not just the news ones. A: You've either used the same database file for two feeds, or there isnt one set that's working. Make sure the path where your putting your files is writable!

Q: The output to my channel has the annoying cookies still in it. A: set the 'remove-cookies' option to 1 (on)

Q: I cant see what cookies are wrong! what can I do? A: set the 'remove-cookies' option to 0 (off)

Q: The feed wont work properly and I'm not sure why! A: Make sure the feed is valid check it with http://feedvalidator.org/. If the feed has errors, it probably wont work.

EOF