[SUPPORT] reven - FileFlows


reven

Recommended Posts

This is great and works better than expected.  It's not using my nvidia card at all though. I was assuming it would use nvenc/gpu to do the heavy lifting.  Do I need to add anything in the docker config?

 

Edit: I added --runtime=nvidia to the extra parameters but I se no field for the UUID to go into

Edited by Antibios
Link to comment
6 hours ago, Antibios said:

This is great and works better than expected.  It's not using my nvidia card at all though. I was assuming it would use nvenc/gpu to do the heavy lifting.  Do I need to add anything in the docker config?

 

Edit: I added --runtime=nvidia to the extra parameters but I se no field for the UUID to go into

I've added instructions how to configure an NVIDIA GPU to the FileFlows wiki.

 

https://github.com/revenz/FileFlows/wiki/Unraid-NVIDIA-Setup

Link to comment
4 hours ago, Antibios said:

Thank you, working perfectly now.

nice.   sadly unraid/docker cant just do this automatically and not something I can make the app just auto configure.   because yes, its bad user experience having to manually configure this.    however... unraid isnt exactly a computer illiterate piece of software so if youre using it youre more advanced than the typical computer user.  so its not unreasonable.  ill also update the docker instructions with the image to point to that wiki page to hopefully make it easier for other users

Link to comment
4 minutes ago, kri kri said:

Thanks for making this tool. I don't see any docker updates, but the webui is telling me there is an update available. 

 

 

NEW VERSION AVAILABLE 0.3.0.376

I was literraly just uploading the new builds as you posted this.    
So you can update the docker now to get the latest version.

  • Like 1
Link to comment
  • 3 weeks later...

Love the app was very impressed with my initial testing, but I am having an issue with files not being converted/ignored. I have a simple "convert video" flow. When I add files to be converted, they appear momentarily on the dashboard and then disappear, not even appearing in the "library files" section. When I root through the log files I find this in one:

 

Quote

==============================================================================
===                      PROCESSING NODE OUTPUT START                      ===
==============================================================================
Base URL: http://localhost:5000
Address: INTERNAL_NODE
Making request[GET]: http://localhost:5000/api/node/by-address/INTERNAL_NODE
Waiting on node task
Completed node task
Node SignalrUrl: http://localhost:5000/flow
Making request[GET]: http://localhost:5000/api/library-file/2f233b7d-48ae-469d-8482-236b798319e2
Making request[GET]: http://localhost:5000/api/library/5ca1e8eb-96db-4b69-b56b-2298bbfde72c
Library file does not exist, deleting from library files: /media/SabNZBD/complete/Snowpiercer.S03E02.720p.HEVC.x265-MeGusta.mkv
Making request[DELETE]: http://localhost:5000/api/library-file
Exit Code: 0

==============================================================================
===                       PROCESSING NODE OUTPUT END                       ===
==============================================================================
 

 

My issues are:

 

a) the files definitely exist, are still in the indicated initial folder and are not deleted

 

b) the files never appeared in the library files section of the UI at all

 

This is happening with every file

 

Any ideas what could be causing this and how I can fix it? Thanks.

Link to comment

most likely its due to mapping being incorrect.   The node tries to map the file locally, it can't find it, it assumes the file has been deleted, it deletes the library file entry.

 

You only need to use an additional processing node if you dont want to use the intenral node on the same machine.   The internal node is a lot easier, since theres nothing to map.

 

But if you want to use an external processing node, then yeah, most likely its the mapping.

Link to comment

it is doing this check
            if (file.Exists == false)
            {
                Console.WriteLine("Library file does not exist, deleting from library files: " + file.FullName);
                libfileService.Delete(libFile.Uid).Wait();
                return;
            }

so it is checking that file exists before starting the flow, the file system is reporting that file does not exist, so its deleting it.  is the file name casing exactly right? 
you could try opening the console on the docker image and manually checking that file exists in that path in the docker container.

Link to comment
22 hours ago, jjthacker said:

This is the internal node. It even says so in the text I quoted. I don't map anything to it apart from what is in the docker template, and that shouldn't affect anything.

did you have a chance to try the console of the docker to see if that file exists?    also for quicker support use my discord server, im pretty much always available there unless sleeping :)

Link to comment

I've got an idea for a flow, but I don't know how to create it. I have many tv shows, things like BBC panel shows, that come in as 1080p h264, and I'd like to create a flow that covers my entire media library and does the following:

  1. Look over the entire media library, looking for some kind of file in different subfolders, maybe a file called 'file.flow'. The library would look at '/mnt/user/Television'. This file would be at a location like '/mnt/user/Television/Entertainment/Pointless/file.flow', with season folders under '.../Pointless/Season [#]'
  2. When 'file.flow' is found, scan the subfolders of the folder that 'file.flow' was found in for media files (video, audio, etc.) and feed those into a video flow. If the file is not found, ignore that folder.
  3. (Optional) Parse the folder name to exclude the Season folder with the highest number after it, so that the current season stays at maximum quality.
  4. Run the video flow on the video files I have selected, to re-encode them to 720p h265.
  5. (Optional) Notify Plex/Sonarr/Radarr that the file has changed so that it can be re-indexed and analyzed.
  6. (Optional) Write the log from the folder that was processed to '.../Pointless/file.flow'

