Skip to content

Instantly share code, notes, and snippets.

View 100nandoo's full-sized avatar
👨‍💻
Try to catch up new changes on Android world

Fernando F. H. 100nandoo

👨‍💻
Try to catch up new changes on Android world
View GitHub Profile
@100nandoo
100nandoo / droidcon-fira-sans-clean.user.js
Created July 12, 2025 12:12
Tampermonkey script to apply Fira Sans with Inter fallback font on droidcon.com. Improves text readability by using softer color, reduced spacing, and consistent line height.
// ==UserScript==
// @name Droidcon Fira Sans Clean (Softer Text)
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Fira Sans primary, Inter fallback, softer color and reduced spacing
// @match https://www.droidcon.com/*
// @grant none
// ==/UserScript==
(function() {
@100nandoo
100nandoo / youtube-sort-by-views.user.js
Last active July 19, 2025 08:22
Add a simple "Most Viewed" button to sort videos by view count
// ==UserScript==
// @name YouTube Channel Videos - Simple Most Viewed Button
// @namespace http://tampermonkey.net/
// @version 1.4
// @description Add a simple "Most Viewed" button to sort videos by view count
// @match https://www.youtube.com/*/videos
// @grant none
// ==/UserScript==
(function() {
@100nandoo
100nandoo / filter-activesg-gym.user.js
Last active March 21, 2025 04:16
Tampermonkey script to filter and display only a specific ActiveSG gym by name on the gym capacity page.
// ==UserScript==
// @name Filter Specific Gym on ActiveSG
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Show only the specified gym in the gym list
// @author 100nandoo
// @match *://*.activesg.gov.sg/gym-capacity*
// @grant none
// ==/UserScript==
@100nandoo
100nandoo / upgrade.ps1
Last active March 7, 2025 01:53
Silent script to upgrade all installed packages from Winget without prompts.
winget upgrade --all --source winget --silent --accept-package-agreements --accept-source-agreements
@100nandoo
100nandoo / yt-dlp-mobile
Created February 8, 2025 14:23
download 1080p youtube video using yt-dlp including subtitle and chapter timing
#!/bin/zsh
# Check if a URL is provided
if [[ -z "$1" ]]; then
echo "Usage: $0 <video_url>"
exit 1
fi
VIDEO_URL="$1"
@100nandoo
100nandoo / yt-dlp-sub.sh
Created October 19, 2024 13:15
This Bash script automates the process of downloading YouTube auto-generated subtitles, cleaning them up (removing timestamps and tags), and saving them in a text file with the format title-uploader.txt. It leverages yt-dlp for downloading subtitles and sed for text processing.
#!/bin/bash
# HOW TO INSTALL
# 1. put it on ~/scripts/yt-dlp-sub
# 2. add this into .zshrc
# export PATH="$HOME/scripts:$PATH"
# 3. reload zsh
# Check if a URL is provided
if [ -z "$1" ]; then
echo "Usage: yt-dlp-sub <YouTube_URL>"
@100nandoo
100nandoo / best_1080p.sh
Last active August 19, 2024 03:57
Youtube dlp download 1080p video with subs embedded
#!/bin/sh
#
# Inspired by TheFrenchGhosty's Ultimate YouTube-DL Scripts Collection
# with some additional changes
#
# I recommend to add alias on .zshrc or .bashrc
# alias yt-download='sh /path/to/script/best_1080p.sh'
# Output folder
OUTPUT_FOLDER="/Users/username/Downloads"
@100nandoo
100nandoo / audiobookbay.py
Last active June 11, 2024 02:28
qbittorrent audiobookbay plugin
# VERSION: 0.2
# AUTHORS: nKlido
# LICENSING INFORMATION
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
@100nandoo
100nandoo / shopee-sort.js
Last active December 4, 2023 06:51
Sort Shopee by top sales of all times
// ==UserScript==
// @name Sort
// @namespace Violentmonkey Scripts
// @match https://shopee.sg/*
// @grant none
// @version 0.1
// @author 100nandoo
// @run-at document-end
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/dom@1
// @require https://cdn.jsdelivr.net/npm/@violentmonkey/dom@2
// Change the media parameter with your own data class
suspend fun TransferObserver.await(media: Media): Boolean =
suspendCancellableCoroutine { cont ->
this.setTransferListener(object : TransferListener {
override fun onProgressChanged(id: Int, bytesCurrent: Long, bytesTotal: Long) {
val progress = ((bytesCurrent / bytesTotal) * 100).toInt()
media.uploadProgress = progress
media.progressListener?.notifyProgressChanged()
}