Skip to content

Instantly share code, notes, and snippets.

View JKamsker's full-sized avatar

Jonas Kamsker JKamsker

View GitHub Profile
@JKamsker
JKamsker / WpfDictionaries.cs
Last active July 3, 2017 14:15
Add merged directories from the codebehind
//Sample Usage for mahapps:
//WpfDictionaries.AddDirectories("MahApps.Metro", "component/Styles", new string[] { "Controls", "Fonts", "Colors", "Accents/Blue", "Accents/BaseLight" }, "xaml");
internal class WpfDictionaries
{
public static void AddDirectories(string domain, string prefix, IEnumerable<string> fileNames, string suffix)
{
fileNames.ForEach(x =>
{
Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary
@JKamsker
JKamsker / DictionarySerializer.cs
Last active May 20, 2017 00:51
A simple Dictionary<T,TX> serializer
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
public static class Usage
{
public static void Use()
@JKamsker
JKamsker / BoolWatcher.cs
Created April 14, 2017 22:10
Watches constantly on the result of a func and executes an action if true
internal class BwHelper
{
public object SessObj { get; set; }
public Func<object, bool> CheckingAlg { get; set; }
public Action<bool, object> StatusChange { get; set; }
public bool doCallbackOn { get; set; }
public bool lastResult { get; set; }
public double NextCheck { get; set; }
public double Interval { get; set; }
@JKamsker
JKamsker / ByteComparison.cs
Created March 21, 2017 15:06
Searches a bigger array of bytes for a tinyer array of bytes
public class Byte
{
/// <summary>
/// Gets the starting pointers in array of the given element
/// </summary>
/// <param name="array">Bigger element where is searched in</param>
/// <param name="element">Tiny pattern which has to be matched in <see cref="array"/></param>
/// <returns></returns>
public static List<int> GetOccurancePtrs(byte[] array, byte[] element)
{
@JKamsker
JKamsker / HostsFilePatcher.cs
Last active March 19, 2017 15:45
Patches Hosts file entities (add & update )
private static void PatchHosts()
{
string HostFileLocation = @"C:\Windows\System32\drivers\etc\hosts";
Regex rgxHosts = new Regex(@"\b((\d{1,3}\.){3}\d{1,3})\b[ ]+([a-zA-Z0-9.]+)", RegexOptions.ECMAScript | RegexOptions.Compiled);
List<String> HostsFile = new List<string>(File.ReadAllLines(HostFileLocation));
//Parse Entities into an easy <domain,ip> list
var myDict = HostsFile
.Select(m => m.Split("#")[0]).Where(m => m != "")
.Select(m => rgxHosts.Match(m))
@JKamsker
JKamsker / ThreadQueue.cs
Created February 15, 2017 23:02
Async thread queue
using System;
using System.Collections.Concurrent;
using System.Linq;
using System.Threading;
namespace JFunctions.Async
{
public class ThreadQueue
{
private ConcurrentQueue<Action> processQueue = new ConcurrentQueue<Action>();
public static Dictionary<U,T> dictConvert<U,T>(Dictionary<U,object> input)
{
var outp = new Dictionary<U, T>();
foreach (var item in input.Keys)
{
if (input[item].GetType() != typeof(T))
continue;
if (!outp.ContainsKey(item))
outp.Add(item, (T)input[item]);
else
@JKamsker
JKamsker / CacheDlString.cs
Created January 2, 2017 12:56
Downloads a file into a string via GET - Cached
public static string md5(string input, hashFlag flag = 0)
{
StringBuilder sb = new StringBuilder();
Stream fs;
if (flag == hashFlag.hashFile)
if (File.Exists(input))
fs = File.OpenRead(input);
else
throw new Exception("File does not exist");
else
public static void use(string[] args)
{
var dat = new YoutubeProvider(args.Length != 0 ? args[0] : "https://www.youtube.com/watch?v=IxuEtL7gxoM");
var dat1 = new YoutubeProvider(args.Length > 1 ? args[1] : "https://www.youtube.com/watch?v=VmUGe8KDdGI");
while (!dat.hasFinished || !dat1.hasFinished)
{
WaitHandle.WaitAny(new[] { dat.waiter, dat1.waiter }, -1);
// dat.WaitOne(); for one or "WaitHandle.WaitAny(new[] { dat.waiter, dat1.waiter }, -1);" for multible downloads
Console.WriteLine("1: {0}%, {1} secs remaining", dat.percentage.ToString("0.0"), dat.eta.TotalSeconds);
@JKamsker
JKamsker / YoutubeProvider.cs
Created December 29, 2016 21:14
Downloads a youtube video with ytdl asyncronously
class YoutubeProvider
{
public float percentage { get; set; }
public string size { get; set; } = string.Empty;
public string speed { get; set; } = string.Empty;
public TimeSpan eta { get; set; }
public string rawResponse { get; set; } = string.Empty;
public bool hasFinished { get; private set; }
public string saveto { get; private set; } = string.Empty;