Chrome extension adding extra features to the Bandcamp experience.
The goal of this extension is to make Bandcamp easier to use when navigating larger sets of music (e.g. label pages with large back catalogues). It has been designed with DJs in mind.
Provides a "Preview" button on pages with multiple albums. This button will open a player on the same page giving a quick and easy way to listen to tracks without having to navigate away from the page.
Adds a history display element next to album. This element is a clickable toggle which persists between page loads thus providing a history. This toggle is automatically set when preview
button is used and can be manually clicked.
On album and track pages the following keyboard controls are supported:
Key Binding | Action |
---|---|
Space Bar and "p" | Play/Pause |
Right Arrow | Move Playhead Forward 10s |
Left Arrow | Move Playhead Back 10s |
Down Arrow | Play Next Track |
Up Arrow | Play Previous Track |
Click anywhere on the playbar to set the "playhead" of the player.
Adds a wavform display similar to visualization of Soundcloud. A toggle below the "play button" on album pages will enable/disable the display. Note: The waveform is processed browserside.
Adds a slider on the right side of the player controls volume.
Moves the forward/back buttons for the player (on album and track pages) to right under the play/pause button.
Moves the tracklist on an album's page directly below the player.
Adds a button to help automate the process of download a cart after purchase. Once all music download links are ready this button, when clicked, generate a .txt
file which can be pasted into terminal to automate the downloading process. This .txt
file uses cURL.
Additionally, while the generated file is a .txt
, it can be run directly in terminal with the command:
. ./bandcamp_*.txt
This will download the files into the same directory the terminal session is in.
Available from the Chrome webstore and Firefox Addons
Feedback, feature requests, and bug reports are always welcome.
This project uses webpack
to generate the final project files from npm packages. This allows the use of import
statements.
From the root of the project run:
npm install
This will grab all of the js dependencies.
Different npm
commands defined in the scripts
section of package.json
can be used for to preform various tasks.
run:
# Defaults to --mode=production:
npm run build
this will generate js files in ./dist
.
Continuous rebuild when files update:
# Defaults to --mode=development:
npm run build:watch
# Show ESLint issues:
npm run lint
# Auto-fix ESLint issues, if possible:
npm run lint:fix
run:
# Single run:
npm test
# Watch & auto-rebuild:
npm run test:watch
Testing documentation:
- Mocha: test framework
- Chai: assertion logic
- Sinon-Chrome: Mock Chrome extension methods
- Sinon: mocks, spies, assertions
- Karma test runner
run:
npm run package
This sets NODE_ENV=production
which silences debug-level logging, and outputs a .zip
file for distribution.