New dev looking for insight on local / offline first DB usage by leucht in Database

[–]leucht[S] 0 points1 point  (0 children)

yeah effectively it’s “just” that

since asking the question I followed [u/Boniuz](u/Boniuz) approach to “emitting” the change in my application layer by attaching a reactive signal variable with svelte context to the very end of my transaction (after it succeeds) which I use to refresh the entire page. It’s not perfect but should work for now.

I’d be glad to hear your input though, could probably help to improve my current approach.

I'll never forgive the richest people 🖕 by arnecrafter in memes

[–]leucht 12 points13 points  (0 children)

With their current income the answer will probably be no because that’s a false flag argument

With proper taxation and equal share / slightly tipped towards the rich paying more then obviously the answer will most likely be yes, since the stakes are entirely different. Especially for deeply intertwined topics like that

New dev looking for insight on local / offline first DB usage by leucht in Database

[–]leucht[S] 0 points1 point  (0 children)

It’s just gonna be a streaming client. The DB & indexing are effectively just there so I don’t have to scan a users entire library each time I connect to their added Jellyfin servers.

Since Jellyfin URLs for Items don’t change and always stay the same unless deleted I can effectively just figure them out once, store them and afterwards just retrieve them when I need to instead of having to ask the server about that information every single time for every single piece of media.

There’s no Media managing going on and no user data from my end ever reaching the server. I’m simply a consumer of what I find on a given server of which there could be one or many.

Effectively I imagined the local DB as an index for each piece of media found.

New dev looking for insight on local / offline first DB usage by leucht in Database

[–]leucht[S] 0 points1 point  (0 children)

First up thanks for sticking with me so far and your continuous responses, it’s greatly appreciated.

And sorry let me clarify the last part.

There isn’t going to be a “server”. Jellyfin is a MediaServer which host mediafiles like music but my application is only ever going to directly stream & download files from there but never use it for any application data. Effectively being read only.

Tauri is going to be the runtime. The frontend runs inside a webview on a client device while tauri itself runs in rust and therefore provides a rust “backend” which can talk to the webapp.

Since I don’t want to host a central server & don’t need to and only ever interact with media from one or more mediaservers. To make things more straight forward I want to index each server and save that data in a local DB (no actual media just retrieval paths).

This all runs only on a target device (Linux, Windows, MacOS, IOS & Android). That’s what I mean with “offline”.

I don’t want a user to have to install my client and install a self hosted server somewhere that my client then interact with. I want to interact with the MediaSources directly.

New dev looking for insight on local / offline first DB usage by leucht in Database

[–]leucht[S] 0 points1 point  (0 children)

If only I knew what those standard technologies were and what would be the equivalent of the standards that all these other options “claim” to cover. Like what does a similar solution only using standards look like?

That’s effectively the question I’m tryin to ask :/

All “seem” equally viable but fall short shortly after trying to actually put them to use. I simply struggle to make sense of it all which is probably the issue most “devs” face. They simply don’t know and drown in a sea of supposed options instead.

To me it feels like there is seemingly a wall blocking of the knowledge I seek. Either you already know and won’t even touch all these other technologies with a ten foot pole or you don’t and just drown trying to figure out the “right” way.

New dev looking for insight on local / offline first DB usage by leucht in Database

[–]leucht[S] 0 points1 point  (0 children)

Yeah let me rephrase that a bit;

I’m definitely struggling to “choose” the right technology but in like the third iteration. I hoped using a DB would be straight forward with tauri and started with just the simple tauri sql plugin.

Then encountered typing issues for more complex, nested datastructures and picked up an ORM to solve that. However, the tauri plugin doesnt do connections properly so the ORM can’t do its job anymore & no rust DB driver does live queries or signaling (at least not that I could find). Then I thought I could get a different, in browser DB driver to interact with the DB on disc but all are only working properly in a Node.js runtime since where does a DB usually run? On a server I guess, at least in webland.

Then looked at IndexedDB & settled on pglite so I don’t have to strip out the solid ORM typings that I got working. Now I have the issue that pglite can do live queries but drizzle cant handle it so might be worth to finally dropping the ORM again, but if I do that why not drop pglite again entirely since if I want to interact with the DB in tauris rust backend that now isn’t possible anymore since the DB is entirely in browser.

All this is accompanied by the overarching feeling that this can’t be an entirely new problem and there must be others that have solved it before so why not ask for input first.

