MCPcopy Index your code
hub / github.com/elamperti/OpenWebScrobbler

github.com/elamperti/OpenWebScrobbler @v2.14.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.14.0 ↗ · + Follow
305 symbols 1,148 edges 250 files 1 documented · 0% updated 17d agov2.6.0 · 2021-05-24★ 45242 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Open Scrobbler

GitHub Actions E2E tests codecov Discord Patreon

Screenshot

What is this?

An open source scrobbling client for the web. Just login and scrobble the track(s) you want! This tool lets you scrobble songs you heard on the radio, vinyls or at some place where you need to manually scrobble.

You may use it directly from here: https://openscrobbler.com/

What is scrobbling, you ask? It's tracking the music you listen to, using last.fm.

Help us make it better!

You can support development by becoming a Patron (you'll have a distinct identifier in the application, get a sneak peek into what's coming next, and a few extra features! :sparkles: )

Contributing

Contributions and suggestions are welcome. Please read the contribution guidelines for more information. Issues labeled with "help wanted" are great candidates if you don't know where to begin!

Translations

To join the translators team, follow the link at the bottom of the language selector in the application ("Want to add your language?").

Development setup

  • Clone the repository
  • Copy .env to .env.development.local, then set at least the required variables
  • You'll need a Last.fm API account to be able to interact with Open Scrobbler (it's used for authentication and queries). Once you have your keys, fill in REACT_APP_LASTFM_API_KEY and LASTFM_API_KEY (same value in both) and LASTFM_SECRET
  • Optional: to interact with Discogs, create a Discogs application to get API keys and fill in DISCOGS_API_KEY and DISCOGS_SECRET
  • Optional: to interact with Setlist.fm, create an application and set SETLISTFM_API_KEY with the corresponding API key
  • Run yarn to download the required libraries.
  • Run yarn start to initialize the docker container and run the application.

Testing

You will need to copy cypress.env.json to cypress.development.json and update the file to execute the tests. Don't use last.fm account credentials from a real account!

Tests can be run with yarn test, Cypress console can be accessed with yarn cy.

To check test coverage run yarn test:coverage

Running the application

Just start it with yarn start (it will launch both the API server and the React application).

Building

The build script should be enough! :)

Thank you!

One of the best things about open source is the great community around it. Open Scrobbler has several contributors and each one of them has made this tool better for everyone. Thanks to all of them!

Extension points exported contracts — how you extend this code

Window (Interface)
(no doc)
src/types/globals.d.ts
ScrobbleListProps (Interface)
(no doc)
src/components/ScrobbleList.tsx
ExtendedAxiosRequestConfig (Interface)
(no doc)
src/utils/axios.ts
AlbumBreadcrumbProps (Interface)
(no doc)
src/domains/scrobbleAlbum/partials/AlbumBreadcrumb.tsx
AlbumCardProps (Interface)
(no doc)
src/components/AlbumCard.tsx
Window (Interface)
(no doc)
src/utils/tweaks/types.ts
ProviderDropdownProps (Interface)
(no doc)
src/domains/scrobbleAlbum/partials/ProviderItem.tsx
AvatarProps (Interface)
(no doc)
src/components/Avatar.tsx

Core symbols most depended-on inside this repo

event
called by 38
public/api/v2/inc/analytics.php
properCase
called by 25
src/utils/string.ts
raiseOWSError
called by 19
public/api/v2/inc/error.php
extractArtistTitle
called by 17
src/domains/scrobbleSong/SongForm.tsx
cleanTitleWithPattern
called by 15
src/domains/scrobbleAlbum/CleanupContext.ts
strToCleanupPattern
called by 13
src/domains/scrobbleAlbum/CleanupContext.ts
useSettings
called by 13
src/hooks/useSettings.ts
usernameIsValid
called by 12
src/utils/common.ts

Shape

Function 271
Interface 15
Method 13
Class 5
Enum 1

Languages

TypeScript95%
PHP5%

Modules by API surface

src/domains/scrobbleSong/SongForm.tsx14 symbols
src/components/EditableText.tsx8 symbols
src/components/DateTimePicker.tsx8 symbols
src/utils/bootstrapBreakpoints.js7 symbols
src/domains/scrobbleAlbum/partials/Tracklist.tsx7 symbols
src/utils/tweaks/draggablePane.ts6 symbols
src/utils/tweaks/tweaks.dev.ts5 symbols
src/localstorage.js5 symbols
src/domains/scrobbleAlbum/ScrobbleAlbumSearch.tsx5 symbols
public/api/v2/inc/api.php5 symbols
vite.config.mjs4 symbols
src/utils/common.ts4 symbols

For agents

$ claude mcp add OpenWebScrobbler \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page