This would save me from having to create a library for each TV show I want managed by FileFlows, and having to maintain those folders if/when things get moved around.

 

I think I have a rough idea of how it should work, but am either missing something or am thinking beyond what FileFlows can do.

 

I'm also curious about the volume normalization, how does that work?

 

This is an awesome application and I'm looking forward to using it. I use something similar called LaserFiche Forms/Workflow at work for document management, and it's great.

Link to comment

1/2.  Theres no current way to look if a file exists from a flow.  I could expose this to the function node though.
3.  Similar thing, no current way to look for other folders.  I could also expose this somehow.  
5. no current way to notify sonarr/plex/radarr directly.  plugins could be written to do this but its not high on my priority list.   plex would be higher, and i have considered it, I just have been busy with more important features atm.   I have briefly looked at the Plex API didnt see how to notify plex of a single file change, only to rescan an entire library.   I need mroe time to investigate this further.   I was going to add a simple node that just used the x-token until I came up with a better solution.

i suggest using fileflows as a man in the middle between a download client and sonarr/radarr.   have a download client download to say /mnt/user/downloads/complete have file flows watch that folder and a move action to /mnt/user/downloads/converted.  then have /mnt/user/download/complete mapped in sonarr/radarr to /mnt/user/downloads/converted.    then sonarr/radarr will get the files after processing, and move it into your library which can then notify plex of the new file.


I would suggest shifting all this looking for file stuff though into the flow itself.  using a function node you could look at the name of the file to determine what you should do with it.  eg if(Variables.file.fullName.toLower().contains('8 out of 10 cats') return 2; // panel show

 

most of this stuff would be best for the function node since its pretty specific / non generic stuff.  the function node lets you run custom javascript during the flow and exposes some helper objects.

 

Audio normalization just uses ffmpeg (all the video nodes use ffmpeg), and uses the loudnorm filter to normalize it.  I'm not an expert on this, I found how to do this online and just created a node to do it.  Seems to have good results.  All my tv shows I ran through a two pass normalization.   Movies I don't do this too

Edited by reven
Link to comment

Hi, I am trying to get FileFlows working on Unraid with an Intel GPU.

Added --device /dev/dri:/dev/dri to the docker parameters but it still fails with the following error :

 

Quote

 

[AVHWDeviceContext @ 0x55702aebbe00] Failed to initialise VAAPI connection: 1 (operation failed).

[hevc_qsv @ 0x55702aeb7540] Failed to create a VAAPI device.

 

 

Is there anything I am missing?

 

Cheers,

Christophe.

Link to comment
8 hours ago, cpecquerie said:

Hi, I am trying to get FileFlows working on Unraid with an Intel GPU.

Added --device /dev/dri:/dev/dri to the docker parameters but it still fails with the following error :

 

 

Is there anything I am missing?

 

Cheers,

Christophe.

Sorry, I'll be of little help here.   I don't have any intel gpus to test and ive never used one, so not sure the parameters needed for the docker container.

The ffmpeg I use is the same one as tdarr, jellyfin 4.3 version.  So if you can find out the parameters needed for tdarr it would likely be the same for FileFlows.

Link to comment
23 hours ago, cpecquerie said:

Hi, I am trying to get FileFlows working on Unraid with an Intel GPU.

Added --device /dev/dri:/dev/dri to the docker parameters but it still fails with the following error :

 

 

Is there anything I am missing?

 

Cheers,

Christophe.

Try using only "--device=/dev/dri" in extra parameters. That's definitely working for me.

 

Do you have the iGPU working in any other docker container?

 

Edited by Spooky83
Link to comment
  • 1 month later...

Has anybody figured out a way to guide a flow based on file age?

For example, I'd like to compress files older than 60 days for archival

 

I'm sure it's possible with a function block (it seems to have file.modified?) but I'm not sure where to start with that.

 

Currently I only use Fileflows to automatically sort audio tracks and add a stereo track if one was missing.

Link to comment
On 3/29/2022 at 11:54 AM, Faceman said:

Has anybody figured out a way to guide a flow based on file age?

For example, I'd like to compress files older than 60 days for archival

 

I'm sure it's possible with a function block (it seems to have file.modified?) but I'm not sure where to start with that.

 

Currently I only use Fileflows to automatically sort audio tracks and add a stereo track if one was missing.

This isnt the best place for support, discord is quickest, then github.   I rarely check here tbh.

 

So you can achieve this by using a "Function" node.   with the following code

let diff = new Date() - Variables.file.Modified;
let days = Math.floor(diff / (24 * 60 * 60 * 1000));
Logger.ILog("Days old: " + days);
return days < 60 ? 1 : 2;

image.thumb.png.0d5ebf2f453b7a899bd29017fabd9b34.png
Where output 1 will be less than 60 days old, output 2 is greater than 60 days

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.