Skip to content

Instantly share code, notes, and snippets.

#!/usr/bin/env ruby
# Usage: ruby datamoshing-mp4.rb input.mp4 > output.mp4
def uint32 s
s.unpack("C4").reverse.each_with_index.inject(0) { |r, v| r += v[0] << (v[1] * 8) }
end
input = ARGV.shift
data = File.open(input).read
require 'rubygems'
require 'aviglitch'
avi = AviGlitch.new ARGV.first
prev = nil
avi.glitch(:keyframe) do |frame|
x = prev || frame
prev = frame
x
end
require 'rubygems'
require 'aviglitch'
avi = AviGlitch.new ARGV.first
avi.glitch(:videoframe) do |frame|
frame[0, frame.size / 2] + "\000" * (frame.size / 2)
end
avi.write 'out.avi'
require 'rubygems'
require 'aviglitch'
avi = AviGlitch.new ARGV.first
avi.glitch(:videoframe) do |frame|
frame[128] = "\000" if frame.size > 128
frame
end
avi.write 'out.avi'

Twitterface

A LimeChat theme adding Twitter icons for IRC nicknames.

Installation

  1. Open LimeChat Preferences -> Theme and click the "Open in Finder" button.
  2. Place Twitterface.yaml and Twitterface.js in the directory.
  3. Reopen Preferences -> Theme and select the Twitterface theme.
require 'rubygems'
require 'aviglitch'
base, keys = ARGV
keyframes = AviGlitch.new(keys).frames.map do |frame|
if frame.is_keyframe?
frame.data
else
nil
// ==UserScript==
// @name Googlitch Maps
// @namespace http://userscripts.org/users/ucnv
// @description crushes the Google Maps
// @include http://maps.google.tld/*
// ==/UserScript==
// This script is based on GlitchMonkey <http://github.com/youpy/glitchmonkey>
document.addEventListener('DOMAttrModified', glitch, false);
#!/usr/bin/env ruby
require 'webrick'
require 'webrick/httpproxy'
handler = Proc.new() do |req,res|
if (req.path == '/glm/mmap' and res['content-type'] =~ /binary/) ||
(req.host =~ /^cbk\d+\.google/ and res['content-type'] =~ /jpeg/)
#res.body.gsub!(/0/m, rand(10).to_s)
sos = res.body.index("\xFF\xDA")
#!/usr/bin/env ruby
# Test script for yet another JPEG glitch technique.
# Rewriting YCbCr Huffman table selectors in the JPEG header.
require 'erb'
data = File.open(ARGV.first) {|f| f.read }
sos = data.index "\xFF\xDA"
ns = data[sos + 4]
files = (4 ** ns).times.collect do |i|
sign = "%0#{2*ns}b" % i
#!/usr/bin/env ruby
require 'nokogiri'
require 'open-uri'
url = 'http://www.melon-peach.com'
ua = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2'
html = Nokogiri.parse(open(url, 'User-Agent' => ua).read)
html.xpath('//img[contains(@src, "/small")]').each_with_index do |img, i|
data = open(url + '/userimages/' + img['src'].sub(%r{/small}, '/big'), 'User-Agent' => ua).read
data.gsub!(
/\xFF\xDA\x00\x0C\x03\x01[\s\S]\x02[s\S]\x03[\s\S]/,