diff --git a/changelog.txt b/changelog.txt
new file mode 100644
index 0000000..9ab591d
--- /dev/null
+++ b/changelog.txt
@@ -0,0 +1,28 @@
+FiveFilters.org: Full-Text RSS
+http://fivefilters.org/content-only/
+CHANGELOG
+------------------------------------
+
+2.2 (2010-10-30)
+ - Character-encoding detection improved (minor change)
+ - Rewriting of relative URLs improved (tracks redirect URLs)
+ - Minor changes to prevent errors in certain hosting environments
+ - Compatibility test file updated with more tests
+
+2.1 (2010-09-13)
+ - Better content extraction (using PHP Readability 1.7.1)
+ - Parallel HTTP requests (using Humble HTTP Agent)
+ - Auto loading of necessary classes
+ - Rewriting of relative URLs (using IRI)
+ - Added compatibility test file (to check if server meets requirements)
+ - Character-encoding support improved (using SimplePie)
+
+1.5 (2010-05-30)
+ - Support for PHP 5.3 (thanks Murilo!)
+ - Character-encoding support improved (favours iconv over mb_convert_encoding)
+
+1.0 (2010-03-05)
+ - Better support for different character-encodings
+ - Auto-cleanup of cache files
+ - Very basic option for load distribution (if you're planning on installing the code on multiple servers)
+ - Separate config file (see config-sample.php)
\ No newline at end of file
diff --git a/config-sample.php b/config-sample.php
new file mode 100644
index 0000000..0336ecb
--- /dev/null
+++ b/config-sample.php
@@ -0,0 +1,130 @@
+enabled = true;
+
+// Restrict service
+// ----------------------
+// Set this to true if you'd like certain features
+// to be available only to key holders.
+// Affected features:
+// * Link handling (disabled for non-key holders if set to true)
+// * Cache time (20 minutes for non-key holders if set to true)
+$options->restrict = false;
+
+// Default entries (without API key)
+// ----------------------
+// The number of feed items to process when no API key is supplied.
+$options->default_entries = 5;
+
+// Max entries (without API key)
+// ----------------------
+// The maximum number of feed items to process when no API key is supplied.
+$options->max_entries = 10;
+
+// Rewrite relative URLs
+// ----------------------
+// With this enabled relative URLs found in the extracted content
+// block are automatically rewritten as absolute URLs.
+// Set to false if you want to preserve relative URLs appearing in
+// the extracted content block.
+$options->rewrite_relative_urls = true;
+
+// Enable caching
+// ----------------------
+// Enable this if you'd like to cache results
+// for 10 minutes. Initially it's best
+// to keep this disabled to make sure everything works
+// as expected.
+$options->caching = false;
+
+// Cache directory
+// ----------------------
+// Only used if caching is true
+$options->cache_dir = dirname(__FILE__).'/cache';
+
+// Message to prepend (without API key)
+// ----------------------
+// HTML to insert at the beginning of each feed item when no API key is supplied.
+$options->message_to_prepend = '';
+
+// Message to append (without API key)
+// ----------------------
+// HTML to insert at the end of each feed item when no API key is supplied.
+$options->message_to_append = '';
+
+// URLs to block
+// ----------------------
+// List of URLs (or parts of a URL) which the service should not accept
+$options->blocked_urls = array();
+
+// Error message when content extraction fails (without API key)
+// ----------------------
+$options->error_message = '[unable to retrieve full-text content]';
+
+/////////////////////////////////////////////////
+/// ADVANCED OPTIONS ////////////////////////////
+/////////////////////////////////////////////////
+
+// API keys
+// ----------------------
+// NOTE: You do not need an API key from fivefilters.org to run your own
+// copy of the code. This is here if you'd like to offer others an API key
+// to access _your_ copy.
+// Keys let you group users - those with a key and those without - and
+// restrict access to the service to those without a key.
+// If you want everyone to access the service in the same way, you can
+// leave the array below empty and ignore the API key options further down.
+// The options further down in this file will allow you to specify
+// how the service should behave in each mode.
+$options->api_keys = array();
+
+// Default entries (with API key)
+// ----------------------
+// The number of feed items to process when a valid API key is supplied.
+$options->default_entries_with_key = 5;
+
+// Max entries (with API key)
+// ----------------------
+// The maximum number of feed items to process when a valid API key is supplied.
+$options->max_entries_with_key = 10;
+
+// Message to prepend (with API key)
+// ----------------------
+// HTML to insert at the beginning of each feed item when a valid API key is supplied.
+$options->message_to_prepend_with_key = '';
+
+// Message to append (with API key)
+// ----------------------
+// HTML to insert at the end of each feed item when a valid API key is supplied.
+$options->message_to_append_with_key = '';
+
+// Error message when content extraction fails (with API key)
+// ----------------------
+$options->error_message_with_key = '[unable to retrieve full-text content]';
+
+// Alternative Full-Text RSS service URL
+// ----------------------
+// This option is to offer very simple load distribution for the service.
+// If you've set up another instance of the Full-Text RSS service on a different
+// server, you can enter its full URL here.
+// E.g. 'http://my-other-server.org/full-text-rss/makefulltextfeed.php'
+// If you specify a URL here, 50% of the requests to makefulltextfeed.php on
+// this server will be redirected to the URL specified here.
+$options->alternative_url = '';
+
+// Cache directory level
+// ----------------------
+// Spread cache files over different directories (only used if caching is enabled).
+// Used to prevent large number of files in one directory.
+// This corresponds to Zend_Cache's hashed_directory_level
+// see http://framework.zend.com/manual/en/zend.cache.backends.html
+// It's best not to change this if you're unsure.
+$options->cache_directory_level = 0;
+
+?>
\ No newline at end of file
diff --git a/css/niceforms-default.css b/css/niceforms-default.css
new file mode 100644
index 0000000..060b867
--- /dev/null
+++ b/css/niceforms-default.css
@@ -0,0 +1,92 @@
+/*Defaults Styling*/
+body {font:12px/17px Arial, Helvetica, sans-serif; color:#333; background:#ccc; padding:40px 20px 20px 20px;}
+fieldset {background:#f2f2e6; padding:10px; border:1px solid #fff; border-color:#fff #666661 #666661 #fff; margin-bottom:36px; width:600px;}
+input, textarea, select {font:12px/12px Arial, Helvetica, sans-serif; padding:0;}
+fieldset.action {background:#9da2a6; border-color:#e5e5e5 #797c80 #797c80 #e5e5e5; margin-top:-20px;}
+legend {background:#bfbf30; color:#fff; font:17px/21px Calibri, Arial, Helvetica, sans-serif; padding:0 10px; margin:-26px 0 0 -11px; font-weight:bold; border:1px solid #fff; border-color:#e5e5c3 #505014 #505014 #e5e5c3;}
+label {font-size:11px; font-weight:bold; color:#666;}
+label.opt {font-weight:normal;}
+dl {clear:both;}
+dt {float:left; text-align:right; width:90px; line-height:25px; margin:0 10px 10px 0;}
+dd {float:left; width:475px; line-height:25px; margin:0 0 10px 0;}
+#footer {font-size:11px;}
+
+#container {width:700px; margin:0 auto;}
+
+/*##########################################
+Script: Niceforms 2.0
+Theme: StandardBlue
+Author: Lucian Slatineanu
+URL: http://www.emblematiq.com/
+##########################################*/
+
+/*Text inputs*/
+.NFText {border:none; vertical-align:middle; font:12px/15px Arial, Helvetica, sans-serif; background:none;}
+.NFTextCenter {height:15px; background:url(../images/niceforms/input.png) repeat-x 0 0; padding:3px 0; margin:0; float:left; line-height:15px;}
+.NFTextLeft, .NFTextRight {width:7px; height:21px; vertical-align:middle; float:left;}
+.NFTextLeft {background:url(../images/niceforms/input-left.png) no-repeat 0 0;}
+.NFTextRight {background:url(../images/niceforms/input-right.png) no-repeat 0 0;}
+/*Radio*/
+.NFRadio {cursor:pointer; position:absolute; display:block; width:13px; height:13px; border:1px solid transparent; background:url(../images/niceforms/radio.png) no-repeat 0 0; z-index:2;}
+/*Checkbox*/
+.NFCheck {cursor:pointer; position:absolute; width:12px; height:12px; border:1px solid transparent; background:url(../images/niceforms/checkbox.png) no-repeat 0 0; z-index:2;}
+/*Buttons*/
+.NFButton {width:auto; height:26px; color:#fff; padding:0 2px; background:url(../images/niceforms/button.png) repeat-x 0 0; cursor:pointer; border:none; font:10px/26px Tahoma, Arial, Helvetica, sans-serif; font-weight:bold; text-transform:uppercase; letter-spacing:1px; vertical-align:middle;}
+.NFButtonLeft, .NFButtonRight {width:6px; height:26px; vertical-align:middle;}
+.NFButtonLeft {background:url(../images/niceforms/button-left.png) no-repeat 0 0;}
+.NFButtonRight {background:url(../images/niceforms/button-right.png) no-repeat 0 0;}
+/*Textareas*/
+.NFTextarea {border:none; background:none; font:12px/12px Arial, Helvetica, sans-serif; margin:0;}
+.NFTextareaTop, .NFTextareaBottom {height:5px; clear:both; float:none; padding-right:10px;}
+.NFTextareaTop {background:url(../images/niceforms/textarea-tr.png) no-repeat 100% 0;}
+.NFTextareaBottom {background:url(../images/niceforms/textarea-br.png) no-repeat 100% 0; margin-bottom:5px;}
+.NFTextareaTopLeft, .NFTextareaBottomLeft {width:5px; height:5px;}
+.NFTextareaTopLeft {background:#f2f2e6 url(../images/niceforms/textarea-tl.png) no-repeat 0 0;}
+.NFTextareaBottomLeft {background:#f2f2e6 url(../images/niceforms/textarea-bl.png) no-repeat 0 0;}
+.NFTextareaLeft, .NFTextareaRight, .NFTextareaLeftH, .NFTextareaRightH {float:left; padding-bottom:5px;}
+.NFTextareaLeft, .NFTextareaLeftH {width:5px;}
+.NFTextareaLeft {background:url(../images/niceforms/textarea-l-off.png) repeat-y 0 0;}
+.NFTextareaLeftH {background:url(../images/niceforms/textarea-l-over.png) repeat-y 0 0;}
+.NFTextareaRight, .NFTextareaRightH {padding-right:5px; padding-bottom:0;}
+.NFTextareaRight {background:url(../images/niceforms/textarea-r-off.png) repeat-y 100% 0;}
+.NFTextareaRightH {background:url(../images/niceforms/textarea-r-over.png) repeat-y 100% 100%;}
+/*Files*/
+.NFFileButton {padding-bottom:0; vertical-align:bottom; cursor:pointer; background:url(../images/niceforms/file.png) no-repeat 0 0; width:60px; height:21px;}
+.NFFile {position:relative; margin-bottom:5px;}
+.NFFile input.NFhidden {position:relative; filter:alpha(opacity=0); opacity:0; z-index:2; cursor:pointer; text-align:left;}
+.NFFileNew {position:absolute; top:0px; left:0px; z-index:1;}
+/*Selects*/
+.NFSelect {height:21px; position:absolute; border:1px solid transparent;}
+.NFSelectLeft {float:left; width:3px; height:21px; background:url(../images/niceforms/select-left.png) no-repeat 0 0; vertical-align:middle;}
+.NFSelectRight {height:21px; width:auto; background:url(../images/niceforms/select-right.png) no-repeat 100% 0; cursor:pointer; font:12px/21px Arial, Helvetica, sans-serif; color:#fff; padding-left:3px; margin-left:3px;}
+.NFSelectTarget {position:absolute; background:none; margin-left:-13px; margin-top:18px; z-index:3; left:0; top:0; padding-bottom:13px;}
+.NFSelectOptions {position:relative; background:#707175; margin-left:16px; margin-top:0; list-style:none; padding:4px 0; color:#fff; font:11px/13px Arial, Helvetica, sans-serif; z-index:4; max-height:200px; overflow-y:auto; overflow-x:hidden; left:0; top:0;}
+.NFSelectOptions li {padding-bottom:1px;}
+.NFSelectOptions a {display:block; text-decoration:none; color:#fff; padding:2px 3px; background:none;}
+.NFSelectOptions a.NFOptionActive {background:#464646;}
+.NFSelectOptions a:hover {background:#333;}
+/*Multiple Selects*/
+.NFMultiSelect {border:0; background:none; margin:0;}
+.NFMultiSelectTop, .NFMultiSelectBottom {height:5px; clear:both; float:none; padding-right:10px;}
+.NFMultiSelectTop {background:url(../images/niceforms/textarea-tr.png) no-repeat 100% 0;}
+.NFMultiSelectBottom {background:url(../images/niceforms/textarea-br.png) no-repeat 100% 0; margin-bottom:5px;}
+.NFMultiSelectTopLeft, .NFMultiSelectBottomLeft {width:5px; height:5px;}
+.NFMultiSelectTopLeft {background:#f2f2e6 url(../images/niceforms/textarea-tl.png) no-repeat 0 0;}
+.NFMultiSelectBottomLeft {background:#f2f2e6 url(../images/niceforms/textarea-bl.png) no-repeat 0 0;}
+.NFMultiSelectLeft, .NFMultiSelectRight, .NFMultiSelectLeftH, .NFMultiSelectRightH {float:left; padding-bottom:5px;}
+.NFMultiSelectLeft, .NFMultiSelectLeftH {width:5px;}
+.NFMultiSelectLeft {background:url(../images/niceforms/textarea-l-off.png) repeat-y 0 0;}
+.NFMultiSelectLeftH {background:url(../images/niceforms/textarea-l-over.png) repeat-y 0 0;}
+.NFMultiSelectRight, .NFMultiSelectRightH {padding-right:5px; padding-bottom:0;}
+.NFMultiSelectRight {background:url(../images/niceforms/textarea-r-off.png) repeat-y 100% 0;}
+.NFMultiSelectRightH {background:url(../images/niceforms/textarea-r-over.png) repeat-y 100% 0;}
+
+/*Focused*/
+.NFfocused {border:1px dotted #666;}
+/*Hovered*/
+.NFh {background-position:0 100%;}
+.NFhr {background-position:100% 100%;}
+/*Hidden*/
+.NFhidden {opacity:0; z-index:-1; position:relative;}
+/*Safari*/
+select, input, textarea, button {outline:none; resize:none;}
\ No newline at end of file
diff --git a/ftr_compatibility_test.php b/ftr_compatibility_test.php
new file mode 100644
index 0000000..cc34ba5
--- /dev/null
+++ b/ftr_compatibility_test.php
@@ -0,0 +1,362 @@
+='));
+$pcre_ok = extension_loaded('pcre');
+$zlib_ok = extension_loaded('zlib');
+$mbstring_ok = extension_loaded('mbstring');
+$iconv_ok = extension_loaded('iconv');
+$tidy_ok = function_exists('tidy_parse_string');
+$curl_ok = function_exists('curl_exec');
+$http_ok = (extension_loaded('http') && class_exists('HttpRequestPool'));
+$allow_url_fopen_ok = (bool)ini_get('allow_url_fopen');
+$redirect_ok = ($allow_url_fopen_ok && file_get_contents($redirect_url) == 'Redirect works');
+
+if (extension_loaded('xmlreader')) {
+ $xml_ok = true;
+} elseif (extension_loaded('xml')) {
+ $parser_check = xml_parser_create();
+ xml_parse_into_struct($parser_check, '&', $values);
+ xml_parser_free($parser_check);
+ $xml_ok = isset($values[0]['value']);
+} else {
+ $xml_ok = false;
+}
+
+header('Content-type: text/html; charset=UTF-8');
+
+?>
+
+
+
You have everything you need to run properly! Congratulations!
+
+
+
PHP: You are running a supported version of PHP. No problems here.
+
+
XML: You have XMLReader support or a version of XML support that isn't broken installed. No problems here.
+
+
PCRE: You have PCRE support installed. No problems here.
+
+
+
allow_url_fopen: You have allow_url_fopen enabled. No problems here.
+
+
+
Zlib: You have Zlib enabled. This allows SimplePie to support GZIP-encoded feeds. No problems here.
+
+
Zlib: The Zlib extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.
+
+
+
+
mbstring and iconv: You have both mbstring and iconv installed! This will allow to handle the greatest number of languages. No problems here.
+
+
mbstring:mbstring is installed, but iconv is not.
+
+
iconv:iconv is installed, but mbstring is not.
+
+
mbstring and iconv:You do not have either of the extensions installed. This will significantly impair your ability to read non-English feeds, as well as even some English ones.
+
+
+
+
Tidy: You have Tidy support installed. No problems here.
+
+
Tidy: The Tidy extension is not available. should still work with most feeds, but you may experience problems with some.
+
+
+
+
cURL: You have cURL support installed. No problems here.
+
+
cURL: The cURL extension is not available. SimplePie will use fsockopen() instead.
+
+
+
+
HttpRequestPool: You have HttpRequestPool support installed. No problems here.
+
+
HttpRequestPool: The HttpRequestPool class is not available. will use file_get_contents() instead to fetch URLs sequentially rather than in parallel.
+
+
+
+
HTTP Redirects: Your server appears to handle redirects ok. No problems here.
+
+
HTTP Redirects: Your server appears not to be able to handle HTTP redirects. should still work with most feeds, but you may experience problems with some.
+
+
+
+
allow_url_fopen: Your PHP configuration has allow_url_fopen disabled. will not work here.
+
+
+
+
PCRE: Your PHP installation doesn't support Perl-Compatible Regular Expressions. will not work here.
+
+
+
XML: Your PHP installation doesn't support XML parsing. will not work here.
+
+
+
PHP: You are running an unsupported version of PHP. will not work here.
+
+
+
+
+
+
+
+
Bottom Line: Yes, you can!
+
Your webhost has its act together!
+
You can download the latest version of from FiveFilters.org.
+
Note: Passing this test does not guarantee that will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.
+
+
Bottom Line: Yes, you can!
+
For most feeds, it'll run with no problems. There are certain languages that you might have a hard time with though.
+
You can download the latest version of from FiveFilters.org.
+
Note: Passing this test does not guarantee that will run on your webhost — it only ensures that the basic requirements have been addressed. If you experience any problems, please let us know.
+
+
Bottom Line: We're sorry…
+
Your webhost does not support the minimum requirements for . It may be a good idea to contact your webhost, and ask them to install a more recent version of PHP as well as the xmlreader, xml, mbstring, iconv, curl, and zlib extensions. And ask them to enable allow_url_fopen.
+
+
+
+
+
This compatibility test has been borrowed (and slightly adapted) from the one supplied by SimplePie.org. We have kept most of their checks intact as we use SimplePie in our application.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/images/agplv3.png b/images/agplv3.png
new file mode 100644
index 0000000..85a4add
Binary files /dev/null and b/images/agplv3.png differ
diff --git a/images/background.png b/images/background.png
new file mode 100644
index 0000000..24e9823
Binary files /dev/null and b/images/background.png differ
diff --git a/images/icon_feed.png b/images/icon_feed.png
new file mode 100644
index 0000000..5346bbc
Binary files /dev/null and b/images/icon_feed.png differ
diff --git a/images/niceforms/0.png b/images/niceforms/0.png
new file mode 100644
index 0000000..f38e9f9
Binary files /dev/null and b/images/niceforms/0.png differ
diff --git a/images/niceforms/button-left.png b/images/niceforms/button-left.png
new file mode 100644
index 0000000..2a8e4bb
Binary files /dev/null and b/images/niceforms/button-left.png differ
diff --git a/images/niceforms/button-right.png b/images/niceforms/button-right.png
new file mode 100644
index 0000000..3d37a86
Binary files /dev/null and b/images/niceforms/button-right.png differ
diff --git a/images/niceforms/button.png b/images/niceforms/button.png
new file mode 100644
index 0000000..2e98427
Binary files /dev/null and b/images/niceforms/button.png differ
diff --git a/images/niceforms/checkbox.png b/images/niceforms/checkbox.png
new file mode 100644
index 0000000..369dfea
Binary files /dev/null and b/images/niceforms/checkbox.png differ
diff --git a/images/niceforms/file.png b/images/niceforms/file.png
new file mode 100644
index 0000000..8701132
Binary files /dev/null and b/images/niceforms/file.png differ
diff --git a/images/niceforms/input-left.png b/images/niceforms/input-left.png
new file mode 100644
index 0000000..3d3cb6b
Binary files /dev/null and b/images/niceforms/input-left.png differ
diff --git a/images/niceforms/input-right.png b/images/niceforms/input-right.png
new file mode 100644
index 0000000..bd93ce4
Binary files /dev/null and b/images/niceforms/input-right.png differ
diff --git a/images/niceforms/input.png b/images/niceforms/input.png
new file mode 100644
index 0000000..6bd2a10
Binary files /dev/null and b/images/niceforms/input.png differ
diff --git a/images/niceforms/radio.png b/images/niceforms/radio.png
new file mode 100644
index 0000000..d323a81
Binary files /dev/null and b/images/niceforms/radio.png differ
diff --git a/images/niceforms/select-left.png b/images/niceforms/select-left.png
new file mode 100644
index 0000000..0443650
Binary files /dev/null and b/images/niceforms/select-left.png differ
diff --git a/images/niceforms/select-right.png b/images/niceforms/select-right.png
new file mode 100644
index 0000000..d380d0f
Binary files /dev/null and b/images/niceforms/select-right.png differ
diff --git a/images/niceforms/textarea-bl.png b/images/niceforms/textarea-bl.png
new file mode 100644
index 0000000..b78af5c
Binary files /dev/null and b/images/niceforms/textarea-bl.png differ
diff --git a/images/niceforms/textarea-br.png b/images/niceforms/textarea-br.png
new file mode 100644
index 0000000..f5fe7b1
Binary files /dev/null and b/images/niceforms/textarea-br.png differ
diff --git a/images/niceforms/textarea-l-off.png b/images/niceforms/textarea-l-off.png
new file mode 100644
index 0000000..d3bc965
Binary files /dev/null and b/images/niceforms/textarea-l-off.png differ
diff --git a/images/niceforms/textarea-l-over.png b/images/niceforms/textarea-l-over.png
new file mode 100644
index 0000000..0dd4cde
Binary files /dev/null and b/images/niceforms/textarea-l-over.png differ
diff --git a/images/niceforms/textarea-r-off.png b/images/niceforms/textarea-r-off.png
new file mode 100644
index 0000000..f5016e2
Binary files /dev/null and b/images/niceforms/textarea-r-off.png differ
diff --git a/images/niceforms/textarea-r-over.png b/images/niceforms/textarea-r-over.png
new file mode 100644
index 0000000..9e6edf7
Binary files /dev/null and b/images/niceforms/textarea-r-over.png differ
diff --git a/images/niceforms/textarea-tl.png b/images/niceforms/textarea-tl.png
new file mode 100644
index 0000000..962c67e
Binary files /dev/null and b/images/niceforms/textarea-tl.png differ
diff --git a/images/niceforms/textarea-tr.png b/images/niceforms/textarea-tr.png
new file mode 100644
index 0000000..2fa5a91
Binary files /dev/null and b/images/niceforms/textarea-tr.png differ
diff --git a/images/tekzilla.jpg b/images/tekzilla.jpg
new file mode 100644
index 0000000..483cdaf
Binary files /dev/null and b/images/tekzilla.jpg differ
diff --git a/images/title.png b/images/title.png
new file mode 100644
index 0000000..d3539d2
Binary files /dev/null and b/images/title.png differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..20fd882
--- /dev/null
+++ b/index.html
@@ -0,0 +1,144 @@
+
+
+
+
+ Full-Text RSS Feeds | from fivefilters.org
+
+
+
+
+
+
+
+
Thanks for downloading and setting this up. If you haven't done so already, check server compatibility
+ to see if your environment will support this application.
+
If everything's okay, feel free to edit this file (index.html) and make any changes you like. If you plan
+ to offer this service to others, please keep a download link so users can grab a copy of the code if they
+ want it (you can either offer the download yourself, or link to the download page on fivefilters.org).
+ That's one requirement of the license.
+
Thanks! :)
+
+
For everyone else
+
+
About
+
This is a free software project to help people extract content from web pages. It can extract content from a standard HTML page and return a 1-item feed or it can transform an existing feed into a full-text feed. It is being developed as part of the Five Filters project to promote independent, non-corporate media.
+
+
Bookmarklet
+
To easily transform partial-feeds you encounter (or convert any content on a page into a 1-item feed), drag the link below to your browser's bookmarks toolbar.
+ Then whenever you'd like a full-text feed, click the bookmarklet.
+
Drag this:
+
+
+
API
+
To extract content from a web page or to transform an existing partial feed to full text, pass the URL (encoded) in the querystring to the following URL:
+
+
/makefulltextfeed.php?url=[url]
+
+
If you have an API key, add that to the querystring:
+
+
/makefulltextfeed.php?key=[key]&url=[url]
+
/makefulltextfeed.php?key=[key]&max=[number of feed items]&url=[url]
+
+
+
If you're not hosting this yourself, you do not have to rely on an external API if you don't want to — this is a free software (open source)
+ project licensed under the AGPL. You're free to download your own copy.
The application uses PHP, PHP Readability, SimplePie, FeedWriter, Humble HTTP Agent, Zend Cache and IRI. Readability is the magic piece of code that tries to identify and extract the content block from any given web page.
+
+
System Requirements
+
+
PHP 5.2 or above is required.
+ The code has been tested on Windows and Linux using the Apache web server. If you're a Windows user, you can try it on your own machine using WampServer.
+
+
Download and Installation
+
The software can be downloaded free of charge through launchpad.net using a Bazaar client (see below).
+ However, for those who'd like a simpler solution, you can also buy a zip package with the
+ source code.
+
+
Installation with the Bazaar client
+
+
+
Log in to your host using SSH
+
Change to the directory where you want Full-Text RSS installed
+
Enter bzr export full-text-rss http://bazaar.launchpad.net/~keyvan/fivefilters/content-only/
+
Now enter chmod -R 0777 full-text-rss/cache/
+
That's it! Try accessing the full-text-rss folder through your web browser, you should see the form asking for a URL.
+
(Optional) If you'd like to customise the software, rename config-sample.php to config.php and edit the file.
+
+
+
If you'd like to create a feed without going through the form first, you can simply pass the URL in the query string to makefulltextfeed.php (see the API section above).
+
+
License
+
This web application is licensed under the AGPL version 3 — which basically means if you use the code to offer the same or similar service for your users, you are also required to share the code with your users so they can do the same themselves. (More on why this is important.)
+
The libraries used by the application are licensed as follows...
You have everything you need to run SimplePie properly! Congratulations!
+
+
+
PHP: You are running a supported version of PHP. No problems here.
+
+
XML: You have XML support installed. No problems here.
+
+
PCRE: You have PCRE support installed. No problems here.
+
+
cURL: You have cURL support installed. No problems here.
+
+
cURL: The cURL extension is not available. SimplePie will use fsockopen() instead.
+
+
+
+
Zlib: You have Zlib enabled. This allows SimplePie to support GZIP-encoded feeds. No problems here.
+
+
Zlib: The Zlib extension is not available. SimplePie will ignore any GZIP-encoding, and instead handle feeds as uncompressed text.
+
+
+
+
mbstring and iconv: You have both mbstring and iconv installed! This will allow SimplePie to handle the greatest number of languages. Check the Supported Character Encodings chart to see what's supported on your webhost.
+
+
mbstring:mbstring is installed, but iconv is not. Check the Supported Character Encodings chart to see what's supported on your webhost.
+
+
iconv:iconv is installed, but mbstring is not. Check the Supported Character Encodings chart to see what's supported on your webhost.
+
+
mbstring and iconv:You do not have either of the extensions installed. This will significantly impair your ability to read non-English feeds, as well as even some English ones. Check the Supported Character Encodings chart to see what's supported on your webhost.
+
+
+
PCRE: Your PHP installation doesn't support Perl-Compatible Regular Expressions. SimplePie is a no-go at the moment.
+
+
+
XML: Your PHP installation doesn't support XML parsing. SimplePie is a no-go at the moment.
+
+
+
PHP: You are running an unsupported version of PHP. SimplePie is a no-go at the moment.
Note: Passing this test does not guarantee that SimplePie will run on your webhost — it only ensures that the basic requirements have been addressed.
+
+
Bottom Line: We're sorry…
+
Your webhost does not support the minimum requirements for SimplePie. It may be a good idea to contact your webhost, and ask them to install a more recent version of PHP as well as the xml, mbstring, iconv, curl, and zlib extensions.
+
+
+
+
+
¹ — SimplePie 2 will not support PHP 4.x. The core PHP team has discontinued PHP 4.x patches and support. Read the announcement.
+
² — Some recent versions of the PCRE (PERL-Compatible Regular Expression) engine compiled into PHP have been buggy, and are the source of PHP segmentation faults (e.g. crashes) which cause random things like blank, white screens. Check the Support Forums for the latest information on patches and ongoing fixes.