Remove em dashes from the remaining English content

This commit is contained in:
Djeex
2026-08-31 23:39:19 +02:00
parent 4090203dc4
commit 9abee89478
15 changed files with 37 additions and 37 deletions
@@ -1,6 +1,6 @@
---
title: Nvidia Stock Bot
description: A Python bot that monitors GPU stock availability in real time and sends Discord alerts built during the RTX 5000 series launch shortage.
description: A Python bot that monitors GPU stock availability in real time and sends Discord alerts, built during the RTX 5000 series launch shortage.
---
@@ -11,7 +11,7 @@ For the past four years, the electronics hardware shortage has been relentless.
Four years later and with 5,000 members on the server, the RTX 5000 series is being released. Yet, no working stock bot seems to exist. Not to mention a certain “influencer” who charges users for access to a bot that doesnt even work. He manually copies alerts from other servers like ours, which have already solved the issue.
Anyway, eager to get an RTX 5090 for my AI-dedicated machine, I decided it was time to dive into Pythonwith a little help from ChatGPT. Along with another member, KevOut, who helped guide me through the APIs and initial architecture, I ended up building a clean and functional bot that sends different kinds of Discord alertsall deployable in a simple Docker container.
Anyway, eager to get an RTX 5090 for my AI-dedicated machine, I decided it was time to dive into Python, with a little help from ChatGPT. Along with another member, KevOut, who helped guide me through the APIs and initial architecture, I ended up building a clean and functional bot that sends different kinds of Discord alerts, all deployable in a simple Docker container.
After many setbacks, I went from this:
@@ -7,11 +7,11 @@ description: A Python script to sync AdGuard Home CIDR allowlists automatically,
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
# 🤖 Adguard CIDRE Sync
Adguard Home is a fantastic solution for DNS-level ad blocking and rewriting requestsperfect for removing ISP DNS trackers or intrusive ads.
Adguard Home is a fantastic solution for DNS-level ad blocking and rewriting requests, perfect for removing ISP DNS trackers or intrusive ads.
It works great locally, but if you want all your devices (even on the go) to benefit, youll need to expose Adguard to the internet. Unfortunately, that means anyone can use it, potentially overloading your €1/month remote VPS.
Adguard allows whitelisting or blacklisting clients. The problem? To whitelist a client, you need their IPbut for mobile phones, that IP changes often. Instead of trying to whitelist ever-changing IPs, the better approach is to block broader IP ranges by region.
Adguard allows whitelisting or blacklisting clients. The problem? To whitelist a client, you need their IP, but for mobile phones, that IP changes often. Instead of trying to whitelist ever-changing IPs, the better approach is to block broader IP ranges by region.
CIDRE is a tool that syncs geo-targeted IP ranges with firewalls. Instead of running CIDRE with a full firewall stack on the remote server, I figured I could just import those regularly updated IP ranges into Adguards blocklist.
+5 -5
View File
@@ -1,6 +1,6 @@
---
title: Lumeex
description: Lumeex is a static photo gallery site generator built with Python minimalist, lightweight, and fully customizable without a CMS.
description: Lumeex is a static photo gallery site generator built with Python, minimalist, lightweight, and fully customizable without a CMS.
---
@@ -17,13 +17,13 @@ description: Lumeex is a static photo gallery site generator built with Python
---
Amateur photographer that I am, I spent several weeks looking for a framework with a photo gallery that could outshine Instagram. I wanted something that showcased the photos rather than the author, and that made every visit unique by loading the images in random orderwhile still allowing filtering and sorting by tag or combinations of tags.
Amateur photographer that I am, I spent several weeks looking for a framework with a photo gallery that could outshine Instagram. I wanted something that showcased the photos rather than the author, and that made every visit unique by loading the images in random order, while still allowing filtering and sorting by tag or combinations of tags.
In the end, I found nothing that did exactly what I wanted. And when something came close, it was always through heavy, bloated CMS platforms. So I decided to make a static site by hand, the old-school way, with Notepad++. Being fairly comfortable with HTML/CSS and a bit of JavaScript, I quickly came up with something nice during my vacation, between beach sessions. After all, a good craftsman should have good toolsand theres no better tool than one you make yourself.
In the end, I found nothing that did exactly what I wanted. And when something came close, it was always through heavy, bloated CMS platforms. So I decided to make a static site by hand, the old-school way, with Notepad++. Being fairly comfortable with HTML/CSS and a bit of JavaScript, I quickly came up with something nice during my vacation, between beach sessions. After all, a good craftsman should have good tools, and theres no better tool than one you make yourself.
Then I thought it might be a good idea to automate certain taskslike generating favicon formats, resizing and converting images, creating the gallery automatically instead of entering everything by hand, and generating `robots.txt` and `sitemap` files… so I turned back to Python.
Then I thought it might be a good idea to automate certain tasks, like generating favicon formats, resizing and converting images, creating the gallery automatically instead of entering everything by hand, and generating `robots.txt` and `sitemap` files… so I turned back to Python.
Eventually, after getting good results, I figured I might as well go all the way: build a complete framework for generating a static site photo gallery, where all you need to do is fill in your sites information in a config file and tweak the visuals a bitwithout touching the code.
Eventually, after getting good results, I figured I might as well go all the way: build a complete framework for generating a static site photo gallery, where all you need to do is fill in your sites information in a config file and tweak the visuals a bit, without touching the code.
Thats how **Lum[eex]{style="color: #1ad6ff"}** was born.
@@ -9,7 +9,7 @@ description: A bash script to detect and fix duplicate media files in Sonarr and
Six months after downloading terabytes of media, I realized that Sonarr and Radarr were copying them into my Plex library instead of creating hardlinks. This happens due to a counterintuitive mechanism: if you mount multiple folders in Sonarr/Radarr, it sees them as different filesystems and thus cannot create hardlinks. Thats why you should mount only one parent folder containing all child folders (like `downloads`, `movies`, `tvseries` inside a `media` parent folder).
So I restructured my directories, manually updated every path in Qbittorrent, Plex, and others. The last challenge was finding a way to detect existing duplicates, delete them, and automatically create hardlinks insteadto save space.
So I restructured my directories, manually updated every path in Qbittorrent, Plex, and others. The last challenge was finding a way to detect existing duplicates, delete them, and automatically create hardlinks instead, to save space.
My directory structure:
@@ -37,7 +37,7 @@ Yes, I asked ChatGPT and Qwen3 (which I host on a dedicated AI machine). Natural
In the end, I only needed to find `.mkv` files, and duplicates have the exact same name as the originals, which simplifies things a lot. A simple Bash script would do the job.
Spare you the endless Q&A with ChatGPTI was disappointed. Qwen3 was much cleaner. ChatGPT kept pushing awk-based solutions, which fail on paths with spaces. With Qwens help and dropping awk, the results improved significantly.
Spare you the endless Q&A with ChatGPT, I was disappointed. Qwen3 was much cleaner. ChatGPT kept pushing awk-based solutions, which fail on paths with spaces. With Qwens help and dropping awk, the results improved significantly.
To test, I first asked for a script that only lists and compares:
@@ -83,9 +83,9 @@ With `awk`, it wouldve stopped at `/media/seedbox/sonarr/Serie`. Im far fr
Once I verified the output, I asked for a complete script: compare, delete duplicates, create hardlinks.
Again, ChatGPT disappointed. Despite my requests, it created hardlinks *before* deleting the duplicateseffectively linking and then deleting the link (though the original is kept). Not helpful.
Again, ChatGPT disappointed. Despite my requests, it created hardlinks *before* deleting the duplicates, effectively linking and then deleting the link (though the original is kept). Not helpful.
Quick stopover to Qwen3, RTX 5090 in overdrive, and bammuch better result. Yes, it kept ChatGPT-style emojis, but here it is:
Quick stopover to Qwen3, RTX 5090 in overdrive, and bam, much better result. Yes, it kept ChatGPT-style emojis, but here it is:
```bash [Terminal]
#!/bin/bash
+1 -1
View File
@@ -33,7 +33,7 @@ The installer also lets you configure various parameters:
| `DISCORD_WEBHOOK` | Discord webhook URL for notifications | _Required_ |
It also runs another script that configures **logrotate** with the parameters defined above.
Finally, the installer can even be executed directly via a simple `curl` command followed by one last setup script perfect for the laziest of us.
Finally, the installer can even be executed directly via a simple `curl` command followed by one last setup script, perfect for the laziest of us.
I also had to handle several tricky cases: running as root without sudo, using sudo directly, running as a non-sudo user, missing dependencies, permission issues, file creation errors, disk data reading errors, and more.
@@ -1,6 +1,6 @@
---
title: Backrest Docker Stop
description: A bash script that stops Docker containers before a Backrest backup runs and restarts them after ensuring safe database backups without complex dumps.
description: A bash script that stops Docker containers before a Backrest backup runs and restarts them after, ensuring safe database backups without complex dumps.
---