Coder Social home page Coder Social logo

nesaku / biblioreads Goto Github PK

View Code? Open in Web Editor NEW
132.0 4.0 8.0 13.19 MB

An Alternative Private Goodreads Front-End.

Home Page: https://biblioreads.eu.org

License: GNU Affero General Public License v3.0

JavaScript 99.86% CSS 0.14%
alternative-frontends goodreads goodreads-api privacy scraper libre

biblioreads's Introduction

BiblioReads

BiblioReads is a free and open source alternative Goodreads front-end focused on privacy.

Scrapes content from Goodreads and presents the results without any of the bloat.

Inspired by Nitter, libremdb and other open source alternative front-end projects.

GitHub | Codeberg


Screenshots

Dark Mode Light Mode

View more screenshots.


Features

  • No ads - simple. We don't show ads.
  • No tracking or data collection - no personal information is ever collected. Tracking cookies are not used.
  • No sign-up required - use BiblioReads without signing up for an account and never deal with those annoying sign-up popups.
  • All requests are proxied - your requests are never directly made to Goodreads
  • Lightweight
  • Modern Design - responsive design with built-in light & dark mode support
  • PWA Support - installable as a PWA on desktop and mobile

Instances

Instance URL Country Provider Notes
biblioreads.eu.org ๐Ÿ‡บ๐Ÿ‡ธ Netlify Run by me
biblioreads.vercel.app ๐Ÿ‡บ๐Ÿ‡ธ Vercel Run by me
biblioreads.mooo.com ๐ŸŒ Cloudflare Run by me
bl.vern.cc ๐Ÿ‡บ๐Ÿ‡ธ Hetzner Run by ~vern
biblioreads.lunar.icu ๐ŸŒ Cloudflare Run by Lunar.ICU
read.whateveritworks.org ๐ŸŒ Cloudflare Run by WhateverItWorks
biblioreads.privacyfucking.rocks ๐Ÿ‡ฉ๐Ÿ‡ช 1Blu.de Run by PrivacyFucking.Rocks
read.seitan-ayoub.lol ๐Ÿ‡ฉ๐Ÿ‡ช Hetzner Run by unstablemaple
read.freedit.eu ๐Ÿ‡บ๐Ÿ‡ธ Cloudflare Run by Freedit
biblioreads.ducks.party ๐Ÿ‡ณ๐Ÿ‡ฑ Timeweb Run by nyuuzyou
biblioreads.snine.nl ๐ŸŒ Cloudflare Run by snine.nl
biblioreads.privacyredirect.com ๐Ÿ‡ซ๐Ÿ‡ฎ Private WebHost Run by privacyredirect
Onion:
bl.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion ๐Ÿ‡บ๐Ÿ‡ธ Hetzner Run by ~vern
I2P:
vernapl3lpo3huqdx3pjzxqgdgavxjlmdskbvejh2gfqgmjuyvxq.b32.i2p ๐Ÿ‡บ๐Ÿ‡ธ Hetzner Run by ~vern

Adding Your Instance

If you'd like to add your instance to the list, please open an issue or pull request using the New Instance template.

Note: If you collect any user data from your instance please set the applicable environment variables (an example can be found in .env.local.example).


Automatic Redirection

LibRedirect

Use LibRedirect to automatically redirect Goodreads links to BiblioReads.

GreaseMonkey Userscript

There is a userscript to redirect Goodreads links to BiblioReads. The userscript can be found here.

Redirector

You can use the Redirector extension to redirect Goodreads links to BiblioReads with the configuration below (Note: You can replace biblioreads.eu.org with any instance URL):

