Page 8 of 11

Re: [Anime] Convert Absolute to SxE numbers

Posted: 28 Jan 2019, 14:59
by rednoah
If you're using FileBot Node, then you're effectively using the amc script, which means you can force TV Show mode, set order and format options, which means you can apply the techniques mentioned in the OP.

:arrow: If you have trouble with that, please make a new thread in the Synology section and include screenshots / console output with what you've tried so far.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 31 Jan 2019, 15:22
by JStrach
I implemented the changes that I described above, taking the code that was in the if statement out and moving to after the statement, then changing the if statement to a while false statement to wait for the package to truly be finished. It worked as expected. I included a log in the while statement to see how many times it ran through before clearing, and it ran ~38k times over the course of a few seconds. Putting in a wait of one second in the while loop would limit this, but I don't think this is really an issue. Here's the revised version I'm using for the "Package Finished" trigger (I believe the only thing that would need changing would be the script path for non-Windows environments):

Code: Select all

var script = JD_HOME + '/jdownloader-postprocess.cmd'

var path = package.getDownloadFolder()
var name = package.getName()
var label = package.getComment() ? package.getComment() : 'N/A'
var links = package.getDownloadLinks() ? package.getDownloadLinks() : []

function isReallyFinished() {
    for (var i = 0; i < links.length; i++) {
        if (links[i].getArchive() != null && links[i].getExtractionStatus() != "SUCCESSFUL" || !package.isFinished()) {
            return false
        }
    }
    return true
}

while (!isReallyFinished()) {}


var command = [script, path, name, label, 'PACKAGE_FINISHED']
log(command)
log(callSync(command))
I believe that when using this script, the "Archive Extracted" trigger is unnecessary.

Re: Plex Naming Schemes

Posted: 07 Feb 2019, 14:11
by Kopernikus
Hi,

If I use:

Code: Select all

{plex.derive {" [$vf.$vc.$ac]"}}
I get

Code: Select all

/volume1/video/Movies/xXx (2002)/xXx (2002) [480p.x264.AC3].mkv
but how to I get

Code: Select all

/volume1/video/Movies/xXx (2002) [480p.x264.AC3]/xXx (2002) [480p.x264.AC3].mkv
or

Code: Select all

/volume1/video/Movies/xXx (2002) [480p.x264.AC3]/xXx (2002).mkv
I want to use the Plex format, but to now the video format so I now for example when I replace a SD by HD version of the same movie.

Thx

Re: Plex Naming Schemes

Posted: 07 Feb 2019, 14:38
by rednoah
There's no convenience method for this particular use case.

You'll either have to
(A) write your own custom format without using the {plex} binding at all, or
(B) write your own custom format using bits and pieces of the {plex} binding as necessary.

e.g.

Code: Select all

Movies/{plex[1]}{" [$vf.$vc.$ac]"}/{plex[2]}{" [$vf.$vc.$ac]"}

:!: Either way, you'll no longer be strictly adhering to the Plex naming scheme, although it'll probably work.

Re: [DEB] Debian package

Posted: 09 Feb 2019, 14:31
by gkalc
APT repo problem?

Code: Select all

# bash -xu <<< "$(curl -fsSL https://raw.githubusercontent.com/filebot/plugins/master/installer/deb.sh)"
+ curl -fsSL https://raw.githubusercontent.com/filebot/plugins/master/gpg/maintainer.pub
+ sudo apt-key add -
OK
+ echo 'deb [arch=amd64] https://get.filebot.net/deb/ stable main'
+ sudo tee /etc/apt/sources.list.d/filebot.list
deb [arch=amd64] https://get.filebot.net/deb/ stable main
+ sudo apt-get update
Ign:1 https://get.filebot.net/deb stable InRelease
Hit:2 http://ftp.ca.debian.org/debian buster InRelease              
Hit:3 https://get.filebot.net/deb stable Release                    
Hit:4 http://security.debian.org/debian-security buster/updates InRelease
Hit:5 http://ppa.launchpad.net/papirus/papirus/ubuntu bionic InRelease
Err:6 https://get.filebot.net/deb stable Release.gpg
  Signed file isn't valid, got 'NODATA' (does the network require authentication?)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: https://get.filebot.net/deb stable Release: Signed file isn't valid, got 'NODATA' (does the network require authentication?)
W: Failed to fetch https://get.filebot.net/deb/dists/stable/Release.gpg  Signed file isn't valid, got 'NODATA' (does the network require authentication?)
W: Some index files failed to download. They have been ignored, or old ones used instead.
+ sudo apt-get install filebot
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Re: [DEB] Debian package

Posted: 09 Feb 2019, 15:35
by rednoah
Maybe just a temporary issue of some kind? The repository files are all there as far as I can see, and fetch works for the URLs that seem to have an issue in your log:
https://get.filebot.net/deb/dists/

Re: [DEB] Debian package

Posted: 11 Feb 2019, 18:40
by mrpengy
Just curious, will you put an arm package in the Deb repo? Would make upgrading much easier.

Thanks!

Re: [DEB] Debian package

Posted: 12 Feb 2019, 04:36
by rednoah
Yes, there will be a noarch package:
viewtopic.php?f=6&t=9535

Re: [TAR] How to install FileBot on Linux / FreeBSD / Solaris / any Unix OS

Posted: 17 Feb 2019, 19:30
by phrak9
Can this be updated? Been wrestling with getting openjdk-11 installed and found by FIlebot on install no luck

Re: [TAR] How to install FileBot on Linux / FreeBSD / Solaris / any Unix OS

Posted: 18 Feb 2019, 06:51
by rednoah
rednoah wrote: 17 Jan 2019, 14:49 The *-portable.tar.xz package is compiled for Java 8.
Why would you wrestle with Java 11 when Java 8 is recommended and easily available?

Re: [SNAP] Grant access to /media or /mnt

Posted: 19 Feb 2019, 21:55
by harold
+1

I have NFS shares automounted to "/mount/servername/films" via NFS.
The "/mount" directory does not even show in the "Load" listing of directories.

I have enabled the removable-media and dev options. No luck.

I have has filebot installed for years. I think this used to work.
Any suggestions?

Re: [SNAP] Grant access to /media or /mnt

Posted: 20 Feb 2019, 07:28
by rednoah
I recommend using the classic APT repository if you have difficulties with the new SNAP confinement concepts:
viewtopic.php?f=11&t=6028


:idea: /mount cannot be accessed from SNAP applications due to confinement. snap connect filebot:removable-media will only give you access to /media and no other additional folders.

:idea: Installing with snap install filebot --edge --devmode will completely disable confinement, and thus give you access to your entire filesystem.

Re: [SNAP] Grant access to /media or /mnt

Posted: 20 Feb 2019, 11:24
by rollingdye
snap install filebot --edge --devmode didn't work in my case unfortunately. (trying to write to /mnt/Media)

The flags seem to be correct though since snap list shows them here:
filebot 4.8.5 22 edge filebot devmode


When clicking "Rename" I still get "AccessDeniedException: /mnt/Media/....".


Edit: Fixed it. The problem was that the mounted directory's ownership was set to root. After changing the owner to my username it works now. :D

Re: --mode interactive

Posted: 25 Feb 2019, 15:48
by mouzzampk2014
I like it :)

Re: Choose Java Swing Look-and-Feel (e.g. Dark Mode)

Posted: 25 Feb 2019, 18:44
by DaVoodoo
@rednoah, more detailed windows instructions for a noob please. :roll:

Re: Choose Java Swing Look-and-Feel (e.g. Dark Mode)

