Skip to content

Instantly share code, notes, and snippets.

View Daniel-Worrall's full-sized avatar

Daniel Worrall Daniel-Worrall

View GitHub Profile
@Daniel-Worrall
Daniel-Worrall / sieve.cr
Last active March 22, 2022 22:53
Factorisation Sieve
module Sieve
protected class_getter sieve = Hash(Int32, Int32).new { |h, k| k }
@@calculated = 1
class Factors
include Iterator(Int32)
def initialize(@n : Int32)
end
@Daniel-Worrall
Daniel-Worrall / download.cr
Created June 21, 2020 04:00
twist.moe Downloader Crystal
require "./twist"
CHUNK_SIZE = 1024
name = ""
path = ""
Dir.mkdir_p(path)
Twist.get_sources(name).each do |source|
filename = "#{path}/#{name} E#{source.number.to_s.rjust(2, '0')}.mp4"
@Daniel-Worrall
Daniel-Worrall / twist.moe.cr
Created June 21, 2020 02:12
Unencryption for video links on twist.moe
require "openssl"
data = ""
KEY = "LXgIVP&PorO68Rq7dTx8N^lP!Fa5sGJ^*XK"
cipher = OpenSSL::Cipher.new("aes-256-cbc")
encrypted = Base64.decode_string(data)
salt = encrypted.to_slice[8, 8]
my_data = KEY + String.new(salt)
day = 12
suffix = case {day % 10, day % 100}
when {.==(1), .!=(11)}
"st"
when {.==(2), .!=(12)}
"nd"
when {.==(3), .!=(13)}
"rd"
else
@Daniel-Worrall
Daniel-Worrall / config.yml
Created November 28, 2019 21:56
Crystal CircleCI
version: 2
jobs:
build:
working_directory: ~/<%= config.name %>
docker:
- image: crystallang/crystal:latest
steps:
- checkout
- restore_cache:
key: dependency-cache-{{ checksum "shard.lock" }}
class Anime
include JSON::Serializable
property id : Int32
property title : String
property alt_title : String?
property season : Int32
@[JSON::Field(converter: BoolConverter)]
property ongoing : Bool
property hb_id : Int32?
@[JSON::Field(converter: TimeConverter)]
@Daniel-Worrall
Daniel-Worrall / pre-commit
Last active July 31, 2021 11:47
Crystal pre-commit - Just put in .git/hooks folder
#!/bin/sh
changed_cr_files=$(git diff --cached --name-only --diff-filter=ACM | grep '\.cr$')
[ -z "$changed_cr_files" ] && exit 0
crystal tool format $changed_cr_files
shards check || exit 1
bin/ameba -f flycheck $changed_cr_files || exit 1
@Daniel-Worrall
Daniel-Worrall / Console
Created September 10, 2019 17:03
Link Header Parsing Crystal Lang
crystal ./src/test.cr --release
{"hub" => "https://api.twitch.tv/helix/webhooks/hub",
"self" => "https://api.twitch.tv/helix/users/follows?first=1&from_id=1337"}
{"hub" => "https://api.twitch.tv/helix/webhooks/hub",
"self" => "https://api.twitch.tv/helix/users/follows?first=1&from_id=1337"}
{"hub" => "https://api.twitch.tv/helix/webhooks/hub",
"self" => "https://api.twitch.tv/helix/users/follows?first=1&from_id=1337"}
{"hub" => "https://api.twitch.tv/helix/webhooks/hub",
"self" => "https://api.twitch.tv/helix/users/follows?first=1&from_id=1337"}
1 325.74k ( 3.07µs) (± 7.74%) 2.16kB/op 2.30× slower
@Daniel-Worrall
Daniel-Worrall / backup.rb
Last active July 30, 2019 21:01
Backup all named local volumes on docker
folder_name = "" # Dir.pwd
volumes = %x`docker volume ls`
arr = []
volumes.scan(/local\s*(\w*)/) { |x| arr << x[0] }
arr.reject!{ |x| x =~ /^[0123456789abcdef]+$/ }
arr.each do |volume_name|
p %x`docker run --rm -v #{volume_name}:/volume_data -v #{folder_name}:/backup ubuntu tar cvf /backup/#{volume_name}.tar /volume_data`
end
@Daniel-Worrall
Daniel-Worrall / discord-custom.css
Last active July 30, 2019 17:37
Discord Double Width Server List
.wrapper-1Rf91z {
width: 130px !important;
}
.wrapper-1Rf91z .scrollerWrap-2lJEkd {
width: 148px;
}
.scroller-2TZvBN {
padding-left: 0px;
}
.scroller-2TZvBN > div[class=""] {