To Redirect All Supported Routes:

  • Description: Goodreads to BiblioReads Pages
  • Example URL: https://www.goodreads.com/book/show/5907.The_Hobbit
  • Include pattern: ^(?:https?://)www\.goodreads\.com/(book|work|author|series|quotes|list)(.*)
  • Redirect to: https://biblioreads.eu.org/$1$2
  • Pattern type: Regular Expression
  • Pattern Description: Redirects all supported Goodreads URLs to BiblioReads
  • Advanced options:
    • Apply to:
      • Main window (address bar)

To Redirect Search Pages:

Rule 1:
  • Description: Goodreads to BiblioReads Search Page - Rule 1
  • Example URL: https://www.goodreads.com/search?q=the+hobbit&qid=
  • Include pattern: ^https:\/\/www\.goodreads\.com\/search\?q=(.*)$
  • Redirect to: https://biblioreads.eu.org/search/$1
  • Pattern type: Regular Expression
  • Pattern Description: Redirects all Goodreads search page URLs to BiblioReads
  • Advanced options:
    • Apply to:
      • Main window (address bar)
Rule 2:
  • Description: Goodreads to BiblioReads Search Page - Rule 2
  • Example URL: https://www.goodreads.com/search?utf8=%E2%9C%93&q=the+hobbit&search_type=books
  • Include pattern: ^https:\/\/www\.goodreads\.com\/search\?utf8=%E2%9C%93&q=(.*)$
  • Redirect to: https://biblioreads.eu.org/search/$1
  • Pattern type: Regular Expression
  • Pattern Description: Redirects all Goodreads search page URLs to BiblioReads
  • Advanced options:
    • Apply to:
      • Main window (address bar)

FAQ

How Do I Use This?

There are two ways you can use BiblioReads:

  1. Visit biblioreads.eu.org (or another instance) and paste the Goodreads book URL into the input box or search for a book using the input box.
  2. Replace the https://www.goodreads.com of any book page URL with https://biblioreads.eu.org (or another instance URL). For example: www.goodreads.com/book/show/5907.The_Hobbit to biblioreads.eu.org/book/show/5907.The_Hobbit.

How Does This Work? - Scraping

Since Goodreads stopped issuing new developer keys for their public developer API back in December of 2020 and plans to retire the current version of their API which you can learn more about here. BiblioReads goes to the Goodreads book page and scrapes the required content.

How Did You Come Up With The Name?

The "Biblio" in BiblioReads comes from the prefix biblio- meaning book and "Reads" comes from the ending of Goodreads which is what this website is an alternative front-end for.

What Do You Do With My Data?

Nothing. Since we don't collect any user data, we can't use any user data.

Why Is This Slower Than Goodreads?

When you make a request for a book on BiblioReads, your request needs to be first scraped by the scraper from Goodreads before the result can be shown to you. This causes a delay from when you make the request to when the result is shown.

Why Is This Missing Functionality?

If you have a certain feature that you would like to see, feel free to open an issue on GitHub or Codeberg.


Comparison

Comparing BiblioReads to Goodreads

Speed

The Hunger Games Book Page (Tested on Chrome v108, without scroll, no throttling, cache disabled)

Performance BiblioReads Goodreads
Request Count 45 +190
Data Transferred 137 kB +24.8 MB
DOMContentLoaded: 191ms 1.79s
Finish Time: 3.27s 9.26s

Privacy

Goodreads collects information about your device and uses tracking cookies for advertising among other reasons, this can be found in their privacy policy. Blacklight found 16 ad trackers and 40 third-party cookies.


Installation:

Manual Installation

Prerequisites:

  1. Clone the Git Repository
git clone https://github.com/nesaku/BiblioReads.git
cd BiblioReads
  1. Install & Start The Project
npm install
npm run start
# or
yarn install
yarn start

Docker Installation

Docker CLI:
docker run -d \
  --name biblioreads \
  -p 3000:3000 \
  --restart unless-stopped \
  nesaku/biblioreads:latest
Docker-Compose:
  1. Download (or copy) docker-compose.yml from the repository
  2. Edit the default environment variables with your variables (Optional)
  3. Run the command docker-compose up -d

More Information:

Visit the Docker Image Repo for more information.


Development

Built Using

  • Cheerio
  • DOMPurify
  • Next.js
  • Tailwind CSS
  • idb
  • next-pwa
  • next-themes

Getting Started

To run the development server:

git clone https://github.com/nesaku/BiblioReads.git
cd BiblioReads
# then
npm install
npm run dev
# or
yarn install
yarn dev

โ“˜ If you want to use the API directly or run any kind of automation. Please host the project on your own server.


More Screenshots:

Dark Mode Light Mode

License

Licensed under the GNU AGPLv3. Please see LICENSE.txt for more information.


Disclaimer

BiblioReads does not host any content. All content on BiblioReads is sourced from Goodreads. BiblioReads is not affiliated with Goodreads. Goodreads is a trademark of Amazon Technologies, Inc.

biblioreads's People

Contributors

esmailelbobdev2 avatar nesaku avatar tinywifi 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  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  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

biblioreads's Issues

[Feature] Automatically redirect search results

Is your feature request related to a problem/an inconvenience? Please describe.
I have a search plugin installed for Goodreads. For most other searches being redirected via LibRedirector I'm seamlessly redirected to a search results page on the proxy site - for BiblioReads however it can't handle the search request.

Describe the solution/feature you'd like
When a user attempts to go to a search result e.g. https://www.goodreads.com/search?q=the+hobbit then they're redirected to the appropriate proxy search result page e.g. https://biblioreads.eu.org/search/the%20hobbit?type=books

Describe alternatives you've considered
N/A

Additional context
N/A

[OTHER] Consider mirroring the repos to Codeberg

I believe you should mirror your repo to Codeberg because:

  1. Codeberg is libre, free, open-source, privacy-friendly, non-profit
  2. GitHub is privacy-invasive, proprietary
  3. People on Codeberg like me can contribute to the project
  4. GitHub can take down your repos

Here are some sources for you:

  1. https://sfconservancy.org/GiveUpGitHub
  2. humanetech-community/awesome-humane-tech#33
  3. ungoogled-software/ungoogled-chromium#1894
  4. cadence.moe/blog/2022-07-03-git-forge-opinions-github-gitlab-gitea-sourcehut
  5. andersju/webbkoll#35
  6. https://docs.codeberg.org/advanced/migrating-repos

Many front-ends also are living on Codeberg at the moment:

FAQ

  1. Q: - GitHub Actions -- this is a huge time saver for me
    - Forcing all contributors to modify their current setup and move to another hosting -- we may just lose contributors in the end

    A: As I said, we only just mirror. The repo will be available and contributable on both sites.

  2. Q: - Transferring issues -- is this possible? Issues here represent a technical knowledge base we can't live without
    - Transferring wiki and all edit history -- possible?

    A: Yes, it is possible.
    a. Example for issues:

b. Example for commits:

c. Example for wiki:

  1. Q: Despite having mirror/s, the project will still continue to be operated from GitHub for development, so having yet another mirror doesn't solve anything.

    A: You can create issues, contribute, view the repos on there without going to GitHub! Example:

  1. Q: How does Codeberg mirror comments from GitHub?

    A: It uses Access Token.
    image

  2. Q: My repos are very bandwidth-intensive projects, and I have my doubts as to whether the owner(s) of Codeberg would be prepared for such a massive bandwidth rate increase. I've also had individual projects be disabled on small sites before due to taking too much bandwidth.

    A: Oh.. I think you should directly ask https://docs.codeberg.org/contact/ about if they are ready for massive bandwidth rate increase.

[Feature] Add get a copy/buy links

Is your feature request related to a problem/an inconvenience? Please describe.
I want to buy/get a book which I see in biblioreads

Describe the solution/feature you'd like
Add many get a copy links from various sources like Amazon, kindle, audible, abebooks ,library etc Also add libgen, Anna's archive , z-library link if possible

Describe alternatives you've considered
Libgen, Anna's archive's links only

Additional context
Screenshot_20231125-123443_Brave.jpg

[Feature] Scrape All Books By Author

Is your feature request related to a problem/an inconvenience? Please describe.
Whenever you scrape an author, the user only gets 10 results. I'd like to be able to scrape more (preferably all) books for the author, but only upon request.

Describe the solution/feature you'd like
Currently you can POST to /api/author-scraper with "body": "{\"queryURL\":\"https://www.goodreads.com/author/show/3389.Stephen_King\"}". I propose either:

a) list-scraper.js could accept a parameter, like authorList = true, where this then modifies the find in line 27 to "td > a > img.bookCover"
b) POST to something like /api/author-list-scraper with "body": "{\"queryURL\":\"https://www.goodreads.com/author/list/3389.Stephen_King?page=1&per_page=100\"}". I believe this could be done with a small change to /api/list-scraper.js, since all other page elements match:
line 27: .find("td > div.js-tooltipTrigger.tooltipTrigger > a > img") to .find("td > a > img.bookCover")

