#!/bin/bash files=(*) echo "${files[RANDOM % ${#files[@]}]}"
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"
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
for filename in *.xml; do newname=`echo $filename | tr -cd '\11\12\15\41-\176'`; mv "$filename" "$newname"; done
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
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)
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.'
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
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
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