Git Product home page Git Product logo

grr's Introduction

NOTE I'm no longer working on this project. Try Gofr for App Engine, which I also wrote. Gofr scales considerably better for larger sets of data, and includes mobile browser support, high-density screen support, sharing, and other nifty features.

grr >:(

grr was an attempt to replace the gaping hole that the departure of [Google Reader] 1 left in my daily routine. Its name is an abbreviation for Google Reader Replacement, as well as an accurate representation of my sentiments towards the discontinuation of one of Google's most useful products.

grr consists of two components - the web application, with which the user interacts, and the background updater, which routinely updates feeds in the background.

Screenshot

Features

Primary focus of grr was to replicate the core functionality of [Google Reader] 1 - specifically, features like starring, reading/unreading, navigation, and subscription categories. To that extent, grr supports:

  • Subscription categories
  • Starring
  • Marking as read/unread (single articles as well as entire views)
  • Filtering by status (All/Unread/Starred)
  • Paging
  • Tagging
  • Simple navigation using Previous/Next buttons
  • Keyboard shortcuts
  • Ability to subscribe to individual feeds

Additional features include:

  • Localization support
  • Infinite nesting for subscription categories
  • Article 'liking', along with 'like' counts (this feature was available on Google Reader at some point)
  • Regular client-side update polling
  • Ability to mass-import feeds from OPML-formatted documents (such as those generated by [Google Takeout] 7)
  • Support for any number of user accounts
  • Built-in [OpenID] 6 support
  • Choice of two background updaters - standard sequential updater written in [PHP] 2, or high-performance concurrent updater written in [Go] 10
  • [Google App Engine] 12 support (currently experimental)

Requirements

On the server side, grr requires:

  • [Apache] 8 server with [PHP] 2 support
  • [MySQL] 3 server
  • [cron] 4, or any other scheduling service to routinely update feed information
  • (optional) [Go] 10 runtimes with the [go-mysql-library] 11 package to use the alternative concurrent feed updater, instead of the default sequential updater written in PHP

On the client side, grr relies heavily on [JavaScript] 5 and probably needs a decent modern browser.

grr is compatible with [Google App Engine] 12 - though PHP support on GAE is currently experimental, and requires prior approval. app.yaml is included - copy it to your project's 'server' directory, and replace 'grr-reader' with the name of your project.

Installation

To install:

  1. Copy the contents of the server directory to a www-accessible directory
  2. Copy the contents of the shell directory to a private area not accessible via www
  3. Import the MySQL schema in mysql/schema_full.sql to a MySQL database
  4. Rename web application's default.config.php to 'config.php' and set all the necessary configuration information
  5. Rename shell application's default.config.php to 'config.php' and set the timezone and database configuration
  6. Log in to the web application and create a new administrative account
  7. Schedule crawl.sh to run routinely

Note that the web application, the database and shell application components do not have to reside on the same system.

Creating User Accounts

Depending on configuration, grr can allow anyone to create a new account (see the "CREATE_UNKNOWN_ACCOUNTS" setting in the configuration, disabled by default), or require a "welcome token" link to create a new account. Welcome token links can be generated in the Administrator section of the application and are valid for 2 weeks.

Limitations

grr was never polished, and as a result:

  • The design of the web application is atrocious
  • Administrative features were mostly an afterthought and could certainly do with a redesign/overhaul

grr's People

Contributors

0xe1f avatar cardre avatar jimparis avatar pokebyte avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grr's Issues

Hiding read feeds

Is there any way (even if I need to modify source code) to only show the feeds that have unread items?

Debian packaging

Hi!

Is there any plan to create a Debian package?

If you do not want to do this do you mind if I try to add this package to the Debian?

schema_full.mysql missing changes from V9 and v10 files

I'm not sure if this is a bug or not. I thought I add this here just in case others are having problems using grr initially. I'm using commit: 0394a73

When installing a fresh grr and using schema_full.mysql to setup the database two changes are missing.

  1. the new columns introduced in schema_upgrade_v9.mysql, which cause reading/staring not to work while going thru feeds. You will see errors like this in error_log:
    PHP Fatal error: Call to a member function bind_param() on a non-object in /path/to/grr/classes/MySqlStorage.php on line 1715
  2. the column change in schema_upgrade_v10.mysql which cause the admin page to give 500 error. You will also see errors like this in error_log:
    PHP Fatal error: Call to a member function execute() on a non-object in /path/to/grr/classes/MySqlStorage.php on line 991

To fix both just run mentioned files in your database.

Create an installation wizard

Create an installer wizard which will guide the user through the initial configuration, database setup and administrative user creation.

Wizard will be initiated when the application is first accessed, and must confirm that the user has access to the file system.

Examples: WordPress, Gallery.

Remove unused feeds

When all users have unsubscribed from a feed, crawler will still continue to index and records for articles still exist in database.

At beginning of each background crawl process, remove feeds and their corresponding articles if no longer used by any users.

How to create account

After following all the steps in the README.md file, I find myself unable to login.

Specifically:
I have no idea how to use the "admin_secret" variable. I tried logging in using "admin", "root" and empty usernames, and the secret as password, but nothing worked, it keeps saying "Incorrect username or password".

Then I decided to resort to openid.
Unfortunately I can't use my regular OpenID, but am forced to choose between Google and Yahoo.
I chose Google, chose my google account, gave permission to know my email address, and then I was redirected back at the grr login page.
But I still wasn't logged in.

All these tests have been performed with:
create_unknown_accounts true.
login_throttling_window false
admin_secret invented_password
role_user user
role_admin admin

Am I missing something?

Thanks!

Handling feeds containing articles with no publish date

Some ancient feeds (RSS1.0/RDF) appear to sometimes have articles with no publication date. See - http://www.gentoo.org/rdf/en/gentoo-news.rdf

I've coded up an enhancement to the RssParser that looks up the guid of an article if there is no publication date. If it finds an existing article that has already been parsed with the same guid, then it sets the publish date timestamp to the found article's publication date within the RSS parser. This stops it being reset everytime (which is the current problem) and meaning the same articles appear again at the top of your reader list, even though they are read articles.

This requires access to the 'db' attribute/variable to make a prepared statement to do the select enquiry on the database within the RssParser class. As it doesn't have access to the private Crawler 'db' attribute, I'm currently hacking it by using $GLOABLS['db'] and having the Crawler class set this after successfully connecting to MySQL

Would be interested to know if you have a better approach to this given your current code structure. As by the time it exits the parser, the articles have a default publish date of the current timestamp, if nothing else sets it.

My 'hack' is working and doing its job now, so the articles don't keep being reassigned a new publication date. But before submitting a pull request, thought I'd run it past you first.

Name

I think the project could use a new name: "grr" is already Günther's Rss Reader, which has been using the name since 2005 and has a most recent release about a year ago. I noticed because I was trying to find your project, and both "grr rss" and "grr reader" searches on Google kept pulling up the wrong one.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.