FileBot 4.7.7 – No License Key Needed

Hey, movie lovers! Are you tired of spending hours organizing your movie collection, renaming files, finding subtitles, and downloading artwork? If so, I have some great news for you. FileBot, the ultimate tool for media management v4.7.7, does not require a license!

FileBot v4.7.7 is software that can automatically match your files to the correct movie titles, genres, ratings, and more. You can also use it to create custom playlists, rename files according to your preferences, and fetch subtitles from various sources. FileBot v4.7.7 works with any format and any device, so you can enjoy your movies on your PC, TV, smartphone, or tablet.

There is one catch, though. FileBot v4.7.7 only works with movies, not TV shows. If you want to use FileBot for your TV series, you will need to get a license for the latest version. You can get a license for a one-time fee of $48 or a yearly subscription of $6.

But if you are only interested in movies, FileBot v4.7.7 is the perfect solution for you. You can download FileBot and Java below. Just make sure you have Java installed on your system before running it.

Files

NLog Logging for .NET – nlog.config file

In this blog post, I will show you how to create a nlog config file for logging messages in your .NET applications. Nlog is a popular and flexible logging framework that allows you to write logs to various targets, such as files, databases, email, console, etc. Nlog also supports structured logging, which is a way of formatting log messages with key-value pairs that can be easily parsed and analyzed.

To use nlog in your project, you need to install the NLog NuGet package and create a nlog.config file in the root folder of your project. Here is my default nlog.config file I use in all my projects:

<?xml version="1.0" encoding="utf-8" ?>
<!--https://github.com/NLog/NLog/wiki/Configuration-file-->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogFile="${basedir}/logs/log-internal.log" throwConfigExceptions="true" internalLogLevel="Off">
	<variable name='globalLevel' value='debug'/>
	<variable name='' value=''/>
	<targets async="true">
		<!--Blackhole Target-->
		<target xsi:type="Null" name="blackhole" />

		<!--Visual Studio Debug Console Target-->
		<target name="debugger" xsi:type="Debugger" layout="${level:uppercase=true:padding=-5}|${threadid:padding=-2}|${callsite}|${message}" />

		<!--Console Target-->
		<target xsi:type="Console" name="lifetimeConsole" layout="${MicrosoftConsoleLayout}" />

		<!--Color Console Target-->
		<target xsi:type="ColoredConsole" name="coloredConsole" layout="${MicrosoftConsoleLayout}" useDefaultRowHighlightingRules="true">
			<highlight-row condition="level == LogLevel.Trace" foregroundColor="DarkGray" />
			<highlight-row condition="level == LogLevel.Debug" foregroundColor="Yellow" />
			<highlight-row condition="level == LogLevel.Info" foregroundColor="White" />
			<highlight-row condition="level == LogLevel.Warn" foregroundColor="Magenta" />
			<highlight-row condition="level == LogLevel.Error" foregroundColor="Red" />
			<highlight-row condition="level == LogLevel.Fatal" foregroundColor="Red" backgroundColor="White" />
		</target>

		<!--Json File Target-->
		<target xsi:type="File"
		        name="jsonFile"
		        fileName="${basedir}/logs/nlog-json-${shortdate}.log"
		        maxArchiveFiles="5" archiveNumbering="Sequence" archiveEvery="Day">
			<layout xsi:type="MicrosoftConsoleJsonLayout" includeScopes="true" />
		</target>

		<!-- File Target for all log messages with basic details -->
		<target xsi:type="File"
		        name="allfile"
		        fileName="${basedir}/logs/nlog-all-${shortdate}.log"
		        maxArchiveFiles="5"
		        layout="${longdate}|${event-properties:item=EventId:whenEmpty=0}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}" />

		<!-- File Target for own log messages with extra web details using some ASP.NET core renderers -->
		<target xsi:type="File"
		        name="ownFile-web"
		        fileName="${basedir}/logs/nlog-webapp-${shortdate}.log"
		        maxArchiveFiles="5"
		        layout="${longdate}|${event-properties:item=EventId:whenEmpty=0}|${level:uppercase=true}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|${callsite}" />
	</targets>

	<rules>
		<!--All logs to 'blackhole' -->
		<logger name="*" minlevel="Trace" writeTo="blackhole" final="true" enabled="false" />
		<!--All logs at minlevel+ -->
		<logger name="*" minlevel="${globalLevel}" writeTo="allfile, jsonFile" enabled="false" />

		<!--Log Hosting Liftime-->
		<logger name="Microsoft.Hosting.Lifetime" minlevel="Info" writeTo="coloredConsole, debugger" enabled="true" />
		<logger name="Microsoft.Hosting.Lifetime" minlevel="Info" writeTo="ownFile-web" enabled="true" />

		<!--Skip non-critical Microsoft logs-->
		<logger name="Microsoft.*" maxlevel="Info" final="true" enabled="true" />
		<logger name="System.Net.Http.*" maxlevel="Info" final="true" enabled="true" />

		<!--Application logs-->
		<logger name="*" minlevel="${globalLevel}" writeTo="coloredConsole, debugger" enabled="true" />
		<logger name="*" minlevel="${globalLevel}" writeTo="ownFile-web" enabled="true" />
	</rules>
</nlog>

ASP.net Core libman.json file

This is my default libman.json file I use for my asp.net core websites.