Posted: 25 Feb 2019, 19:23
by rednoah
  1. Open Start Menu and search for Set Environment Variables
  2. Click on New
    Name:

    Code: Select all

    FILEBOT_OPTS
    Value:

    Code: Select all

    -Dnet.filebot.theme=Darcula
  3. Click OK and then relaunch FileBot.

:!: Note that you'll need the latest revision (i.e. r6135 or higher) for any of this to work. The FileBot (platform) launcher is using the Darcula theme by default now as well.

Re: Choose Java Swing Look-and-Feel (e.g. Dark Mode)

Posted: 25 Feb 2019, 20:34
by DaVoodoo
Thanks rednoah. Much appreciated. :D

Re: MediaInfo Inspector

Posted: 02 Mar 2019, 13:25
by shreyas1122
I would like to use {video[0].frameRate} in an IF condition, I'm not able to figure out how to do it.
i tried printing the framerate on the gui and then comparing as float num and string, but it always returns a 'false' : {video[0].frameRate > 1.0 }

Any help ??
Thanks (Y)

Re: MediaInfo Inspector

Posted: 02 Mar 2019, 13:38
by rednoah
You'll need to convert the String value to a Number before can compare it numerically:

Code: Select all

video[0].frameRate.toFloat() > 1.0

Re: [SNAP] Grant access to /media or /mnt

Posted: 11 Mar 2019, 20:54
by jarjar
I'm having the same problem as above and I have done everything listed above but the only difference is I have Linux Mint installed with a ZFS file system attached to /Server and everything runs from that drive.

ie. Downloads, Picture, Videos ...... everything has been assigned to /Server/Download, /Server/Pictures, /Server/Videos etc

All the directories can be seen by filebot but all the files are greyed out and the /Server directory cannot be seen.
Filebot 4.7.9 still works fine and I'm not after a refund as I have used your program for years so I'm happy to pay.

Re: [SNAP] Grant access to /media or /mnt

Posted: 12 Mar 2019, 04:57
by rednoah
Just use the traditional APT repository instead if SNAP confinement is giving you trouble:
viewtopic.php?f=11&t=6028

Re: Q&A for n00bs

Posted: 21 Mar 2019, 19:08
by test8457
Hi,

I am currently switching to transmission with openvpn in a docker container on my Synology (DSM 6).
Before I used the Synology default download station and used the amc script to take care of completed downloads. That worked really well.
I tried to setup transmission in the same way, but I don't think transmission is currently able to run the filebot script at all. I can see in the transmission log file that the script is called after a download is completed, but the script is not actually running successfully.
I tried to set the right permissions for the script and changed the location of the script to the docker container, but that did not resolve my issue. When I tried to run a command inside the docker container I noticed that filebot command cannot be found: "bash: filebot: command not found".
As I am pretty new to all things regarding docker, could you guide me in any way to let the docker container access filebot? Do I have to alter the $Path settings?

Thanks and kind regards

Re: Q&A for n00bs

Posted: 21 Mar 2019, 19:16
by devster
Docker images are built with a specific set of stuff inside, think about that image as a separate machine.
It sounds like you didn't install FileBot in this particular image.

Re: Q&A for n00bs

Posted: 21 Mar 2019, 19:31
by test8457
Thanks, that makes sense.
So can I install filebot as a package into my existing docker container, or do I have to create a new docker image with filebot as a dependency?

Re: Q&A for n00bs

Posted: 21 Mar 2019, 20:44
by devster
The second option is cleaner, start FROM the first one (Dockerfile syntax) and simply install FileBot, should work then.

Re: Discord / Slack / IRC Channel

Posted: 22 Mar 2019, 15:43
by devster
The Slack channel seems to require an @filebot.net email account to sign up.
Is it still active?

Re: Discord / Slack / IRC Channel

Posted: 22 Mar 2019, 17:12
by rednoah
Discord Channel is the way to go. I'll update the OP.

Change from Upper case to Lower Case a part of s00e00

Posted: 09 Apr 2019, 10:21
by JustOneOfMany
HI,

I am new to Filebot and I am trying to figure out how to manipulate the output:

my preset is {n} {y} {s00e00} {t} which gives me the following output

MyName 2019 S01E01 First Try

but I would like to have the resulting output

MyName 2019 S01e01 First Try

Tried lower() etc to no avail. I am certainly missing something.

What is the fastest way of obtaining S01e01 instead of S01E01

Thank you in advance

Re: Presets

Posted: 09 Apr 2019, 10:28
by rednoah
This will do:

Code: Select all

s00e00.replace('E', 'e')

Re: Discord / Slack / IRC Channel

Posted: 09 Apr 2019, 16:31
by rednoah
Discord is actively being used by a handful of people.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 14 Apr 2019, 04:21
by GrEaTwArRiOr
hi, i am new here i try to do automation with jDownloader first i trying to understand the code...
i am a purchased user
here is my log below

Code: Select all

Locking C:\Users\WAVE111\AppData\Roaming\FileBot\logs\amc.log
Run script [fn:amc] at [Sun Apr 14 14:08:00 AEST 2019]
Parameter: skipExtract = y
Parameter: unsorted = y
Parameter: music = n
Parameter: artwork = n
Parameter: excludeList = excludes.txt
Parameter: ut_dir =
Parameter: ut_kind = multi
Parameter: ut_title =
Parameter: ut_label =
Argument[0]: D:\jDownload\extracted\test
Use excludes: D:\test\excludes.txt
Input: D:\jDownload\extracted\test\tests.mp4
xattr: [test.mp4] => [WWW - 2019x123 - April 2, 2019]
Group: [Series:test] => [test.mp4]
Rename episodes using [TheTVDB]
the thing that i need is i would like to use TMDB instead of TVDB also i just need to rename the file i dont need any subfolders.

please advise

thanks and regards,
Gr

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 14 Apr 2019, 04:22
by rednoah
The amc script does not allow you to use TheMovieDB as Episode Data Source, so you're plain out-of-luck here (unless you fork your own amc script).

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 14 Apr 2019, 04:24
by GrEaTwArRiOr
ok thanks, if there is any luck for without folder?

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 14 Apr 2019, 04:26
by GrEaTwArRiOr
ok thanks, if there is any luck for without folder?

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 14 Apr 2019, 05:15
by rednoah
What does "without folder" mean in the context of running the amc script?

Re: Exclude Blacklist & Series-Mappings

Posted: 30 Apr 2019, 12:13
by mami7880
Can you add dsds for Deutschland sucht den Superstar

Thank you

Re: Exclude Blacklist & Series-Mappings

Posted: 30 Apr 2019, 13:08
by rednoah
mami7880 wrote: 30 Apr 2019, 12:13 Can you add dsds for Deutschland sucht den Superstar
Please post file paths (and logs or screenshots) of files you're having trouble with.

Re: [Anime] Convert Absolute to SxE numbers

Posted: 02 May 2019, 11:55
by Vartikanshi579
I agree with rednoah.

Re: Q&A for n00bs

Posted: 04 May 2019, 01:47
by w0wreally
Hey rednoah, I took your advice and just installed filebot straight up.

Is there an amc script command that works with just checking a download folder on schedule and running the renames to output to another folder - then running again 5 min later? Most of the routines posted seem to be focused on torrent scripting, but since I'm running my deluge in a docker those wouldn't work, not passing any commands. I just need a watcher.

Just have filebot installed to Ubuntu as normal. Would something like this, run on a schedule work? Are there any issues with it not completing in time before the next scheduled run - I'm doing local > local copies.

Code: Select all

filebot -script fn:amc --output "\download" --action copy -non-strict "\renamed" --log-file amc.log

Re: Q&A for n00bs

