Skip to content

Instantly share code, notes, and snippets.

View ePirat's full-sized avatar

Marvin Scholz ePirat

View GitHub Profile
@ePirat
ePirat / parse_playlist.php
Last active August 29, 2015 14:16
Ice PlaylistParser
#!/usr/bin/php
<?php
if (php_sapi_name() == "cli") {
// If this is executed via CLI, parse options and stuff
// Helper
function report_error($e) {
// Get the current script name
$our_name = (($v =strrchr(__FILE__, DIRECTORY_SEPARATOR)) == FALSE)
? __FILE__
@ePirat
ePirat / keybase.md
Created February 25, 2015 08:33
keybase.md

Keybase proof

I hereby claim:

  • I am ePirat on github.
  • I am epirat (https://keybase.io/epirat) on keybase.
  • I have a public key whose fingerprint is 66DF 0B23 CE79 3C28 0922 62E1 3EBF 06BE 1FF9 645A

To claim this, I am signing this object:

@ePirat
ePirat / spec.md
Last active December 19, 2024 19:57
Icecast Protocol specification

Icecast protocol specification

What is the Icecast protocol?

When speaking of the Icecast protocol here, actually it's just the HTTP protocol, and this document will explain further how source clients need to send data to Icecast.

HTTP PUT based protocol

Since Icecast version 2.4.0 there is support for the standard HTTP PUT method. The mountpoint to which to send the data is specified by the URL path.

@ePirat
ePirat / CodeStyle.md
Last active August 29, 2015 14:07
C Coding Style proposal for Icecast

C Coding Style

Proposal for Icecast

Formatting

Indent with (4) spaces, no tabs.
A Line Should Not Exceed 80 Characters.

Brace Placement

All if, while, for and do statements should either have braces or be on a single line. Do not put parens next to keywords. Put a space between.

<?php
function dirtyHeaderParser($headers, $strict = true){
$arr = array();
$s = strtok($headers, ':');
while ($s){
if ( ($s[0] === ' ') || ($s[0] === "\t") ){
if (count($arr) != 0){
$tail = strtok('');
$tail = "{$s}:{$tail}";
@ePirat
ePirat / Parser.js
Created January 16, 2013 21:12
Link header parser (JavaScript)
var PageLinks = function(linkHeader) {
var ProfileRel = "https://tent.io/rels/profile";
var final = [];
var links = linkHeader.split(",");
if (links.length < 2)
links[0] = linkHeader;
for (link in links) {
link = links[link];
var segments = link.split(";");
if (segments.length < 2)
@ePirat
ePirat / newsfix.user.js
Created November 28, 2011 20:34
Fix clearing search bar when switching to Google News
// ==UserScript==
// @name Google News Query Save
// @namespace ePirat
// @description Fixes that you have to re-enter the search term when you click "News" link
// @include http*://google.com/*
// @include http*://google.ae/*
// @include http*://google.com.af/*
// @include http*://google.com.ag/*
// @include http*://google.off.ai/*
// @include http*://google.am/*
@ePirat
ePirat / watermark.php
Created November 16, 2011 21:26
Wasserzeichen (PHP)
<?php
function PlaceWatermark($file, $text, $xxx, $yyy, $op, $outdir) {
require_once('fpdf.php');
require_once('fpdi.php');
$name = uniqid();
$font_size = 5;
$ts=explode("\n",$text);
$width=0;
foreach ($ts as $k=>$string) {
$width=max($width,strlen($string));
@ePirat
ePirat / startserver.js
Created August 11, 2011 23:54
Node js - Chat Server (NSFW)
Array.prototype.has = function(value) {
var i;
for (var i = 0, loopCnt = this.length; i < loopCnt; i++) {
if (this == value) {
return true;
}
}
return false;
};
@ePirat
ePirat / nowpaying.scpt
Created August 11, 2011 17:17
Crap Script © ePirat
-- by MacScripter User Nigel Garvey
on switchText(t, r, s)
set d to text item delimiters
set text item delimiters to s
set t to t's text items
set text item delimiters to r
tell t to set t to item 1 & ({""} & rest)
set text item delimiters to d
t
end switchText