Bibbot
BibBot is a browser extension that removes the paywall on German online news sites using your library account's access to press databases.
Install / Use
/learn @stefanw/BibbotREADME
BibBot
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.tsruns on the news article page, communicates with background script - the background script in
src/background.tswhich opens new tabs, navigates them around and scrapes the content - the options page in
src/options.tsis 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.tscontains libraries that you authenticate against and that grant accesssrc/sources.tscontains databases that you can get access to through providerssrc/sites.tscontains 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 Playwright 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
npm run test -- --headed -g "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 playwright page
// use this for initial page setup
},
// ...
Release
- Run
npm version <major|minor|patch> git push --tags origin main- GitHub release Action will build, test, create release, sign Firefox extension, submit to Chrome Web Store and update website.
Related Skills
feishu-drive
341.6k|
things-mac
341.6kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
341.6kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
postkit
PostgreSQL-native identity, configuration, metering, and job queues. SQL functions that work with any language or driver
