Code Monkey home page Code Monkey logo

intertube's Issues

Rework track selection UX

Need some UI improvements related to track selection in the web UI

  • Be able to select multiple tracks
    • Edit multiple tracks simultaneously (the backend does support this)
    • Delete multiple tracks simultaneously
    • Select all
    • Keyboard shortcuts
  • Select a track without playing it

Deduplicate tracks with multiple encodings

Currently if you upload the same track in multiple encodings (e.g. mp3 and flac) it will show both of them in the web UI and subsonic APIs.
Let's deduplicate them. For Subsonic we might be able to pick based on the client's accepted types, for the web UI we can just pick the "better" format or make it a setting.

Overflowing player-title for very long album names

The King Gizzard & The Wizard Lizard broke so many players with their long-ass album title :D On inter.tube, I've found this bad overflow.

CleanShot 2023-06-20 at 19 30 39@2x

Playing with the devtools of the browser, I saw that adding margin-left: 100px (more or less) to .player-title solves the problem.

(I can try to make a PR for this later, if it is okay for you.)

Local mode for easy dev / simple deployments

Let's add a flag that sets the server to "local mode" and instead of relying on Lambda / CF Workers to process/serve files, handles that stuff immediately.
I plan on adding this sometime this week, should help a lot.

Return placeholder image for missing album art in Subsonic API

Currently we return a subsonic API error when getCoverArt can't find any matching art, but some web-based clients such as Subplayer don't like this and display a broken image instead.

Instead, we should probably return an image always, but use a placeholder for missing art.

Example of brokenness:
Screenshot 2023-09-11 at 5 17 23

Tracks view stuck loading

For some reason the tracks view seems to get stuck loading for me. Due to this, searching doesn't work because not every track gets indexed/cached.

Upon going to the music page, there is never any progress and it only ever says "loading..." with no percentage shown. If I switch to albums view, loading will show progress and eventually finish at which point everything can be searched. For my library it takes ~20 seconds to fully load. Then I can switch back to the tracks view to see and search all tracks.

OS: Linux
Browser: Firefox 120.0

Document click-ops infrastructure

Here's a rough idea...

Things that you need:

  • B2 buckets
    • one for unprocessed uploads (intertube-upload)
    • one for processed tracks (directories split by user)
  • AWS account for the Lambdas
  • Cloudflare account for the Workers
  • DynamoDB tables

Lambdas

  • tube-web (env var MODE = WEB)
    • HTTP server (API gateway)
  • tube-trigger (MODE = CHANGE)
    • DynamoDB Streams trigger on Tracks table
  • tube-refresh (MODE = REFRESH)
    • Refreshes B2 API token and stores in Cloudflare KV

Workers

  • workers/dl.js - file downloader
  • workers/auth.js - maybe unused?

DynamoDB tables

  • Tracks
  • Sessions
  • Users
  • Files

I think this could be greatly simplified for self-hosting

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.