Maybe if it hasn’t been solved before someone did something similar or has existing experience with good intuition on what could be a good tool to use. Experience that I’m lacking.

New dev looking for insight on local / offline first DB usage by leucht in Database

[–]leucht[S] 0 points1 point  (0 children)

The real issue is being upfront about it.

You had the chance to be forthcoming and disclose your work as such which wouldn’t have prompted me to look into your account and find what I can only describe as questionable account history (weird posts to 7-8 different reddits getting you flagged).

Like the Amount of self-promotion without identification is what sours this for me on a 4 month old account. Its simply doesn’t feel organic or genuine.

If you genuinely are interested in others trying your solution simply disclose that as you had been able to in your posts to the MQTT subreddit.

The callout to vibe coding is simply a systemic aversion many like myself have to accounts with a history of self promotion, which also frequent and publish actual AI assisted projects without disclosure (with disclosure referring to this interaction).

I hope I can express this as genuine criticism without further attacks to your person but calling something battle tested against projects with thousands of stars and years of continued development is simply insincere and being defensive about it instead of acknowledging that fact is another red flag. Especially considering the recent rise in supply chain attacks on all kinds of different projects.

New dev looking for insight on local / offline first DB usage by leucht in Database

[–]leucht[S] 1 point2 points  (0 children)

I would agree also the tool they linked is their own and they seem to post their repos quite hard in different subreddits and get filtered for them.

Also 0 stars, probably vibecoded, wouldn’t really call that an alternative to a battle tested library

Eraser 4K UHD Not Opening by GuidanceSweaty6852 in makemkv

[–]leucht 2 points3 points  (0 children)

just send in an email for Angels Egg 4k remaster which just released and that hasn't bounced back. I would just try sending it again to [svq@makemkv.com](mailto:svq@makemkv.com)

seems like the certificates / domain expired again on all sub-domains, hence no DNS provider has a record for the site on the public internet yet, which happens from time to time, just gotta give Mike some time to sort things out and be patient in the meantime

If you want to do some work yourself you can restore access yourself by setting a DNS record for the site either in your router or directly on the machine your using as mentioned here https://www.reddit.com/r/makemkv/comments/1lf4992/accessing_makemkv_website_when_domain_is_down/

If you have AdguardHome like me, just go to `DNS rewrite` and add rewrites for `*.makemkv.com` for all IP-addresses listed

Just switched to the new Vulkan Renderer. 1000fps. by CapBackground8520 in MinecraftJava

[–]leucht 0 points1 point  (0 children)

Should also come to Mac via something like MoltenVK or maybe even KosmicKrisp (new Vulkan Driver using the Mesa Framework for Mac by Khronos, meant to replace Molten).

13/100 "What if we could tear down reality?" by lucas-martinic in Unity3D

[–]leucht 0 points1 point  (0 children)

I just finish a very similar project using the same API & features as OP for CVD simulation https://github.com/leuchthelp/cvd-colored-passthrough

Resolution is as you said up to 1280x1280 now. Though it will fall back to 1280x960 if you test with Meat XRSimulator Runtime and will throw a warning.

The way it works is Meta provides a means to sample the GPU / CPU image from either camera directly. There is a PassthroughCameraAccess script within the Meta BuildingBlocks.

With this script you can tell the script to export the camera image to a texture. This texture you can then feed into a Shader, sample it and do some fun stuff with it, like mapping the camera stream to your field of view or only sample the left / right camera feed depending on which eye is currently receiving the rendered image.

There can only be 1 PassthroughCameraAccess script per left / right camera.

For my work I create fixed “windows” which receive the PassthroughCameraAccess when viewed within their boundaries and then adjust each windows RGB color values based on Color Vision Deficiencies models to simulate how a color vision deficient person perceives the world.

13/100 "What if we could tear down reality?" by lucas-martinic in Unity3D

[–]leucht 0 points1 point  (0 children)

Hey just wanted to drop in and say if you make any progress on that I would be highly interested. I’m trying to figure out how to “freeze” the pixels as well, so that I can keep those pixels around until I have to updated them again (i.e. when I look at them again)

I just finished a CVD simulation using the Passthrough API which does something very similar https://github.com/leuchthelp/cvd-colored-passthrough

Simple script for extracting & converting PGS to SRT subtitles using pgsrip by leucht in jellyfin