Posted: 04 May 2019, 03:31
by rednoah
1.
Linux is very powerful. There are many ways to schedule commands. There might even be GUI apps that make it especially easy. Google will help.

The general universal answer is to just use cron:
https://help.ubuntu.com/community/CronHowto


:!: Note that what you're trying to do is not allowed and will get you banned. You need to make sure that you're not processing all files over and over and over ad infinitum.
rednoah wrote: 01 Aug 2012, 13:04 If you run this script automatically in intervals every hour or every day, then you must set --def excludeList or you will get banned.
If you run this script automatically in intervals every hour or every day, then you must set --def excludeList or you will get banned.

I recommend getting started with the example in the documentation:

Code: Select all

filebot -script fn:amc --output "/path/to/output" --action duplicate -non-strict "/path/to/input" --log-file amc.log --def excludeList=amc.txt
viewtopic.php?t=215


2.
The filebot-watcher docker container might be what you're looking for:
https://hub.docker.com/r/rednoah/filebot/

e.g.

Code: Select all

docker run -it -v /path/to/my/folder:/volume1 -v data:/data rednoah/filebot:watcher /volume1/input --output /volume1/output --action duplicate -non-strict --log-file /volume1/amc.log --def excludeList=/volume1/amc.excludes
:idea: Note that both /input and /output folder must be on the same docker mount point.
:idea: Please make sure you understand how docker works, especially the -v option, before using docker.

Re: [RPM] Fedora package

Posted: 10 May 2019, 13:58
by b2un0
Error on CentOS 7.

Code: Select all

  - nothing provides java-1.8.0-openjdk-openjfx needed by filebot-4.8.5-universal.jdk8.noarch
i doesn't understand why the .rpm package have a dependency on openjfx.
the .deb packages only recommends openjfx.

Im searching for 2 hours for a CentOS 7 Repo which provide the "java-1.8.0-openjdk-openjfx" as package - i give up.

Re: [DEB] Debian package

Posted: 10 May 2019, 14:14
by b2un0
the apt repo is still broken

Code: Select all

W: GPG error: https://get.filebot.net/deb universal Release: Detached signature file '/var/lib/apt/lists/partial/get.filebot.net_deb_dists_universal_Release.gpg' is in unsupported binary format
tested on debian stretch and buster, nothing works.

Failed > deb https://get.filebot.net/deb/ universal main
Failed > deb [arch=amd64] https://get.filebot.net/deb/ stable main

they key is installed

Code: Select all

root@debian:/etc/apt# apt-key adv --fetch-keys https://get.filebot.net/filebot/KEYS
Executing: /tmp/apt-key-gpghome.3sjEk5Kz9e/gpg.1.sh --fetch-keys https://get.filebot.net/filebot/KEYS
gpg: requesting key from 'https://get.filebot.net/filebot/KEYS'
gpg: key 4E402EBF7C3C6A71: 4 signatures not checked due to missing keys
gpg: key 4E402EBF7C3C6A71: "Reinhard Pointner <[email protected]>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

Re: [RPM] Fedora package

Posted: 10 May 2019, 14:19
by rednoah
The RPM package is tested on Fedora.

Since some of these dependency are optional, or can be provided by the user manually, Requires is not ideal, but since there's no Recommends AFAIK, this is what we've got:

Code: Select all

Requires:       java-1.8.0-openjdk
Requires:       java-1.8.0-openjdk-openjfx
Requires:       jna
Requires:       mediainfo
Requires:       p7zip
Requires:       p7zip-plugins

EDIT:

I've found some other key words in some other docs. I guess Recommends is possible. Will use Recommends for upcoming builds.

Re: [RPM] Fedora package

Posted: 10 May 2019, 14:32
by b2un0
Okay, thanks. i will try Fedora for my Dockerfile..

*edit*

yes, this works, thank you!

Re: [DEB] Debian package

Posted: 10 May 2019, 18:09
by rednoah
Works for me:

Code: Select all

Hit:4 https://get.filebot.net/deb stable Release
Reading package lists... Done
Building dependency tree
Reading state information... Done
Tested on Ubuntu. Not sure if there's something significantly different on Debian.


EDIT:

There seems to be a recent change that requires ascii-armoured signature files.

Re: [Anime] Convert Absolute to SxE numbers

Posted: 20 May 2019, 08:45
by Gallltid
Thanks for this tutorial.

Re: [EVAL] Split code into external *.groovy script files

Posted: 24 May 2019, 14:53
by devster
Thank you.
I had resorted to mustache templates (here) and they may still be useful for some cases (secret variables, credentials etc.) but this is definitely simpler.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 30 May 2019, 12:00
by christhirteen13
I'm getting this in the amc.log nothing happens:

Code: Select all

Run script [fn:amc] at [Thu May 30 13:53:06 CEST 2019]
Parameter: skipExtract = y
Parameter: unsorted = y
Parameter: music = y
Parameter: artwork = y
Parameter: excludeList = excludes.txt
Parameter: ut_dir = D:\Downloads\suitsDEBDTE302
Parameter: ut_kind = multi
Parameter: ut_title = suitsDEBDTE302
Parameter: ut_label = N/A
Use excludes: C:\Users\caserv01-media\Media\excludes.txt
No files selected for processing
Done ¯\_(ツ)_/¯

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 30 May 2019, 12:38
by rednoah
The log indicates that D:\Downloads\suitsDEBDTE302 is empty and doesn't contain any media files.

Have you tried the usual amc script troubleshooting?
viewtopic.php?f=4&t=215

Re: [Mac] Folder Action with Automator

Posted: 30 May 2019, 13:12
by absoluthamburg
Hi there

just a small question regarding the quick action "rename with filebot". It works great overall but how I can change the language of the pulled title. In filebot it self I pull the German name but via the quick action it pulls the English name.

It is possible to change the language of the quick action?

Re: [Mac] Folder Action with Automator

Posted: 30 May 2019, 13:15
by rednoah
Yes, you can open the .workflow after installing the action to modify the command and add the --lang option.

Re: [DOCS] FileBot Groovy Expression References

Posted: 05 Jun 2019, 18:32
by devster
Pardon my nosiness, how do you generate these pages?
They're a real eye opener, for example I had no idea String.match() could accept a map.

Re: [DOCS] FileBot Groovy Expression References

Posted: 05 Jun 2019, 18:37
by rednoah
The FileBot API Documentation is generated from the source using the javadoc tool.

Re: MediaInfo Inspector

Posted: 09 Jun 2019, 07:12
by redbull666
Lately I am seeing more releases of which I cannot seem to get a useful {source} extracted.

Example 1 (OK): https://paste.gg/p/anonymous/f8d52f198a ... d6402ffae3 (seen in the BluRay-1080p tag)
Example 2 (not OK) https://paste.gg/p/anonymous/8691f9399e ... 949c3ebbf2 (see the -2160p tag)

I wonder why 1 works, and not 2. What is different exactly?

I updated Mediainfo to the repo provided by Mediainfo, but that was after, not sure that helps.

Re: MediaInfo Inspector

Posted: 09 Jun 2019, 07:37
by rednoah
{source} is not a MediaInfo binding. {source} is based primary on the filename, i.e. if the filename contains BluRay then {source} will be BluRay, if the filename is abc.mp4 then {source} will be undefined.

Re: MediaInfo Inspector

Posted: 10 Jun 2019, 15:25
by redbull666
rednoah wrote: 09 Jun 2019, 07:37 {source} is not a MediaInfo binding. {source} is based primary on the filename, i.e. if the filename contains BluRay then {source} will be BluRay, if the filename is abc.mp4 then {source} will be undefined.
Aaah ok, still I did not get a valid source from the release with this filename:

