- generate palette
ffmpeg -y -i video.webm -vf palettegen=max_colors=64 palette.png
- convert
ffmpeg -y -i video.webm -i palette.png -filter_complex paletteuse=dither=bayer:bayer_scale=1 -r 15 output.gif
| # Creates a binary sensor with the name and type of the currently playing item as attributes | |
| # Replace <SERVER_ADDRESS>, <API_KEY> and <USERNAME> | |
| - sensor: | |
| name: "Jellyfin NowPlaying" | |
| scan_interval: 30 | |
| command: >- | |
| curl http://<SERVER_ADDRESS>/jellyfin/Sessions\?ApiKey\=<API_KEY> | jq ' | |
| (.[] | select(.UserName == "<USERNAME>") | select(.NowPlayingItem) | select(.PlayState.IsPaused == false)) // {} | |
| | { |
| import { GUI, Controller } from 'lil-gui'; | |
| export class TextController extends Controller { | |
| private $button: HTMLButtonElement; | |
| private $text: HTMLTextAreaElement; | |
| constructor(parent: GUI, object: object, property: string, rows: number = 4) { | |
| super(parent, object, property, 'textarea'); |
| import { GUI, Controller } from 'lil-gui'; | |
| import '@eastdesire/jscolor'; | |
| export class ColorController extends Controller { | |
| private $input: HTMLInputElement; | |
| private picker: any; | |
| constructor(parent: GUI, object: object, property: string, alpha: boolean | 'auto' = 'auto') { | |
| super(parent, object, property, 'color'); |
| #include <GUIConstantsEx.au3> | |
| #include <StaticConstants.au3> | |
| #include <WindowsConstants.au3> | |
| #include <Misc.au3> | |
| $exeFile = "C:\Program Files\qBittorrent\qbittorrent.exe" | |
| Opt("TrayIconHide", 1) | |
| GUICreate("qBitorrent", 200, 75, -1, -1, BitOR($WS_SYSMENU, $WS_POPUP, $WS_CAPTION)) | |
| GUISetFont(12, 400, 0, "Segoe UI") |
ffmpeg -y -i video.webm -vf palettegen=max_colors=64 palette.png
ffmpeg -y -i video.webm -i palette.png -filter_complex paletteuse=dither=bayer:bayer_scale=1 -r 15 output.gif
ffmpeg -i video.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr -qscale:v 2 still-%02d.jpg
| // 1. Open the browser developper console on the network tab | |
| // 2. Start the video | |
| // 3. In the dev tab, locate the load of the "master.json" file, copy its full URL | |
| // 4. Run: node vimeo-downloader.js "<URL>" | |
| // 5. Combine the m4v and m4a files with mkvmerge | |
| const fs = require('fs'); | |
| const url = require('url'); | |
| const https = require('https'); |
For each directory in content it generates or updates the _index.md file with the list of all JPG files in the directory.
If _index.md already exists, it's metadata will be kept, the rest is overwritten.
If the metadata of the _index.md file contains manual: true, the directory is ignored.
The thumbnails must be named by the original name prefixed by _th_.
| #ifndef QCHECKLIST | |
| #define QCHECKLIST | |
| #include <QWidget> | |
| #include <QComboBox> | |
| #include <QStandardItemModel> | |
| #include <QLineEdit> | |
| #include <QEvent> | |
| #include <QStyledItemDelegate> | |
| #include <QListView> |