Categories
Uncategorized

selecting a random file in the current folder

#!/bin/bash
files=(*)
echo "${files[RANDOM % ${#files[@]}]}"
Categories
Uncategorized

using grep and xargs

open all files that contain “/sdk/” for edit:
grep -Rl "/sdk/" . | xargs p4 edit

replace all occurences of /sdk/ with /new_sdk/
grep -Rl "/sdk/" . | xargs sed -i "s#/sdk/#/new_sdk/#g"

Categories
Uncategorized

reindex avi

if your avi index is corrupt, you can use a tool included in MPlayer (on OSX: sudo port install MPlayer)

mencoder -idx corruptAvi.avi -ovc copy -oac copy -o ReIndexedAvi.avi
Categories
Uncategorized

replace non ascii chars in file names

for filename in *.xml; do newname=`echo $filename | tr -cd '\11\12\15\41-\176'`; mv "$filename" "$newname"; done

Categories
Uncategorized

trace file access on OSX

OSX contains some tools for system level analysis originally developed for Solaris – one of them is opensnoop.
The tools’ descriptions can be found here: http://www.brendangregg.com/dtrace.html

Categories
Uncategorized

using python to set mp4 tags from a csv file

using python to create the lengthy AtomicParsley calls described in the last post:

#!/usr/bin/python
import csv
import pipes
import StringIO

#metadata.csv has to contain the following rows:
#filename, show, season, episode, title, artwork, description
csvfile='metadata.csv'
csvreader = csv.reader(open(csvfile, 'rbU'), delimiter=',', quotechar='"')

class Command:
	def __init__(self, file):
		self.command = StringIO.StringIO()
		self.command.write('AtomicParsley ')
		self.command.write(pipes.quote(file))
	def addParam(self, key, value):
		self.command.write(' --')
		self.command.write(key)
		self.command.write(' ')
		self.command.write(pipes.quote(value))	
	def toString(self):
		return self.command.getvalue()
	def close(self):
		self.command.close()

def handleFile(row):
	m4vfile = row[0]
	show = row[1]
	season = row[2]
	episode = row[3]
	title = row[4]
	artwork = row[5]
	description = row[6]
	episodeCode = season + '' + str(episode).zfill(2) ##leading zeroes

	command = Command(m4vfile)
	
	command.addParam('artist', show)
	command.addParam('title', title)
	command.addParam('album', show + ', Season ' + season)
	command.addParam('artwork', artwork)
	command.addParam('stik', 'TV Show')
	command.addParam('description', description)
	command.addParam('TVShowName', show)
	command.addParam('TVEpisode', episodeCode)
	command.addParam('TVEpisodeNum', episode)
	command.addParam('TVSeasonNum', season)

	print command.toString()
	command.close()

for row in csvreader:
	handleFile(row)

Categories
Uncategorized

set meta data in MP4 (m4v) files

you can use AtomicParsley, a command line based open source tool to add metadata and artwork to your MPEG-4 files. On OS X you can use macports to install the tool.

example for an AtomicParsley call:
AtomicParsley 'Simpsons - Chili.m4v' --artist Simpsons --title 'Homer and the Chili' --album 'Simpsons, Season 6' --artwork Simpsons.jpg --stik 'TV Show' --TVShowName Simpsons --TVEpisode 605 --TVEpisodeNum 6 --TVSeasonNum 5 --description 'Homer attends a hot chili competition.'

Categories
Uncategorized

convert from AVI to MP4 (M4V)

M4V is just an alias for MP4.
So you can use ffmpeg to copy the audio/video streams in your AVI file to a more recent MP4 container:

ffmpeg -i source.avi -f mp4 -vcodec copy -acodec copy destination.mp4

Categories
Uncategorized

install Sun Java on Ubuntu

add-apt-repository "deb http://archive.canonical.com/ lucid partner"
apt-get update
apt-get install sun-java6-jdk
update-alternatives --config java
Categories
Uncategorized

new Java Decompiler

Everybody working with Java has met JAD some time sooner or later.
Unfortunately JAD is pretty old, has no GUI and cannot handle Java 5/6 bytecode.

Now there’s a new player in town – you can directly open JAR archives in its nice GUI:
http://java.decompiler.free.fr/?q=jdgui