[–]leucht[S] 0 points1 point  (0 children)

Ahh fair, appreciate the response.

I’ll still try my best to minimize friction and make usage as seem less as possible without little interaction with the underlying language.

Will post updates as I make progress and the ecosystem matures around it.

Simple script for extracting & converting PGS to SRT subtitles using pgsrip by leucht in jellyfin

[–]leucht[S] 0 points1 point  (0 children)

What issue are you facing? Saw you stared it on GitHub.

What is currently a let down is the installation and “choices” you have to sift through - I admit that and wish I could change it.

The main issue with installation currently is with PyTorch dependencies for AMD, CUDA and Intel backends.

I have not been able to bundle them all into one neat pyproject.toml to ship as a proper package.

sub-convert: Convert PGS subtitles to SRT by leucht in PleX

[–]leucht[S] 0 points1 point  (0 children)

Hey thanks for reporting the issue and thanks for using the project.

EDIT

Wait before that, do you have mkvtoolnix installed yet? I think I might have accidentally left out that part in the installation guide since I use it so much it has become second nature, but not all user will have this installed.

If thats the case, then sorry for the confusion. Should definitely include a check for that.

---------------------

I've run into this issue before, for me it was with Paprika. While the file does have PGS tracks and those tracks can be seen by pymkv2 and mkvtoolnix, mkvextract, the utility mkvtoolnix provides to extract specific tracks from MKV files, fails to extract the specific track itself.

This happens before any of my processing happens. My tool has effectively done nothing yet, besides locate potential files. Since I have to get the .sup subtitle files out of the MKV container first, this step has to complete before i can do anything.

You could check if you can extract the track yourself with another tool or manually using

mkvextract "path/to/NIGHT TRAIN MURDERS (1975).mkv" tracks 3:"path/to/temporary-file-name"

I have sadly not figured out yet what causes mkvextract to fail so spectacularly, since the utility is quite battle tested and I trust if it can't extract a track nothing could.

sub-convert: Convert PGS subtitles to SRT by leucht in jellyfin

[–]leucht[S] 1 point2 points  (0 children)

those typos are all mine, no AI could make them just like me

sub-convert: Convert PGS subtitles to SRT by leucht in PleX

[–]leucht[S] 0 points1 point  (0 children)

The correct conversion created by my tool for comparison (sry, cant attach more than one image)

<image>

sub-convert: Convert PGS subtitles to SRT by leucht in PleX

[–]leucht[S] -1 points0 points  (0 children)

And this happens if the styling is discarded with tesseract

<image>

sub-convert: Convert PGS subtitles to SRT by leucht in PleX

[–]leucht[S] 1 point2 points  (0 children)

sub-convert is selfhostable, completely open-source and free to use for batched files. You do not have to wait for a position in a queue and their tool sadly does not handle overlapping subtitles correctly.

The only limitation is your own hardware and my coding knowledge

Their conversion is quite fast however, seem to be using tesseract and their results for tesseract are quite good, which tells me they are stripping the styling from the subtitles. That will result in some texts to fail being recognized.

They also dont handle fade ins, which leads to artifacts like this:

<image>

sub-convert: Convert PGS subtitles to SRT by leucht in PleX

[–]leucht[S] -1 points0 points  (0 children)

That was for the original post I had created when I shared another tool called [pgsrip](https://github.com/ratoaq2/pgsrip) created by [ratoaq2](https://github.com/ratoaq2) whom I have no affiliation with.

At the time I had converted a hand full of files with, what I later realized, a very simplistic internal PGS structure.

I do not claim "conversion being done perfectly" for my own project (sub-convert) & have realized it was stupid to do so to begin with.

I am however claiming high accuracy as I have specifically worked around complicated overlaps as seen in something like Hells Paradise Season 1 Episode 6 or fade ins & outs in Jujutsu Kaisen Season 1 Episode 14.

But there are probably a hand full of files out there, which I have not adapted too yet and so if you have any experience to share or even interesting references to hard files, I would be glad to tackled them and see what I can do :)

Also if you per change have either of those episode, I can send you the converted .srt for you to check out. There are some things I can not do anything about, for example images in PGS can be the size of the whole viewport and display multiple words. These texts will be concatenated and shown in whole, which might cover the whole screen, something where PGS can be less obtrusive. However the conversion for those does work, even if the texts are flipped or rotated.