Django Unchained (2012) (1080p BluRay x265 HEVC 10bit AAC 5.1 Silence)

Re: MediaInfo Inspector

Posted: 10 Jun 2019, 15:50
by rednoah
{source} does work for this one:

Code: Select all

$ filebot -mediainfo . --format "[{source}] {fn}"
[BluRay] Django Unchained (2012) (1080p BluRay x265 HEVC 10bit AAC 5.1 Silence)

Re: MediaInfo Inspector

Posted: 10 Jun 2019, 15:59
by redbull666
rednoah wrote: 10 Jun 2019, 15:50 {source} does work for this one:

Code: Select all

$ filebot -mediainfo . --format "[{source}] {fn}"
[BluRay] Django Unchained (2012) (1080p BluRay x265 HEVC 10bit AAC 5.1 Silence)
Right, I should have looked closer in the log...
Auto-detect movie from context: [/mnt/slow/torrents/media_downloads/Django Unchained (2012) (1080p BluRay x265 HEVC 10bit AAC 5.1 Silence)/Featurettes/The Costume Designs of Sharen Davis.mkv]
[HARDLINK] from [/mnt/slow/torrents/media_downloads/Django Unchained (2012) (1080p BluRay x265 HEVC 10bit AAC 5.1 Silence)/Django Unchained (2012) (1080p BluRay x265 Silence).mkv] to [/mnt/slow/media/Movies/Django Unchained (2012)/Django Unchained (2012) [x265, Blu-ray-1080p, AAC-5.1, KRaLiMaRKo].mkv]
[HARDLINK] from [/mnt/slow/torrents/media_downloads/Django Unchained (2012) (1080p BluRay x265 HEVC 10bit AAC 5.1 Silence)/Featurettes/Reimagining the Spaghetti - Western The Horses And Stunts of Django Unchained.mkv] to [/mnt/slow/media/Movies/Django Unchained (2012)/Django Unchained (2012) [x265, -1080p, AAC-2.0, ].mkv]
[OVERRIDE] Delete [/mnt/slow/media/Movies/Django Unchained (2012)/Django Unchained (2012) [x265, -1080p, AAC-2.0, ].mkv]
Some shitty Featurettes messed with this one...

Thanks for the help!

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 12 Jun 2019, 06:40
by chimera
Hi Rednoah,

after some hours of troubleshooting I have a question and would appreciate your help.

My setup is a OMV Host that runs a jdownloader docker instance. Filebot is installed on the OMV host.
The filebot script itself runs fine. I needed a way to call the filebot script, so I came up with a sshpass script from the docker instance which logs into the OMV instance to start the filebot script.
The only thing that is currently not working is calling the script from jdownloader, it always gives error code 2: file or directory not found.
After searching I ruled out the most obvious mistakes:

- The script, filebotrun.sh has chmod 777 and executable
- Has unix EOL encoding
- Within the jdownloader docker instance on bash, I can execute the shell script successfully but not from jdownloader itself (path is varied from jdownloader GUI, i can see the filebotrun.sh, so in theory file level access is given

Can you think of any reason why the docker jdownloader instance cannot access the shell script?
Thank you in advance for your help

Code: Select all

var script = JD_HOME + '/filebotrun.sh'

var path = package.getDownloadFolder()
var name = package.getName()
var label = package.getComment() ? package.getComment() : 'N/A'
var links = package.getDownloadLinks() ? package.getDownloadLinks() : []

function isReallyFinished() {
    for (var i = 0; i < links.length; i++) {
        if (links[i].getArchive() != null && links[i].getExtractionStatus() != "SUCCESSFUL" || !package.isFinished()) {
            return false
        }
    }
    return true
}

if (isReallyFinished()) {
    var command = [script, path, name, label, 'PACKAGE_FINISHED']
    log(command)
    log(callSync(command))
}

Shell script filebotrun.sh:

Code: Select all

#!/bin/bash
LOG="/sharedfolders/Storage/logs/amc.log"
EXC="/sharedfolders/Storage/logs/amc.txt"
SERIEN="/sharedfolders/plexroot/{plex}"
FILME="/sharedfolders/plexroot/{plex}"
USERNAME=root
HOSTS="172.17.0.1"
SCRIPT="filebot -script fn:amc --output "/sharedfolders/plexroot" --def movieformat="/sharedfolders/plexroot/{plex}" --def seriesformat="/sharedfolders/plexroot/{plex}" --action move --conflict auto -non-strict --log-file $LOG --def skipExtract=y unsorted=n music=n artwork=y --def storeReport=y --def clean=y --def plex=192.168.78.58:42Y97c6VATxkqyiNScD7 "
for HOSTNAME in ${HOSTS} ; do
    sshpass -p "pwd" ssh -o StrictHostKeyChecking=no -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 12 Jun 2019, 06:57
by rednoah
1.
If you're stuck with docker confinement, then i recommend using JD docker and FileBot Node docker.

Then you can create a scheduled task in the FileBot Node docker and execute it via curl from the JD docker.

That'll decoupling everything, making it easy to spot and fix issues.


2.
Is your *.sh script ever called by JD at all? If no, what does the JD log say? If yes, what does the output say?

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 12 Jun 2019, 10:27
by chimera
Wow, thanks for quick reply.
I'll will check the Filebot node docker, thank you.

Below is the error from the log, even when I validate the script in the jdownloader GUI it says no file or directory but I rly dont get it.

Code: Select all

net.sourceforge.htmlunit.corejs.javascript.WrappedException: Wrapped org.jdownloader.extensions.eventscripter.EnvironmentException: Line 20
java.io.IOException: Cannot run program "/config/filebotrun.sh": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:215)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:201)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:196)
	at org.jdownloader.extensions.eventscripter.sandboxobjects.ScriptEnvironment.callSync(ScriptEnvironment.java:263)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:120)
	at net.sourceforge.htmlunit.corejs.javascript.NativeJavaMethod.call(NativeJavaMethod.java:213)
	at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1531)
	at script(:20)
	at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
	at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
	at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:411)
	at org.jdownloader.scripting.JSHtmlUnitPermissionRestricter$SandboxContextFactory.doTopCall(JSHtmlUnitPermissionRestricter.java:119)
	at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3057)
	at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.exec(InterpretedFunction.java:115)
	at net.sourceforge.htmlunit.corejs.javascript.Context.evaluateString(Context.java:1212)
	at org.jdownloader.extensions.eventscripter.ScriptThread.evalUNtrusted(ScriptThread.java:275)
	at org.jdownloader.extensions.eventscripter.ScriptThread.executeScipt(ScriptThread.java:167)
	at org.jdownloader.extensions.eventscripter.ScriptThread.run(ScriptThread.java:147)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 21 more
 (#20)
	at net.sourceforge.htmlunit.corejs.javascript.Context.throwAsScriptRuntimeEx(Context.java:1907)
	at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:146)
	at net.sourceforge.htmlunit.corejs.javascript.NativeJavaMethod.call(NativeJavaMethod.java:213)
	at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1531)
	at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
	at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
	at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:411)
	at org.jdownloader.scripting.JSHtmlUnitPermissionRestricter$SandboxContextFactory.doTopCall(JSHtmlUnitPermissionRestricter.java:119)
	at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3057)
	at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.exec(InterpretedFunction.java:115)
	at net.sourceforge.htmlunit.corejs.javascript.Context.evaluateString(Context.java:1212)
	at org.jdownloader.extensions.eventscripter.ScriptThread.evalUNtrusted(ScriptThread.java:275)
	at org.jdownloader.extensions.eventscripter.ScriptThread.executeScipt(ScriptThread.java:167)
	at org.jdownloader.extensions.eventscripter.ScriptThread.run(ScriptThread.java:147)
