• Stars
    star
    508
  • Rank 86,626 (Top 2 %)
  • Language
    TypeScript
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

BibBot is a browser extension that removes the paywall on German online news sites using your library account's access to press databases.

BibBot

Official website

Development

This uses rollup to build the extension files. Install and run like this:

npm install

# Run this during development
npm start

Extension overview

The extension has four different entry points:

  • The content script in src/content.ts runs on the news article page, communicates with background script
  • the background script in src/background.ts which opens new tabs, navigates them around and scrapes the content
  • the options page in src/options.ts is the options page for the extension
  • the popup in popup/ is opened when the extension icon in the toolbar is clicked

These are the relevant players:

  • src/providers.ts contains libraries that you authenticate against and that grant access
  • src/sources.ts contains databases that you can get access to through providers
  • src/sites.ts contains news sites, how to extract their meta data and which source could provide access

For details on how to construct any of these entities, have a look at src/types.ts

Additionally user data like credentials and chosen provider is stored via browser.storage.sync.

Tests

There is a test setup for sites using Jest and Puppeteer that can be run with:

# install dependencies
npm ci
# Run linting and type checking
npm run lint
npm run check-types
# Always run build before tests, as test uses build files!
npm run build
# Run tests
npm run test
# Run tests with actual browser window for one domain
HEADLESS=false npm run test -- -t "test www.zeit.de"

Add testing data to site objects like this:

// ...
  'www.example.com': {
    examples: [
      {
        url: 'http://example.com/article.html',
        selectors: {
          query: 'The string resulting from query selector'
        }
      }
    ],
    // optional setup async function
    testSetup: async (page) => {
        // page is pupeteer page
        // use this for initial page setup
    },
// ...

Release

  1. Run npm version <major|minor|patch>
  2. git push --tags origin main
  3. GitHub release Action will build, test, create release, sign Firefox extension, submit to Chrome Web Store and update website.

More Repositories

1

seriesly

TV show notification service run
Python
88
star
2

verkehrsunfallstatistik

Converts the Berlin Verkehrsunfallstatistik PDFs to GeoJSON
Python
20
star
3

scrapa

Python 3 AsyncIO powered scraping framework with batteries included
Python
20
star
4

channels-yroom

Django Channels WebSocket consumer and worker for synchronizing Yjs clients
Python
15
star
5

bnetza-emf-scraper

Scraper for the EMF database of Bundesnetzagentur
Jupyter Notebook
15
star
6

django-annotatetext

Django App that let's you insert footnotes and annotate parts of a text.
Python
15
star
7

Bundestagger

Django project for annotating and referencing parts of the parliament protocols of the German Bundestag.
Python
15
star
8

django-dashboard

A Dashboard App that aggregates rendered snippets from different apps.
Python
14
star
9

hatuhlschonvdsgefordert.de

11
star
10

chrome-printtopdf

Uses chrome to print PDFs of URLs
Python
11
star
11

feld

JavaScript
10
star
12

carpenter

Carpenter makes tables out of raw material (images)
Python
9
star
13

photoscan.js

JS app that takes photos and tries to find paper document outlines to extract a scan-like image.
JavaScript
9
star
14

wahlrecht

Python module for getting Wahlrecht.de polling data
Python
8
star
15

Canvas-Timemachine

Timemachine Effect with Canvas
JavaScript
7
star
16

vbb-json

JSON-API wrapper around the VBB API
JavaScript
7
star
17

Carthagogram

JavaScript cartogram generator
JavaScript
6
star
18

ptoutline

Python
6
star
19

hafas2gtfs

Hafas2GTFS converter
Python
6
star
20

yroom

High-level Python bindings to Rust yjs/y-crdt sync+awareness API
Rust
6
star
21

verbaendeliste-bundestag

Python Script that extracts info from pdftohtml xml output of PDF of Bundestag Lobby List
Python
6
star
22

formaldehyde

Scaffolding script to use Google Forms in a Jekyll-powered GitHub page
Python
5
star
23

django-lazyinclude

A two-phase rendering middleware that lazily includes templates into cached responses.
Python
5
star
24

django-wikidata

Python
4
star
25

smeterengine-json

JSON API wrapper for XML Smeter API
JavaScript
4
star
26

froide-redact

JavaScript
3
star
27

abschlapp

Vue
3
star
28

diligent-pandas

Data proofing library for pandas
Python
3
star
29

dataharvest2016-pandas

Jupyter Notebook
2
star
30

forestogram

JavaScript
2
star
31

mailparser

Parsing emails in Python.
2
star
32

django-crossdomainmedia

Cross-Domain Media with authentication for Django and Nginx
Python
2
star
33

eventphoauth

Python
2
star
34

echtemail.de

HTML
2
star
35

froide-foiidea

FOI idea crawler made for Froide
Python
2
star
36

gba_qualitaetsberichte

Jupyter Notebook
2
star
37

notebook-datenlabor15

2
star
38

articles-to-feed

Python
2
star
39

bgbl

Bundesgesetzblatt Table of Contents
Python
2
star
40

infoobator

Open Web Foo Name Generator
2
star
41

pandas-linker

pandas-linker runs comparison windows over pandas DataFrame and links the rows via assigned UUIDs.
Python
2
star
42

ifg-vis

IFG Vis for ZEIT Online
JavaScript
1
star
43

django-geogermany

Django App that provides models for German states, districts, municipalities and zipcodes
Python
1
star
44

pdfcutter

Extract text parts from PDFs with spatial-relative search
Python
1
star
45

saarland-behorden-scraper

Saarland Behรถrden Scraper
Python
1
star
46

django-contractor

Python
1
star
47

derling

JavaScript
1
star
48

growde

Node server that pushes growl notifications from sources
JavaScript
1
star
49

django-improvetext

Django app that handles suggestion of text changes in admin.
Python
1
star
50

informationsfreiheit.net

Find your local German information laws
JavaScript
1
star