Describe alternatives you've considered
I tried posting the queryURL to author-scraper, book-scraper, and list-scraper. All of them fail, due to the fact they aren't setup for this.

[Instance] https://biblioreads.ducks.party/

What URL Is Your Instance Available At?
https://biblioreads.ducks.party/

What Country Is Your Instance Being Hosted In?
Netherlands

What Hosting Provider Is Used? (Input Your ISP's Name If You Are Self-Hosting)
Timeweb

Do You Collect Any User Data?
No

Contact Details
Email: [email protected]
Telegram: t.me/nyuuzyou

Any Other Information?
Instance uptime can be checked here - https://uptime.ducks.party/status/ducks. There are no regional locks or any restrictions.

[Instance] https://read.freedit.eu/

What URL Is Your Instance Available At?
The URL your instance will be available at https://read.freedit.eu/

What Country Is Your Instance Being Hosted In?
The name of the Country the instance is hosted in the USA

What Hosting Provider Is Used? (Input Your ISP's Name If You Are Self-Hosting)
Cloudflare

Do You Collect Any User Data?
No

Contact Details
[email protected]

Any Other Information?
No

[Feature] Integration with Library Extension on Mozilla Firefox

Is your feature request related to a problem/an inconvenience? Please describe.
I'm a lover of books and personal privacy. But there's one thing that makes me a little bit sad when it comes to leaving the rest of the internet behind, and that's incompatibility with some favorite integrations. One of my favorite integrations is Library Extension. It works by stripping the titles and authors from a handful of supported book review sites like Goodreads, and passes them through a user-defined search filter to see if the book is available at their local library.

It's locally hosted, enormously helpful, and incentivizes using a public resource rather than contributing to consumerism. It's one of my favorite web extensions. The problem is, it's closed-source. I, as an end-user, can't really approach the devs and ask them to make Library Extension compatible with fediverse instances. But, maybe you guys could come to an arrangement.

Describe the solution/feature you'd like
If at all possible, I would like to see some way to check if a book is available at the user's local library. If that's through integration with this extension, via collaborating with the author of Library Extension? Fantastic! If that becomes a project one of the maintainers of this project takes on? I would love to see it work, and I'd be thrilled to use it.

Describe alternatives you've considered
I'm still learning Javascript. If I had the ability to modify the extension by myself, I would. https://www.libraryextension.com/ It's surprisingly complicated.

Additional context
I just wanted to thank you guys for the work you do.

Nginx Proxy Manager

I started out running a local docker image and I love it. I just moved it to NPM and now every page reloads every 15-20 seconds and none of the images show.

My question is do I need to add anything to the docker-compose.yml file? Or do I need to something special for NPM?

I just thought about this, it's proxied through cloudflare.

Thanks

Remove instance of "Esmail EL BoB"

Esmail is actively forbidding members or supporters of the LGBTQIA+ community to use their services via a TOS document*.
This is absolutely queerphobic and extremely discriminating. Therefore I ask to remove their instance biblioreads.esmailelbob.xyz / biblioreads.esmail5pdn24shtvieloeedh7ehz3nrwcdivnfhfcedl7gf4kwddhkqd.onion from the list, to not further support their actions.

*See the commit here: EsmailELBoBDev2/upptime@c46b9bf -> https://web.archive.org/web/20230522041632/https://github.com/EsmailELBoBDev2/upptime/commit/c46b9bfd03b211dff2b87737da2de33629685a5a

[Instance]

What URL Is Your Instance Available At?
https://biblioreads.snine.nl/

What Country Is Your Instance Being Hosted In?
The Netherlands

What Hosting Provider Is Used? (Input Your ISP's Name If You Are Self-Hosting)
Host: TransIP
CDN: Cloudflare

Do You Collect Any User Data?
No

Contact Details
[email protected]

Any Other Information?
x

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.