Update the scripts to be more "correct"

This commit is contained in:
Gabriel Arazas 2021-03-29 20:55:58 +08:00
parent 4e8f036b73
commit 5017a6725c
6 changed files with 113 additions and 194 deletions

View File

@ -1,7 +1,10 @@
#!/usr/bin/env osh
#!/usr/bin/env oil
# Create an interface for select Unicode characters with rofi and copy it into the clipboard.
# The characters are extracted from the Unicode Character Database (https://www.unicode.org/ucd/).
# It requires a tag name or an XPath similarly used for Python's `xml.etree.ElementTree.Element.findall`.
# See the following link for more information.
# (https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.findall)
# Dependencies:
# * Oil shell
@ -11,8 +14,9 @@
# * awk
# Set to use Oil features and strictness.
shopt --set strict:all oil:all
shopt --set strict:all
var QUERY = ARGV[0]
var UCD_VERSION = "13.0.0"
var UCD_XML_URL = "https://www.unicode.org/Public/$UCD_VERSION/ucdxml/ucd.nounihan.grouped.zip"
var CACHE = ${XDG_CACHE_DIR:-$HOME/.cache/unicode-character-database}
@ -26,7 +30,7 @@ if test ! -f $CACHE/ucd.zip {
# Compared to the other variations, it is only ~6MB compared to ~55MB for the flat variation.
# Also, it requires more conditional handling than a simple shell script at this point.
# I could've made this script entirely in Python but I want to see what Oil shell is capable of.
python <<CODE | rofi -dmenu -p "Choose mathematical character" | awk '{ print $1 }' | xclip -selection clipboard
python <<CODE | rofi -dmenu -p "Choose character" | awk '{ print $1 }' | xclip -selection clipboard
import xml.etree.ElementTree as ET
root = ET.fromstring('''$(unzip -p $CACHE/ucd.zip ucd.nounihan.grouped.xml)''')
@ -41,7 +45,7 @@ def print_char(element):
for child in list(element):
print_char(child)
math_nodes = root.findall('./{http://www.unicode.org/ns/2003/ucd/1.0}repertoire//*[@Math="Y"]')
for point in math_nodes:
valid_nodes = root.findall('${QUERY}')
for point in valid_nodes:
print_char(point)
CODE

View File

@ -1,6 +1,6 @@
#!/usr/bin/env osh
#!/usr/bin/env oil
# Convert a Newpipe database (assuming it was exported within the app) into OPML.
# Convert a Newpipe database (assuming it was exported within the app) into OPML v2.
# Dependencies:
# * osh (oil shell) v0.8.5
@ -8,19 +8,25 @@
# * unzip
# * ripgrep v12.1.1
# * jq
# * file
# Use the current Oil features in strict mode.
# This also enables usage of the syntax.
shopt -s strict:all oil:all
shopt -s strict:all
var FILENAME = $1
# Testing if the given file is a zip file.
file $FILENAME | rg "Zip archive data" --quiet || exit 1
var channel_id_eggex = / 'https://www.youtube.com/channel/' (word) /
var NEWPIPE_DB = "newpipe.db"
var TEMP_FOLDER_NAME = "newpipe"
var channel_id_eggex = / 'https://www.youtube.com/channel/' (word) /
var NEWPIPE_DB_QUERY = "SELECT name, url, service_id, group_concat(tag, ',') AS tags FROM (SELECT subscriptions.name, subscriptions.url, subscriptions.service_id, '/' || feed_group.name AS tag
FROM subscriptions
LEFT JOIN feed_group_subscription_join AS subs_join
LEFT JOIN feed_group
ON subs_join.subscription_id = subscriptions.uid AND feed_group.uid = subs_join.group_id) GROUP BY name"
# Print the beginning of the template.
cat <<OPML
@ -34,23 +40,63 @@ cat <<OPML
<body>
OPML
# Simply prints an `<outline>` element formatted approriately for the resulting output.
# Don't mind how it is printed right now. :)
proc print-outline(title, xml_url, html_url, tags = "") {
printf ' <outline type="rss" xmlUrl="%s" htmlUrl="%s" title="%s"' $xml_url $html_url $title
if test -n $tags {
printf ' category="%s"' $tags
}
printf '/>\n'
}
# Print the channels in the OPML body.
# This only occurs if the given file does have a Newpipe database.
if unzip -l $FILENAME | rg --quiet $NEWPIPE_DB {
mkdir $TEMP_FOLDER_NAME && unzip -q -u $FILENAME -d $TEMP_FOLDER_NAME
trap "rm --recursive $TEMP_FOLDER_NAME" EXIT
while read channel {
sqlite3 "${TEMP_FOLDER_NAME}/${NEWPIPE_DB}" "${NEWPIPE_DB_QUERY}" --csv --header \
| dasel select --parser csv --multiple --selector '.[*]' --compact --write json \
| while read channel {
echo $channel | json read :channel
setvar name = channel['name']
setvar url = channel['url']
setvar service_id = channel['service_id']
setvar tags = channel['tags']
# The channel ID should only match YouTube channel URLs.
setvar channel_id = $(echo $url | sed --quiet --regexp-extended "s|$channel_id_eggex|\\1|p")
# The `service_id` column indicates where the channel came from the selection of platforms PeerTube offers.
# Since the way to handle each platform differs to get the required data, we're throwing them in a case switch.
case $service_id {
# YouTube
'0') {
setvar channel_id = $(echo $url | sed --quiet --regexp-extended "s|$channel_id_eggex|\\1|p")
setvar xml_url = "https://www.youtube.com/feeds/videos.xml?channel_id=${channel_id}"
}
;;
if test -z $channel_id { continue }
# Peertube instances
'3') {
# This naive solution just goes through the domain with the assumption that the database is exported properly from the app and not tampered with.
# It can go into an infinite loop so take caution for now.
setvar domain = $(echo $url | cut --delimiter='/' --fields='-3')
setvar _domain_part_index = 4
until (Bool($(curl --silent "$domain/api/v1/config/about" | dasel --parser json --selector ".instance.name"))) {
setvar domain = $(echo $url | cut --delimiter='/' --fields="-$_domain_part_index")
setvar _domain_part_index = Int($_domain_part_index) + 1
}
echo " <outline type=\"rss\" xmlUrl=\"https://www.youtube.com/feeds/videos.xml?channel_id=$channel_id\" htmlUrl=\"$url\" title=\"$name\"/>"
} <<< $(sqlite3 "$TEMP_FOLDER_NAME/$NEWPIPE_DB" "SELECT name, url FROM subscriptions" --csv --header | dasel select --parser csv --multiple --selector '.[*]' --compact --write json)
setvar channel_url = $(echo $url | cut --delimiter='/' --fields='4-')
setvar feed_type = $(echo $channel_url | rg "video-channels" --quiet && echo "videoChannelId" || echo "accountId")
setvar channel_id = $(curl "${domain}/api/v1/${channel_url}" --silent | dasel --parser json --selector '.id')
setvar xml_url = "$domain/feeds/videos.atom?$feed_type=$channel_id"
}
;;
}
print-outline $name $xml_url $url $tags
}
}
# Print the remaining parts of the document.

