# Gutenberg

Gutenberg is a fantastic free eBook resource with a truly enormous 
catalogue of over 60,000 out of copyright and public domain books. 
Through my gopher browsing I discovered that they still have a 
[1]gopher server which provides access to the text versions of all 
books, as well as some audio and video files. What they didn't appear 
to have was a nice way to search the catalogue using gopher.


## Gopher interface

I had been thinking for a while how I could contribute to the gopher
revival and this seemed like a logical union. Rather than providing a
gopher interface to http resources, here was a gopher resource that 
was not being fully utilised. I set to work to rectify this situation.


## The index files

In the directory listing there are several index files listed by year
from 1996 in the format of GUTINDEX.<year>. There is also a GUTINDEX
.ALL and GUTINDEX.zip containing a consolidated catalogue listing. I
chose this later file to parse and build a searchable index. 

Parsing the file was not without it's trials, with multibyte charact
ers causing me some frustrations. However, perseverence allowed me to 
get what I needed from the file and build the index. Creating the file
path URI's from the book numbers was fairly easy. An example of how
to resolve the number to a directory was helpfully given in the README
file.

Example, book 1190. You split the numbers and each number would be a
directory except the last. So /1/1/9/1190 where the book was single
digit number you had to begin at zero. So book 9 would be /0/9.


## Gopher menu 

Initially I tried to link directly to the text files. Unfortunately
the naming convention was not consistent and after guessing and 
programatically trying to verify the existance of the file. I decided 
to just link to the directory. This was a much cleaner solution. 
When I noticed there were [2]audio and video files as well I conceded 
that this was the best option.

The end result is a [3]gopher menu which provides a search function 
that searches the catalogue for matching authors and titles. It also 
shows the five most recent additions to the catalogue and five most 
downloaded, with a link at the bottom of each section to list more. 

## Update 01/06/2021 - Atom and RSS new book feeds added.

After a request on IRC for a feed of newly added books, both [4]Atom
and [5]RSS feeds have now been created.
The Atom feed can be accessed directly from a link on the front page 
of the gutenberg interface.

1. [Gutenberg Gopher Server](gopher://dante.pglaf.org/1)
2. These can be searched for by searching 'Audio:' and 'Film:'. 
3. [Gutenberg gopher interface](gopher://gopher.icu/1/gutenberg)
4. [Atom new book feed](gopher://gopher.icu/0/gutenberg/newbooks.atom.xml)
5. [RSS new book feed](gopher://gopher.icu/0/gutenberg/newbooks.rss.xml)