Caused by: org.jdownloader.extensions.eventscripter.EnvironmentException: Line 20
java.io.IOException: Cannot run program "/config/filebotrun.sh": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:215)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:201)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:196)
	at org.jdownloader.extensions.eventscripter.sandboxobjects.ScriptEnvironment.callSync(ScriptEnvironment.java:263)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:120)
	at net.sourceforge.htmlunit.corejs.javascript.NativeJavaMethod.call(NativeJavaMethod.java:213)
	at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1531)
	at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:798)
	at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:105)
	at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:411)
	at org.jdownloader.scripting.JSHtmlUnitPermissionRestricter$SandboxContextFactory.doTopCall(JSHtmlUnitPermissionRestricter.java:119)
	at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3057)
	at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.exec(InterpretedFunction.java:115)
	at net.sourceforge.htmlunit.corejs.javascript.Context.evaluateString(Context.java:1212)
	at org.jdownloader.extensions.eventscripter.ScriptThread.evalUNtrusted(ScriptThread.java:275)
	at org.jdownloader.extensions.eventscripter.ScriptThread.executeScipt(ScriptThread.java:167)
	at org.jdownloader.extensions.eventscripter.ScriptThread.run(ScriptThread.java:147)
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 21 more

	at org.jdownloader.extensions.eventscripter.sandboxobjects.ScriptEnvironment.callSync(ScriptEnvironment.java:266)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:120)
	... 12 more
Caused by: java.io.IOException: Cannot run program "/config/filebotrun.sh": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:215)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:201)
	at org.appwork.utils.processes.ProcessBuilderFactory.runCommand(ProcessBuilderFactory.java:196)
	at org.jdownloader.extensions.eventscripter.sandboxobjects.ScriptEnvironment.callSync(ScriptEnvironment.java:263)
	... 17 more
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 21 more

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 12 Jun 2019, 12:43
by chimera
Hey Rednoah,

after looking at Filebot node, I would just use the filebot watcher to monitor my jdownloader extraction destination folders and go via amc from there.
That is way easier than I thought in comparison to my sshpass approach between containers lool ;-)

Impressive work btw, thank you for the tools mate!

Re: FileBot on the Mac App Store

Posted: 13 Jun 2019, 00:19
by leejk
Hi,

I have the MAS version, and previously I had install the Homebrew version installed as well in order to run scripts. However I had to uninstall/reinstall Homebrew, but now the Homebrew version wants a license. Has there been a change in the license policy?

Re: FileBot on the Mac App Store

Posted: 13 Jun 2019, 03:53
by rednoah
Yes, FileBot is now available independently of any App Store:
viewtopic.php?f=9&t=6265

You can request a complimentary license if you need to work around Apple limitations:
viewtopic.php?f=8&t=9517

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 13 Jun 2019, 12:56
by OutrageousGem
rednoah wrote: 12 Jun 2019, 06:57 1.
If you're stuck with docker confinement, then i recommend using JD docker and FileBot Node docker.

Then you can create a scheduled task in the FileBot Node docker and execute it via curl from the JD docker.

That'll decoupling everything, making it easy to spot and fix issues.
I ended up with the same idea in my own download setup. But when I try to schedule a task in FileBot Node docker I just get a

Code: Select all

{"success":false,"error":"NOT IMPLEMENTED"}
I doubt you would recommend unimplemented features. Any idea what might be going wrong?

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 13 Jun 2019, 16:17
by rednoah
Ups. Looks like this feature is only enabled for SYNO and QNAP builds even though it probably would work for docker too. I guess it's not as easy as I thought with the current release. I'll see what I can do for the next release.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 14 Jun 2019, 07:01
by OutrageousGem
Ah. I will hope for the next release then. Thank you.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 15 Jun 2019, 07:16
by rednoah
I've update the FileBot Node docker container to FileBot Node 0.2.8.4. Please try the latest container and let me know if you encounter any problems.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 17 Jun 2019, 07:43
by OutrageousGem
Works great. Thank you! Two questions though:

1, Is it possible to somehow un-schedule a task? Can not find that option.

2, Is there any way to also schedule it to run at a specified time? Currently only a API call seems possible.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 17 Jun 2019, 08:20
by rednoah
1.
Yes, but only by directly modifying the FileBot Node application data files, which are stored in /data/.filebot-node (container-point-of-view).


2.
FileBot Node does not include a scheduler. The scheduling of commands is best done with the built-in facilities of the platform, i.e. cron if you're using a generic Linux system.

:!: But at that point, why would you be using FileBot Node in the first place? You could just use cron to schedule docker filebot amc script calls directly, without having FileBot Node running at all.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 17 Jun 2019, 09:37
by OutrageousGem
1, Got it.

2, Just because Node makes it much more convenient to rapidly test different iterations of a command and schedule it when it finally does the right thing. (I am just bad at writing shell scripts. Always some typo / unescaped character / etc.... :? ). The API Is all I currently really need.

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 17 Jun 2019, 12:52
by rednoah
OutrageousGem wrote: 17 Jun 2019, 09:37 Just because Node makes it much more convenient to rapidly test different iterations of a command and schedule it when it finally does the right thing. (I am just bad at writing shell scripts. Always some typo / unescaped character / etc.... :? ). The API Is all I currently really need.
I see. Yes, FileBot Node certainly has value in generating CLI commands. You could always use the WebUI to generate commands and the copy & paste that into your scheduled shell script.

:idea: Use the @file syntax for reading command-line arguments from external text files. That'll make things easy as pie. That's also what prepared tasks do in form of *.args files. ;)

Re: Exclude Blacklist & Series-Mappings

Posted: 20 Jun 2019, 10:56
by mami7880
Hi and sorry,

I missed youre Post and now i have no file paths or logs because of new installation of my system.
Next time, I will send the information as well.

Re: [EVAL] Split code into external *.groovy script files

Posted: 20 Jun 2019, 14:53
by nothinghere
I've tried using a few different things, but even having something as simple as:
test.groovy=>
{n}
and then doing movieFormat="{include 'test.groovy'}"
also tested movieFormat="{evaluate('test.groovy' as File)}"

results in an empty name..am I missing something? I may not have understood what should be in the groovy file, but from what I can see it should just be the same expression as we can already use in a one liner format?

*edit 2* updated to 4.8.6, but still getting empty file name

Re: [EVAL] Split code into external *.groovy script files

Posted: 21 Jun 2019, 03:16
by rednoah
test.groovy

Code: Select all

n

:idea: We're including Groovy code here, as opposed to FileBot Format Expression code, which interprets {...} delimited expressions as Groovy code. If we include Groovy code from within Groovy code, like in the example above, then Groovy code is expected.



YES:

Code: Select all

{evaluate 'n'}
:arrow: Same as {n}

NO:

Code: Select all

{evaluate '{n}'}
:arrow: Same as {{n}}

Re: [EVAL] Split code into external *.groovy script files

Posted: 21 Jun 2019, 05:32
by nothinghere
Oh, I see, I always was under the impression that the format expressions were just plain groovy. Shame on me.

Yeah, getting results now. Thanks!

Re: [EVAL] Split code into external *.groovy script files

Posted: 21 Jun 2019, 07:38
by rednoah
No worries. It’s a common misconception, since Groovy Code itself may also contain {} for close blocks or closures. So the semantics depend on the context.

Re: [EVAL] Split code into external *.groovy script files

Posted: 21 Jun 2019, 11:15
by nothinghere
After playing around a bit this is awesome.

However:
Trying to break out certain helpers as separate scripts it seems that there is an issue with loading external scripts unless everything is placed and run from the filebot portable folder (which I'd like to avoid since I have all my scripts backuped to a gdrive synced folder).

If I have a
tags.groovy file that grabs my preferred tag format, I can't seem to get it to load.

I've tried:
include 'getEditions.groovy' // this works fine if I place my groovy files in the lib, but if I run it from where I actually have my files it tries to load it from $CWD

After googling the recommended way is to do:

Code: Select all

def scriptDir =  getClass().protectionDomain.codeSource.location.path
include '$scriptDir/getEditions.groovy'
However, that blows up with

Code: Select all

AccessControlException: access denied ("java.lang.RuntimePermission" "getProtectionDomain")
I've tried granting access to all apps for that permission, but it doesn't seem to work.
Even doing:

Code: Select all

grant {
    permission java.security.AllPermission;
};
Doesn't work.


Is there some additional arguments I can give filebot to figure out which path to load files from, or is it all handled by the JVM?

Re: [EVAL] Split code into external *.groovy script files

Posted: 22 Jun 2019, 02:23
by rednoah
1.
Your code just doesn't do what you think it does:

Code: Select all

def x = 1
println '$x = 1' // $x = 1
println "$x = 1" // 1 = 1
:arrow: http://groovy-lang.org/syntax.html#_str ... erpolation


2.
I'd use environment variables if I wanted to pass in some common folder paths for use in custom scripts:

Code: Select all

export FILEBOT_FORMAT_D="$HOME/.gdrive/FileBot Formats"

Code: Select all

_environment.FILEBOT_FORMAT_D
or via --def name=value if you need it in the format engine:

Code: Select all

filebot ... --def FormatFolder="$FILEBOT_FORMAT_D"

Code: Select all

{defines.FormatFolder}

Re: [EVAL] Split code into external *.groovy script files

Posted: 22 Jun 2019, 04:56
by rednoah
FileBot r6524 will now resolve include("files.groovy") relatively to the current script file by default.

Re: [EVAL] Split code into external *.groovy script files

Posted: 22 Jun 2019, 05:56
by nothinghere
rednoah wrote: 22 Jun 2019, 04:56 FileBot r6524 will now resolve include("files.groovy") relatively to the current script file by default.
Great!


Thanks for pointing out that string interpolation thing, completely missed the single quotes difference (still threw the security exception but that's irrelevant now I guess).

The --def was exactly what I was thinking of as a workaround.

Thanks for the help!

Re: Metadata and Extended Attributes

Posted: 06 Jul 2019, 06:38
by b2un0
Hi,

is there any option to add filebot xattr to already sorted files?

eg, i have multiple series where on some seasons the xattr from filebot are missing, so ne the " filebot missing script" does not work correct and think the season is missing.

Re: Metadata and Extended Attributes

Posted: 06 Jul 2019, 06:46
by rednoah
You'll have to process files through FileBot again to ensure that xattr are set this time.

You can find files without xattr metadata like so:

Code: Select all

filebot -mediainfo . --filter '!f.metadata' --format {f}

Re: Metadata and Extended Attributes

Posted: 06 Jul 2019, 06:49
by b2un0
thanks for your fast reply!

thats the first thing i did, but filebot says "Skipped, already exists". :(

Re: Metadata and Extended Attributes

Posted: 06 Jul 2019, 06:55
by rednoah
1.
You can move all untagged files elsewhere first:

Code: Select all

filebot -mediainfo . --filter '!f.metadata' -exec mv -v {f} /path/to/untagged/files/{f.name}

2.
However, the general smart approach is to never touch files in your Media folder, and only ever move files there via FileBot. That way you can ensure that everything is always in perfect order.

i.e. just process all your files into a new folder, and then remove the old one if you're happy with the new one

Code: Select all

--format /path/to/new/folder/{plex}

Re: [BTC] Purchase FileBot with Crypto Currency

Posted: 14 Jul 2019, 17:59
by Batman
I am interested in purchasing a license via crypto currency...

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 03 Aug 2019, 00:10
by eggsplorer
I followed your steps in post #1 and it works very well I just can't change any of the downloaded files because I have no permission.

How can I get filebot to create files/folders with correct permissions?

On my Media Drive all my files have:
Owner: 1000
Group: 100
Permissions: 775

Files renamed and moved from Filebot have:
Owner: 0
Group: 0
Permissions: 775

Re: [JDownloader] Setup for Windows, Linux and Mac OS X

Posted: 03 Aug 2019, 07:26
by rednoah
FileBot does not set or change permissions in any way. It does whatever the OS does by default.

The amc script does have the --def exec option though, which allows you to run your own post-processing commands on newly processed files:

Code: Select all

--def "exec=chmod -R 775 {quote folder} && chown -R admin:administrators {quote folder}"

Re: How about sharing our format expressions?

Posted: 26 Aug 2019, 23:03
by 9000aalborg
Hi guys

Major noob here :-/

I am trying to use nothinghere's script.
And I am too new to the forums to write nothinghere a personal message
But I would use the script, BUT without the period between the words in the name ( for example "in.the.name.of the.rose). I would rather have "In the name of the rose"

Can anyone help me to change that in the movie and tv-episode scripts ?

Thanks.
\Lars (major noob from Denmark)

nothinghere wrote: 13 Jul 2014, 18:57 The ones I am using. Major thanks to Ithiel and Rednoah for some of the parts.

Movies:

Code: Select all

{norm={it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/\u0022/, '\'').replaceAll(/[:|]/, '.').replaceAll(/\?/, '!').replaceAll(/[*\s\.,]+/, '.').replaceAll(/\b[IiVvXx]+\b/, { it.upper() }).replaceAll(/[0-9](th|nd|rd)/, { it.lower() })};isLatin = {java.text.Normalizer.normalize(it, java.text.Normalizer.Form.NFD).replaceAll(/\p{InCombiningDiacriticalMarks}+/, '') ==~ /^\p{InBasicLatin}+$/}; isLatin(info.OriginalName) ? norm(info.OriginalName) : norm(primaryTitle) }.({y}){if(isLatin(info.OriginalName) && info.OriginalName != primaryTitle && !(info.SpokenLanguages[0] ==~ /(sv|da|no)/)) '.'+ norm(primaryTitle) }{'.'+vf}{'.'+source}{fn.contains('3D') || fn.contains('3-D') ? '.3D':''}{'.'+fn.replace(/(?i)\.DC\./, '.directors.cut.').replaceAll(/director\'?s|theatrical|ultimate/,'$0.Cut').matchAll(/UNCENSORED|UNRATED|REMASTERED|EXTENDED|UNCUT|DIRECTOR\'?S.CUT|THEATRICAL.CUT|ULTIMATE.CUT|FINAL.CUT|SPECIAL.EDITION/)*.upperInitial()*.lowerTrail().sort().join('.')}{'.'+fn.matchAll(/PROPER|REPACK/)*.upper().sort().join('.')}{'.'+vc.replace('Microsoft', 'VC-1')}{'.'+ac.replace('MPEG Audio', 'MP3')}{audio.FormatProfile =~ /MA Core/ ? '-HD.MA' : ''}{audio.FormatProfile =~ /ES/ ? '-ES' : ''}{audio.FormatProfile =~ /Pro/ ? '-Pro' : ''}{'.'+af.replace('8 6ch', '7.1').replace('7 6ch', '6.1').replace('6ch', '5.1').replace('3ch', '2.1').replace('2ch','2.0').replace('1ch','1.0')}{def g = c{group}; def m = c{fn.match(/(?:(?<=[-])[a-z0-9]+$)|(?:^[a-z0-9]+(?=[-]))/)}; if(g==null && m!=null) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null && m!=null && m.lower()!=g.lower()) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null) return '-'+g;}
I am using the original title if it the alphabet used is latin based. If the original title is not the same as the english title, and the first spoken language is not Swedish, Norwegian or Danish I will add the English title as part of the filename. This way I can keep the original titles which I prefer, but still have a chance to find them/connect them to the English titles most commonly used when talking to people. The Nordic stuff is because I live there so I know which movies they are.
If you want to use the format but don't want the special hack for Nordic stuff remove the text: "&& !(info.SpokenLanguages[0] ==~ /(sv|da|no)/)"
The audio/movie codecs are hacked a bit to be named by their real/common names instead of the ones defined by mediainfo. I.e. DTS-HD MA, MP3, VC-1 instead of DTS MA Core, MPEG Audio and Microsoft respectively.

Examples:
Kôkaku.Kidôtai.2.0.(2008).Ghost.In.The.Shell.2.0.720p.REPACK.x264.DTS.5.1-timeshift.mkv // Latin characters but added english name
Jagten.(2012).1080p.BluRay.x264.DTS-HD.MA-GRYM.mkv // Original name only, primary language is Danish
My.Sassy.Girl.(2001).720p.BluRay.x264.AC3.5.1-EbP.mkv // Actual name is 엽기적인 그녀, or transliterated to Yeopgijeogin Geunyeo
I would have loved to figure out how to keep the transliterated names, but using {transliterate(info.OriginalTitle)}did not work perfectly, which meant a bunch of titles missed when doing searched.
For my sassy girl the transliteration was something like Yeobgi-jeogin Geunyeo or the like, which is really close, but far away to miss some lookups.

NOTE: I do not care for multipart files so I do not support them. I rip my movies as single files without any splits.



Series is a bit simpler as I only care about the name we get from TheTVDB (I have long since abandoned any hope that they'll change their mind and structure series as they were intended instead of simply how they where broadcasted):

Code: Select all

{n}/{episode.special ? 'Specials' : 'Season '+s}/{norm={it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/\u0022/, '\'').replaceAll(/[:|]/, '.').replaceAll(/\?/, '!').replaceAll(/[*\s\.]+/, '.').replaceAll(/\b[IiVvXx]+\b/, { it.upper() }).replaceAll(/[0-9](th|nd|rd)/, { it.lower() })};norm(n) }.{episode.special ? 'S00E'+special.pad(2) : s00e00}.{norm(t)}{'.'+vf}{'.'+source}{'.'+fn.matchAll(/PROPER|REPACK/)*.upper().sort().join('.')}{'.'+vc.replace('Microsoft', 'VC-1')}{'.'+ac.replace('MPEG Audio', 'MP3')}{audio.FormatProfile =~ /MA Core/ ? '-HD.MA' : ''}{audio.FormatProfile =~ /ES/ ? '-ES' : ''}{audio.FormatProfile =~ /Pro/ ? '-Pro' : ''}{'.'+af.replace('8 6ch', '7.1').replace('7 6ch', '6.1').replace('6ch', '5.1').replace('3ch', '2.1').replace('2ch','2.0').replace('1ch','1.0')}{def g = c{group}; def m = c{fn.match(/(?:(?<=[-])[a-z0-9]+$)|(?:^[a-z0-9]+(?=[-]))/)}; if(g==null && m!=null) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null && m!=null && m.lower()!=g.lower()) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null) return '-'+g;}
NOTE: I do not pad the season numbering (i.e. I use Season 1, Season 2 instead of Season 01, Season 02).
Specials end up in a /Specials folder instead. Same thing for video/audio as movies have.

Examples:
Coupling\Season 1\Coupling.S01E01.Flushed.360p.DVDRip.x264.AAC.mkv
Doctor Horrible's Sing-Along Blog\Season 1\Doctor.Horrible's.Sing-Along.Blog.S01E01.Act.I.1080p.BluRay.x264.DTS-DIMENSION.mkv


If anyone wants to copy my thing entirely the script I use to sort everything is:

Code: Select all

filebot -script fn:amc "x:/downloads" --log-file d:\amc-run.log --output "//nas/" --action move --conflict skip -non-strict --def clean=y --def "movieFormat=Movies/{norm={it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/\u0022/, '\'').replaceAll(/[:|]/, '.').replaceAll(/\?/, '!').replaceAll(/[*\s\.,]+/, '.').replaceAll(/\b[IiVvXx]+\b/, { it.upper() }).replaceAll(/[0-9](th|nd|rd)/, { it.lower() })};isLatin = {java.text.Normalizer.normalize(it, java.text.Normalizer.Form.NFD).replaceAll(/\p{InCombiningDiacriticalMarks}+/, '') ==~ /^\p{InBasicLatin}+$/}; isLatin(info.OriginalName) ? norm(info.OriginalName) : norm(primaryTitle) }.({y}){if(isLatin(info.OriginalName) && info.OriginalName != primaryTitle && !(info.SpokenLanguages[0] ==~ /(sv|da|no)/)) '.'+ norm(primaryTitle) }{'.'+vf}{'.'+source}{fn.contains('3D') || fn.contains('3-D') ? '.3D':''}{'.'+fn.replace(/(?i)\.DC\./, '.directors.cut.').replaceAll(/director\'?s|theatrical|ultimate/,'$0.Cut').matchAll(/UNCENSORED|UNRATED|REMASTERED|EXTENDED|UNCUT|DIRECTOR\'?S.CUT|THEATRICAL.CUT|ULTIMATE.CUT|FINAL.CUT|SPECIAL.EDITION/)*.upperInitial()*.lowerTrail().sort().join('.')}{'.'+fn.matchAll(/PROPER|REPACK/)*.upper().sort().join('.')}{'.'+vc.replace('Microsoft', 'VC-1')}{'.'+ac.replace('MPEG Audio', 'MP3')}{audio.FormatProfile =~ /MA Core/ ? '-HD.MA' : ''}{audio.FormatProfile =~ /ES/ ? '-ES' : ''}{audio.FormatProfile =~ /Pro/ ? '-Pro' : ''}{'.'+af.replace('8 6ch', '7.1').replace('7 6ch', '6.1').replace('6ch', '5.1').replace('3ch', '2.1').replace('2ch','2.0').replace('1ch','1.0')}{def g = c{group}; def m = c{fn.match(/(?:(?<=[-])[a-z0-9]+$)|(?:^[a-z0-9]+(?=[-]))/)}; if(g==null && m!=null) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null && m!=null && m.lower()!=g.lower()) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null) return '-'+g;}" --def "seriesFormat=TV Shows/{n}/{episode.special ? 'Specials' : 'Season '+s}/{norm={it.upperInitial().lowerTrail().replaceTrailingBrackets().replaceAll(/\u0022/, '\'').replaceAll(/[:|]/, '.').replaceAll(/\?/, '!').replaceAll(/[*\s\.]+/, '.').replaceAll(/\b[IiVvXx]+\b/, { it.upper() }).replaceAll(/[0-9](th|nd|rd)/, { it.lower() })};norm(n) }.{episode.special ? 'S00E'+special.pad(2) : s00e00}.{norm(t)}{'.'+vf}{'.'+source}{'.'+fn.matchAll(/PROPER|REPACK/)*.upper().sort().join('.')}{'.'+vc.replace('Microsoft', 'VC-1')}{'.'+ac.replace('MPEG Audio', 'MP3')}{audio.FormatProfile =~ /MA Core/ ? '-HD.MA' : ''}{audio.FormatProfile =~ /ES/ ? '-ES' : ''}{audio.FormatProfile =~ /Pro/ ? '-Pro' : ''}{'.'+af.replace('8 6ch', '7.1').replace('7 6ch', '6.1').replace('6ch', '5.1').replace('3ch', '2.1').replace('2ch','2.0').replace('1ch','1.0')}{def g = c{group}; def m = c{fn.match(/(?:(?<=[-])[a-z0-9]+$)|(?:^[a-z0-9]+(?=[-]))/)}; if(g==null && m!=null) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null && m!=null && m.lower()!=g.lower()) return '-'+m.replace(/^tpz$/, 'TOPAZ'); if(g!=null) return '-'+g;}"
NOTE: Remember to update the paths to your series/movies and downloads.
Paste everything into a file called amc.cmd or something and double click it to run it.

Re: [DOCS] Use --mapper expressions for AniDB / TheTVDB cross-entity matching

Posted: 31 Aug 2019, 11:06
by ZeroByDivide
Any idea when 4.8.6 is coming to the windows store?

Re: [DOCS] Use --mapper expressions for AniDB / TheTVDB cross-entity matching

Posted: 31 Aug 2019, 17:56
by rednoah
The Microsoft Store package will be submitted to the Store on release day. Microsoft will then take a few days to test and publish.

4.8.6 has not been released yet. It's ready when it's ready. Probably sometime in September. You can help speed things up by trying the latest beta and providing feedback.

Re: Choose Java Swing Look-and-Feel (e.g. Dark Mode)

Posted: 02 Sep 2019, 16:58
by ByteShare
rednoah wrote: 25 Feb 2019, 19:23
  1. Open Start Menu and search for Set Environment Variables
  2. Click on New
    Name:

    Code: Select all

    FILEBOT_OPTS
    Value:

    Code: Select all

    -Dnet.filebot.theme=Darcula
  3. Click OK and then relaunch FileBot.

:!: Note that you'll need the latest revision (i.e. r6135 or higher) for any of this to work. The FileBot (platform) launcher is using the Darcula theme by default now as well.
This works great. Any chance of this being an option within the application? Maybe under Preferences?

Re: How about sharing our format expressions?

Posted: 08 Sep 2019, 17:25
by Liquidbings
Things I can't seem to get quite right is I want it to

1. replace x265 or hevc with (X265)
2. replace x264 with (X264)

with what I have there it works sometimes and other times I have x265 and (X265) also on the same line

Re: How about sharing our format expressions?

Posted: 08 Sep 2019, 18:31
by kim
you only add tag if in filename

Code: Select all

	space + call{fn.matches(/(?i).+\bhevc.+?\b.+/) ? '(x265)' : ' '}+
	space + call{fn.matches(/(?i).+\bx265\b.+/) ? '(x265)' : ' '}+
	space + call{fn.matches(/(?i).+\b264\b.+/) ? '(x264)' : ' '}+

try something like this:

Code: Select all

{'(' + any{vc.match(/x26[45]/)}{vc} + ')'}

Re: [DOCS] --apply post-processing features

Posted: 15 Sep 2019, 00:06
by kim
Will this replace scripts ?
any future plans to ?

where is this in the Docs ?
https://www.filebot.net/docs/api/

what does this use to fetch stuff ?

Re: [DOCS] --apply post-processing features

Posted: 15 Sep 2019, 06:07
by rednoah
kim wrote: 15 Sep 2019, 00:06 Will this replace scripts ?
any future plans to ?
Not at all. It's just a variety of frequently requested features that more or less fall under the same umbrella. The future plan is to add selected post-processing features to the GUI and allow users to apply some of them as part of the rename process.

kim wrote: 15 Sep 2019, 00:06 where is this in the Docs ?
https://www.filebot.net/docs/api/
A public API is not planned. It doesn't do anything that isn't already implemented in the htpc.groovy script or otherwise commonly handled via -exec calls.

:idea: The --apply import metadata date url and --apply qnap syno options might be of some benefit to amc script users, though existing users probably already have custom solutions.

kim wrote: 15 Sep 2019, 00:06 what does this use to fetch stuff ?
It's doing more or less the same as the artwork.* scripts, using TheMovieDB / TheTVDB / FanartTV as the source of image files.

Re: [User Study] Take a screen recording and earn yourself a free license

Posted: 26 Sep 2019, 20:08
by Antz123
So... My prime uses has been anime renaming, rarely its a TV series or some Movies.

My feedback

1) places like Horrible subs which I use for anime, many times filebot doesn't pick the names. Reason could be two fold, a) many anime series names are in Japanese, out of those some names are easy to pick may be ones like Naruto, Megalobox, however longer names e.g. "Dungeon ni deai motomeru no wa machigatteiru darou ka" or a name that mixed up could be an issue. There I use things like BulkFileRenamer to rename bit of names of a batch of files to immediately convert the Japanese name of all files to English version. And then Filebot picks up the English name of the anime series quickly. So some bulk renaming option that could rename bits of batch file collection would be a great help. B) many of anime uploaded would put their name in front e.g. At horriblesubs all files are called (horriblesubs)Naruto - 245 (720p).mkv these sort of files at times also need BulkFile. It just helps me remove first 14 spaces of filenames and that solves the issue and FileBot picks it quickly and renaming entire batch is perfect.

2) same happens on tv/movie or music. So I use BulkFile and FileBot in tandem for things I wish to keep. For Music mp3tags or MediaMonkey I prefer more as their metadata I find much more easily. So if more metadate like how those two use it, can make FileBot for me 1 stop for all three.

3) this is more of a feedback the episode list part actually at times has picked up some things which the automatic matching doesn't. However, I explored that bit quite late, almost for the first time this year.