View File

@ -15,5 +15,5 @@
set -o pipefail
notify-send "Select a region for the OCR"
maim --select --hidecursor | magick mogrify -modulate 100,0 -resize 400% png:- | tesseract - stdout
maim --select --hidecursor | magick mogrify -modulate 100,0 -resize 400% png:- | tesseract - stdout | xclip -selection clipboard

View File

@ -1,13 +1,14 @@
MANIFEST := nixos-zilch
FLAGS :=
.PHONY = install
.PHONY: install
install:
./vtsm --manifest ".vtsm/${MANIFEST}.json" --commands "mkdir -p {location} && stow --stow {package} --target {location}"
./vtsm --manifest ".vtsm/${MANIFEST}.json" --commands "mkdir -p {location} && stow --stow {package} --target {location}" $(FLAGS)
.PHONY = reinstall
.PHONY: reinstall
reinstall:
./vtsm --manifest ".vtsm/${MANIFEST}.json" --commands "mkdir -p {location} && stow --restow {package} --target {location}"
./vtsm --manifest ".vtsm/${MANIFEST}.json" --commands "mkdir -p {location} && stow --restow {package} --target {location}" $(FLAGS)
.PHONY = clean
.PHONY: clean
clean:
./vtsm --manifest ".vtsm/${MANIFEST}.json" --commands "stow --delete {package} --target {location}"
./vtsm --manifest ".vtsm/${MANIFEST}.json" --commands "stow --delete {package} --target {location}" $(FLAGS)