{
  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    {
      "library": "jquery@3.5.1",
      "files": [
        "jquery.js",
        "jquery.min.js",
        "jquery.min.map"
      ],
      "destination": "wwwroot/lib/jquery/dist/"
    },
    {
      "library": "jquery-ajax-unobtrusive@3.2.6",
      "files": [
        "jquery.unobtrusive-ajax.js",
        "jquery.unobtrusive-ajax.min.js"
      ],
      "destination": "wwwroot/lib/jquery-unobtrusive/"
    },
    {
      "library": "bootstrap@5.2.3",
      "files": [
        "js/bootstrap.js",
        "js/bootstrap.js.map",
        "js/bootstrap.min.js",
        "js/bootstrap.min.js.map",
        "js/bootstrap.bundle.js",
        "js/bootstrap.bundle.js.map",
        "js/bootstrap.bundle.min.js",
        "js/bootstrap.bundle.min.js.map",
        "js/bootstrap.esm.js",
        "js/bootstrap.esm.js.map",
        "js/bootstrap.esm.min.js",
        "js/bootstrap.esm.min.js.map",

        "css/bootstrap.css",
        "css/bootstrap.css.map",
        "css/bootstrap.min.css",
        "css/bootstrap.min.css.map",
        "css/bootstrap.rtl.css",
        "css/bootstrap.rtl.css.map",
        "css/bootstrap.rtl.min.css",
        "css/bootstrap.rtl.min.css.map",

        "css/bootstrap-grid.css",
        "css/bootstrap-grid.css.map",
        "css/bootstrap-grid.min.css",
        "css/bootstrap-grid.min.css.map",
        "css/bootstrap-grid.rtl.css",
        "css/bootstrap-grid.rtl.css.map",
        "css/bootstrap-grid.rtl.min.css",
        "css/bootstrap-grid.rtl.min.css.map",

        "css/bootstrap-reboot.css",
        "css/bootstrap-reboot.css.map",
        "css/bootstrap-reboot.min.css",
        "css/bootstrap-reboot.min.css.map",
        "css/bootstrap-reboot.rtl.css",
        "css/bootstrap-reboot.rtl.css.map",
        "css/bootstrap-reboot.rtl.min.css",
        "css/bootstrap-reboot.rtl.min.css.map",

        "css/bootstrap-utilities.css",
        "css/bootstrap-utilities.css.map",
        "css/bootstrap-utilities.min.css",
        "css/bootstrap-utilities.min.css.map",
        "css/bootstrap-utilities.rtl.css",
        "css/bootstrap-utilities.rtl.css.map",
        "css/bootstrap-utilities.rtl.min.css",
        "css/bootstrap-utilities.rtl.min.css.map"

      ],
      "destination": "wwwroot/lib/bootstrap/dist/"
    },
    {
      "library": "bootstrap-icons@1.10.3",
      "destination": "wwwroot/lib/bootstrap-icons"
    },
    {
      "library": "amcharts4@4.10.32",
      "files": [
        "themes/amcharts.js",
        "themes/amcharts.min.js",
        "themes/amcharts.js.map"
      ],
      "destination": "wwwroot/lib/amcharts/"
    },
    {
      "library": "datatables.net-bs5@1.13.1",
      "files": [
        "dataTables.bootstrap5.css",
        "dataTables.bootstrap5.min.css",
        "dataTables.bootstrap5.js",
        "dataTables.bootstrap5.min.js"
      ],
      "destination": "wwwroot/lib/datatables"
    },
    {
      "library": "jsoneditor@9.10.0",
      "files": [
        "jsoneditor-minimalist.js",
        "jsoneditor-minimalist.map",
        "jsoneditor-minimalist.min.js",
        "jsoneditor.css",
        "jsoneditor.min.css",
        "jsoneditor.js",
        "jsoneditor.min.js",
        "jsoneditor.map",
        "img/jsoneditor-icons.svg"
      ],
      "destination": "wwwroot/lib/jsoneditor"
    },
    {
      "library": "microsoft-signalr@7.0.3",
      "destination": "wwwroot/lib/signalr"
    },
    {
      "library": "tinymce@6.3.2",
      "destination": "wwwroot/lib/tinymce"
    }
  ]
}

Unobtrusive Ajax in ASP.NET Core

Migrating an existing ASP.NET MVC project to ASP.NET Core MVC, and there are no ajax tag helpers?

The tag helpers have been replaced with data-ajax-*** attributes.

To use ajax, you’ll need to reference jquery and jquery.unobtrusive-ajax scripts, you can download and install it via npm, libman, etc. Here is a CDN link (https://cdnjs.com/libraries/jquery-ajax-unobtrusive).

Once you install ajax, add a reference in _layout.cshtml, for example:

<script src="~/lib/jquery-unobtrusive/jquery.unobtrusive-ajax.min.js"></script>

or

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ajax-unobtrusive/3.2.6/jquery.unobtrusive-ajax.min.js"></script>

Here are the @Ajax tag helpers and their html attributes equivalents.

Ajax OptionHTML attribute
Confirmdata-ajax-confirm
HttpMethoddata-ajax-method
InsertionModedata-ajax-mode
LoadingElementDurationdata-ajax-loading-duration
LoadingElementIddata-ajax-loading
OnBegindata-ajax-begin
OnCompletedata-ajax-complete
OnFailuredata-ajax-failure
OnSuccessdata-ajax-success
UpdateTargetIddata-ajax-update
Urldata-ajax-url