4) I don't know much of this is possible, but if FileBot has an extension like a library of all entertainment that person has over the Hard disks, could it even play/stream/connect to smart devices as it eliminates many other softwares that we all keep jumping to/from.

Hope this somewhere helps. Thanks.

Re: [User Study] Take a screen recording and earn yourself a free license

Posted: 27 Sep 2019, 03:35
by rednoah
1a.
FileBot does support file-based renaming so you can do any kind of pre-processing even if the files don't match any databases:
viewtopic.php?t=2072


1b.
FileBot will generally ignore group names, especially when in parenthesis. So that should work.

:idea: In any case, if you find file paths that don't work as expected, just paste them here in the forums so I can have a look and see what's happening exactly. More often than not, things can be fine-tuned to make things work.


2.
You should be able to access any ID3 tags generically via the MediaInfo bindings:
viewtopic.php?t=4285

:idea: If it's more or less easy to use than other 3rd party software that I cannot say. But if you're missing any bindings, just post here in the forums so we can have a look.


3.
IDK. I'd need to see screenshots to have a guess at what's happening. If it's a reproducible problem, please post the file paths. You can copy & paste debug info from the Rename panel by pressing the F7 key.


4.
FileBot can certainly copy selected files to selected media devices, but any capability that resembles an DLNA media server is not currently planned.

:idea: 3rd party media server plug-ins are conceivable though. Though, there's only my Plex FileBot Xattr Scanner plug-in at this point AFAIK:
viewtopic.php?t=10969

Re: [PLEX] FileBot Xattr Metadata Scanners & Plug-ins

Posted: 04 Oct 2019, 19:53
by spetrillo
Do the PLug-ins and Scanners folders go into the Plug-in directory on the PMS?

Re: [PLEX] FileBot Xattr Metadata Scanners & Plug-ins

Posted: 04 Oct 2019, 20:33
by rednoah
They go into this directory:
https://support.plex.tv/articles/202915 ... y-located/

Plex might pick them up from different locations though. Maybe your plug-in directory will work too.