View File

@ -1,176 +1,44 @@
# All of the unread articles
# Take note it will result in a very slow loading
# "query:Unread Articles:unread = \"yes\""
# Blogs
https://alex-hhh.github.io/feeds/all.rss.xml blog.personal
https://blog.jwf.io/feed/ blog.personal
https://blog.yoshuawuyts.com/rss.xml blog.personal
https://chrispenner.ca/atom.xml blog.personal
https://christine.website/blog.atom blog.personal
https://drewdevault.com/blog/index.xml blog.personal
http://distill.pub/rss.xml blog.personal
https://euandre.org/feed.blog.en.atom blog.personal
https://fasterthanli.me/index.xml blog.personal
https://www.gwern.net/index.rss blog.personal
https://jcs.org/rss blog.personal
https://lukesmith.xyz/rss.xml blog.personal
https://ma.ttias.be/cronweekly/index.xml blog.personal
https://magnusson.io/index.xml blog.personal
https://matienzo.org/posts/index.xml blog.personal
https://protesilaos.com/codelog.xml blog.personal
https://simblob.blogspot.com/feeds/posts/default blog.personal gamedev
http://tonsky.me/blog/atom.xml blog.personal
https://venam.nixers.net/blog/feed.xml blog.personal
https://willschenk.com/feed.xml blog.personal
https://www.malloc47.com/rss.xml blog.personal
https://www.copetti.org/index.xml blog.personal computer.architecture
https://www.agwa.name/blog/feed blog.personal computer.security
https://www.davidrevoy.com/feed/rss blog.personal art
# Software blogs
https://kde.org/announcements/index.xml blog.software dev.linux
https://guix.gnu.org/feeds/blog.atom blog.software dev.linux
https://web.dev/feed.xml blog.software dev.web
# Articles (they're different from blogs)
https://annoying.technology/index.xml miscellany
# Combine all blogs under the blog filter
"query:Blog:tags # \"blog\""
# News
https://www.reddit.com/r/linux/.rss news
https://news.ycombinator.com/rss news
https://weekly.nixos.org/feeds/all.rss.xml news
# Podcasts
https://coder.show/rss
https://alex-hhh.github.io/feeds/all.rss.xml "blog.personal"
https://blog.jwf.io/feed/ "blog.personal"
https://blog.yoshuawuyts.com/rss.xml "blog.personal"
https://chrispenner.ca/atom.xml "blog.personal"
https://christine.website/blog.atom "blog.personal"
https://drewdevault.com/blog/index.xml "blog.personal"
http://distill.pub/rss.xml "blog.personal"
https://euandre.org/feed.blog.en.atom "blog.personal"
https://fasterthanli.me/index.xml "blog.personal"
https://www.gwern.net/index.rss "blog.personal"
https://jcs.org/rss "blog.personal"
https://lukesmith.xyz/rss.xml "blog.personal"
https://ma.ttias.be/cronweekly/index.xml "blog.personal"
https://magnusson.io/index.xml "blog.personal"
https://matienzo.org/posts/index.xml "blog.personal"
https://protesilaos.com/codelog.xml "blog.personal"
https://simblob.blogspot.com/feeds/posts/default "blog.personal" "gamedev"
http://tonsky.me/blog/atom.xml "blog.personal"
https://venam.nixers.net/blog/feed.xml "blog.personal"
https://willschenk.com/feed.xml "blog.personal"
https://www.malloc47.com/rss.xml "blog.personal"
https://bernsteinbear.com/feed.xml "blog.personal" "computer.any"
https://www.copetti.org/index.xml "blog.personal" "computer.architecture"
https://www.agwa.name/blog/feed "blog.personal" "computer.security"
https://jvns.ca/atom.xml "blog.personal" "computer.any"
https://blog.jessfraz.com/index.xml "blog.personal" "computer" "science"
https://wingolog.org/feed/atom "blog.personal" "computer.compilers"
https://palant.info/rss.xml "blog.personal" "web.dev" "web.security"
https://www.owlfolio.org/index.atom "blog.personal"
https://www.joshwcomeau.com/rss.xml "blog.personal" "computer.graphics" "web.dev" "web.design"
https://www.davidrevoy.com/feed/rss "blog.personal" "art"
https://kde.org/announcements/index.xml "blog.software" "dev.linux"
https://guix.gnu.org/feeds/blog.atom "blog.software" "dev.linux"
https://web.dev/feed.xml "blog.software" "dev.web"
https://annoying.technology/index.xml "miscellany"
https://standardebooks.org/rss/new-releases "books"
http://feed.syntax.fm/rss "podcast" "dev.web"
https://coder.show/rss "podcast"
https://fossandcrafts.org/rss-feed-ogg.rss
https://librelounge.org/rss-feed-ogg.rss
https://linuxunplugged.com/rss
https://selfhosted.show/rss
https://feeds.twit.tv/sn.xml
# Peertube subscriptions
https://video.ploud.fr/feeds/videos.xml?videoChannelId=22019 "Tim Krief" peertube gamedev
# YouTube subscriptions
"query:YouTube:tags # \"YouTube Subscriptions\""
https://www.youtube.com/feeds/videos.xml?channel_id=UC-3J5xNrAbTLbU1gN8mMpOA "~Nitro Rad" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC-90KuSWRVLImW4xHWFYMnQ "~Shady Cicada" youtube music
https://www.youtube.com/feeds/videos.xml?channel_id=UC-cY3DcYladGdFQWIKL90SQ "~Jon Ringer" youtube coding
https://www.youtube.com/feeds/videos.xml?channel_id=UC-yuWVUplUJZvieEligKBkA "~javidx9" youtube coding
https://www.youtube.com/feeds/videos.xml?channel_id=UC1zZE_kJ8rQHgLTVfobLi_g "~The King of Random" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC2I6Et1JkidnnbWgJFiMeHA "~Steve1989MREInfo" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~Luke Smith" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC3-0S7vXfwYY2jj5EkMpymA "~Nick Zammeti" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC3ogrx6d9oohf6D42G44j1A "~Terrible Writing Advice" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC4a-Gbdw7vOaccHmFo40b9g "~Khan Academy" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC6107grRI4m0o2-emgoDnAA "~SmarterEveryDay" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC6mIxFTvXkWQVEHPsEdflzQ "~GreatScott!" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC6nSFpj9HTCZ5t-N3Rm3-HA "~Vsauce" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC7590VTWe6m0kq3gJcgLINg "~The Taylor Series" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC8ENHE5xdFSwx71u3fDH5Xw "~ThePrimeagen" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC8uT9cgJorJPWu7ITLGo9Ww "~The 8-Bit Guy" youtube computer
https://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA "~Computerphile" youtube computer
https://www.youtube.com/feeds/videos.xml?channel_id=UC9Z1XWw1kmnvOOFsj6Bzy2g "~Blackthornprod" youtube gamedev
https://www.youtube.com/feeds/videos.xml?channel_id=UC9z7EZAbkphEMg0SP7rw44A "~carykh" youtube programming
https://www.youtube.com/feeds/videos.xml?channel_id=UCBB7sYb14uBtk8UqSQYc9-w "~Steve Ramsey - Woodworking for Mere Mortals" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCBa659QWEk1AI4Tg--mrJ2A "~Tom Scott" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCBlqfZZYQWKyr6qLAB7LINw "~ICTP Postgraduate Diploma Programme" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCC26K7LTSrJK0BPAUyyvtQg "~Brandon James Greer" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCD6VugMZKRhSyzWEWA9W2fg "~SsethTzeentach" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCEBb1b_L6zDS3xTUrIALZOw "~MIT OpenCourseWare" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCEOXxzW2vU0P-0THehuIIeg "~Captain Disillusion" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCEQXp_fcqwPcqrzNtWJ1w9w "~Logos By Nick" youtube graphics
https://www.youtube.com/feeds/videos.xml?channel_id=UCEbYhDd6c6vngsF5PQpFVWg "~Tsoding" youtube coding
https://www.youtube.com/feeds/videos.xml?channel_id=UCF6F8LdCSWlRwQm_hfA2bcQ "~Coding Math" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCFe6jenM1Bc54qtBsIJGRZQ "~patrickJMT" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCFqaprvZ2K5JOULCvr18NTQ "~How to Adult" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCG-KntY7aVnIGXYEBQvmBAQ "~Thomas Frank" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCGgpthBWDbFX2GSljMw-MdQ "~BoroCG" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCHnj59g7jezwTy5GeL8EA_g "~MindYourDecisions" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA "~Veritasium" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCI4I6ldZ0jWe7vXpUVeVcpg "~Household Hacker" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCJHA_jMfCvEnv-3kRjTCQXw "~Binging with Babish" youtube cooking
https://www.youtube.com/feeds/videos.xml?channel_id=UCJYVW4HVrMWpUvvsjPQc8-Q "~DorianDotSlash" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCK9Hl6LXPaooxMTvsOutw3A "~GaMetal" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCLB7AzTwc6VFZrBsO2ucBMg "~Robert Miles" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCLx053rWZxCiYWsBETgdKrQ "~LGR" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCMOqf8ab-42UUQIdVoKwjlQ "~Practical Engineering" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCNepEAWZH0TBu7dkxIbluDw "~Dad, how do I?" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCOPcid5e7WN9T55HCEwZlWg "~BDPAPMEJM" youtube music
https://www.youtube.com/feeds/videos.xml?channel_id=UCORkUj9eaM2aDJM1VYyDDTA "~Sam Hogan" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCQ-W1KE9EYfdxhL6S4twUNw "~The Cherno" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCQWeW0mZYQL-3Boj5iNMw4g "~David Evans" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCQkd05iAYed2-LOmhjzDG6g "~LowSpecGamer" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCS0N5baNlQWJCUrhCEo8WlA "~Ben Eater" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCSC1HqVmTaE4Shn32ihbC7w "~Bobby Duke Arts" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCSYniDuuSiM-HutLDTBbIlg "~Vtuberアンドロイド・レイくん&ゼロちゃん" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCSju5G2aFaWMqn-_0YBtq5A "~Stand-up Maths" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCSl5Uxu2LyaoAoMMGp6oTJA "~Atomic Shrimp" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCTi0V5iwClvjUba6nI2bI3w "~Jelle Vermandere" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUHW94eEFW7hkUMVaZz4eDg "~minutephysics" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUQo7nzH1sXVpzL92VesANw "~DIY Perks" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUaiGrBfRCaC6pL7ZnZjWbg "~JK Brickworks" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCUmLRMERmJrmUtgnbFfknAg "~Randall" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCViAcUsxrffb-dH50U5VHqw "~Advanced Placement" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCVyE_6jEtVZGmYGXtUOL5FQ "~Rag 'n' Bone Brown" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCWnlQMQ-ACfhpD68yWRsnJw "~Tod's Workshop" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCX6b17PVsYBQ0ip5gyeme-Q "~CrashCourse" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCY1kMZp36IQSyNx_9h4mpCg "~Mark Rober" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCYO_jab_esuFRV4b17AJtAw "~3Blue1Brown" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCYVyyyttdLFyZemFsEyPLCw "~Colanderp" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCZFUrFoqvqlN8seaAeEwjlw "~Grant Abbitt" youtube 3d-modelling
https://www.youtube.com/feeds/videos.xml?channel_id=UCZYTClx2T1of7BRZ86-8fow "~SciShow" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC_OtnV-9QZmBj6oWBelMoZw "~insaneintherainmusic" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UC_SvYP0k05UKiJ_2ndB02IA "~blackpenredpen" youtube math
https://www.youtube.com/feeds/videos.xml?channel_id=UC_iD0xppBwwsrM9DegC5cQQ "~Jon Gjengset" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCa5tblTbBm09lMEdMblIq-A "~Atmacoustics" youtube music
https://www.youtube.com/feeds/videos.xml?channel_id=UCaTznQhurW5AaiYPbhEA-KA "~Molly Rocket" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCafxR2HWJRmMfSdyZXvZMTw "~LOOK MUM NO COMPUTER" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCaoqVlqPTH78_xjTjTOMcmQ "~Miziziziz" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCbfYPyITQ-7l4upoX8nvctg "~Two Minute Papers" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCcabW7890RKJzL968QWEykA "~CS50" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCdJdEguB1F1CiYe7OEi3SBg "~JonTronShow" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCdmAhiG8HQDlz8uyekw4ENw "~Inigo Quilez" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCeGGpOehPGG7vQMUVc7tG8Q "~Saberspark" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCekQr9znsk2vWxBo3YiLq2w "~You Suck At Cooking" youtube cooking
https://www.youtube.com/feeds/videos.xml?channel_id=UCerEIdrEW-IqwvlH8lTQUJQ "~Tech Tangents" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCfIqCzQJXvYj9ssCoHq327g "~How To Make Everything" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCfVFSjHQ57zyxajhhRc7i0g "~GameHut" youtube gamedev
https://www.youtube.com/feeds/videos.xml?channel_id=UCfzlCWGWYyIQ0aLC5w48gBQ "~sentdex" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCgmOd6sRQRK7QoSazOfaIjQ "~Emma's Goodies" youtube cooking
https://www.youtube.com/feeds/videos.xml?channel_id=UChWv6Pn_zP0rI6lgGt3MyfA "~AvE" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCiLgdNKZCiod7k5nsrUkOJA "~Simply Electronics" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCijjo5gfAscWgNCKFHWm1EA "~Mozilla Hacks" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCivA7_KLKWo43tFcCkFvydw "~Applied Science" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w "~Modern Vintage Gamer" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCjdHbo8_vh3rxQ-875XGkvw "~3DSage" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCkY047vYjF92-8HcoVTXAOg "~Coding Secrets" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCkefXKtInZ9PLsoGRtml2FQ "~Professor Messer" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UClcE-kVhqyiHCcjYwcpfj9w "~LiveOverflow" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UClq42foiSgl7sSpLupnugGA "~D!NG" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCm22FAXZMw1BaWeFszZxUKw "~Kitboga" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCmkP178NasnhR3TWQyyP4Gw "~How To Mechatronics" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCmtyQOKKmrMVaKuRXz02jbQ "~Sebastian Lague" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCoHhuummRZaIVX7bD4t2czg "~Professor Leonard" youtube math
https://www.youtube.com/feeds/videos.xml?channel_id=UCodbH5mUeF-m_BsNueRDjcw "~Overly Sarcastic Productions" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCosnWgi3eorc1klEQ8pIgJQ "~Afrotechmods" youtube electronics
https://www.youtube.com/feeds/videos.xml?channel_id=UCoxcjq-8xIDTYp3uz647V5A "~Numberphile" youtube math
https://www.youtube.com/feeds/videos.xml?channel_id=UCq0EGvLTyy-LLT1oUSO_0FQ "~Eddie Woo" youtube math
https://www.youtube.com/feeds/videos.xml?channel_id=UCqJ-Xo29CKyLTjn6z2XwYAw "~Game Maker's Toolkit" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCr-5TdGkKszdbboXXsFZJTQ "~Gamefromscratch" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCrv269YwJzuZL3dH5PCgxUw "~CodeParade" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCtAIs1VCQrymlAnw3mGonhw "~Flammable Maths" youtube math
https://www.youtube.com/feeds/videos.xml?channel_id=UCtxCXg-UvSnTKPOzLH4wJaQ "~Coding Tech" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCu6mSoMNzHQiBIOCkHUa2Aw "~Cody'sLab" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCvjgXvBlbQiydffZU7m1_aw "~The Coding Train" youtube coding math
https://www.youtube.com/feeds/videos.xml?channel_id=UCxO_ya-RmAXCXJCU54AxYFw "~New Frame Plus" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCxQbYGpbdrh-b2ND-AfIybg "~Maker's Muse" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCxboW7x0jZqFdvMdCFKTMsQ "~GDQuest" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCxqAWLTk1CmBvZFPzeZMd9A "~Domain of Science" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCxzC4EngIsMrPmbm6Nxvb-A "~Scott Manley" youtube
https://www.youtube.com/feeds/videos.xml?channel_id=UCz6zvgkf6eKpgqlUZQstOtQ "~Bulby" youtube music
https://video.ploud.fr/feeds/videos.xml?videoChannelId=22019 "peertube" "gamedev"

2
vtsm
View File

@ -120,7 +120,7 @@ def setup_logging():
"""
Setup the logger instance.
"""
logging.basicConfig(format="[%(levelname)s] %(module)s: %(message)s", level=logging.INFO, stream=sys.stdout)
logging.basicConfig(format="[%(levelname)s] %(message)s", level=logging.INFO, stream=sys.stdout)
def setup_args():