Skip to content

Conversation

@The0frastus
Copy link

Problem

I noticed my MagicMirror black screening randomly. In the logs, I noticed an exception from the RandomPhoto module, with the error message of "invalid string length". After some debugging, I found that shortly before the error, RandomPhoto tried to download video files. In my case, I have the repositorySource pointed to a Nextcloud directory containing both photos and videos.

My solution

I added some super basic filtering to remove any mp4 files from the imageList

Future ToDos

At the moment, i only filtered for mp4s, but of course it would be best to filter all videos.
I see three possibillites:

  1. Adding all kinds of video file extensions to the code to filter (not comprehensive and cluttering the code, possibly slow as well)

  2. Adjusting the regex in line 97/98 to look for contentType

    • Nextclouds response body includes details about the files such as the contentType. Filtering here would be great, since it would catch all video files (or better, using it inclusivley to only allow image files). The problem here is that nextcloud includes the directory itself in the response body, I was not able to write a sleek regex for this so far.
  3. Adjusting the regex to look for fileSize

    • Looking at and filtering based on the fileSize property might also be an option, if the module might support displaying videos in the future. This would also catch huge image files.

@skuethe
Copy link
Owner

skuethe commented Feb 25, 2022

Thank you for the PR. I would like to talk more about possible solution nr. 2 (with the regex directly to the html response of nextcloud).
How far did you come there? I would definitely prefer such a solution over a file extension filter :)

@The0frastus
Copy link
Author

I've been thinking, maybe an actual html parser might be better suited here. I fear the regex might get a bit complicated, and not very future-proof.

If it's okay with you, I'll try to whip something like that up, and check if it's a noticable performance hit

@skuethe
Copy link
Owner

skuethe commented Mar 4, 2022

sure!

@The0frastus
Copy link
Author

I got the response parsing working in a reasonable time with the help of a npm ṕackage called fast-xml-parser
.
Performance looks great on my end, on a folder with a few hundred files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants