Mar 292015
 

Like many people, I’ve been trying to find an easier way to archive all of my movies and TV shows to hard disk instead of DVD disc. My previous attempt at semi-automated DVD ripping used an autoloader and some scripts, but it still required a lot of intervention because I couldn’t find a way to correctly name and tag my movies automatically. I wished there was something like CDDB or FreeDB for DVDs that would lookup metadata from the disc in the drive.

Windows Media Player does a lookup of the DVD metadata so I figured it had to be possible.
WindowsMediaPlayer

Thankfully, I’ve stumbled across an awesome utility that will get the DVD’s discid in the format Microsoft uses for their media player and media centers. http://dvdid.cjkey.org.uk/
dvdid-command

Time to fire up Wireshark (or Ethereal if you’ve been doing this forever) and see where that request is going. I stuck the disc in my DVD drive and opened Windows Media Player. A couple of HTTP 302 redirects later I’ve got a HTTP 200 and the current request and reply.
redirects-and-success

Looking at the discid and the URL, it looks like it strips out the vertical bar pipe character | that was used in previous versions.
dvdid-string

Opening the request gives me the URL. It looks like it’s using “User-Agent: Windows-Media-Player/12.0.7601.18741”. To avoid being ridiculously obvious while abusing this api, it might be a good idea to spoof your useragent as well.
request-url

Response is an XML file. Looks really straight forward to parse.
response-xml

The request URL is super straight forward too. Just replace everything after the CRC= with the output from dvdid, removing the | character.
http://metaservices.windowsmedia.com/pas_dvd_B/template/GetMDRDVDByCRC.xml?CRC=92918cc3b7506a7e

There doesn’t appear to be much of anything prevent this from being abused. It opened in a regular browser without issue. I used IE in this screenshot.
response-in-IE

Mar 032013
 

Continuing my current obsession with ripping DVDs is my perlification of jmos1277’s Automated DVD ripping script using DVDFab

I’m using DVDFab to rip since it doesn’t seem to get tripped up as often with weird copy protection crap.

Luckily, Win32::DriveInfo will give me the volume name of the DVD. If I get time, I’ll rewrite so it checks for duplicates and appends the date&time to get a unique filename for output. It’s a little annoying when 3 discs are all named “DVD_VIDEO”.

I’m not setting it as an autorun action for the DVD drive because I’m going to call it from the ripinator script.

ripdisc.pl Continue reading »

Feb 172013
 

Subsonic is pretty awesome

Install instructions
http://www.subsonic.org/pages/installation.jsp#debian
http://dilerium.se/musiccabinet/#installation

I’ve kept notes for when I end up rebuilding this server.

Start by updating the system

sudo apt-get update
sudo apt-get upgrade

Install Oracle Java 7

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

Reference Links
http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html
http://ubuntuforums.org/archive/index.php/t-2000856.html

Install Subsonic

http://www.subsonic.org/pages/installation.jsp#debian
wget http://prdownloads.sourceforge.net/subsonic/subsonic-4.7.deb
sudo dpkg -i subsonic-4.7.deb
sudo service subsonic stop

Install musiccabinet

sudo apt-get install unzip
wget http://dilerium.se/musiccabinet/subsonic-installer-standalone.zip
unzip subsonic-installer-standalone.zip

sudo cp ~/subsonic-installer-standalone/subsonic-booter.jar /usr/share/subsonic/subsonic-booter-jar-with-dependencies.jar
sudo cp ~/subsonic-installer-standalonesubsonic-main.war /usr/share/subsonic/subsonic.war

Set a password for the “postgres” database role using the command:

sudo -u postgres psql postgres
\password postgres

Give your password when prompted. The password text will be hidden from the console for security purposes.
Type Control+D to exit the posgreSQL prompt.

Reference Links
https://help.ubuntu.com/community/PostgreSQL

Start Subsonic Service

sudo service subsonic start

Connect to the IP address of the ubuntu server using http on port 4040, default username / password is admin / admin

I have to agree with the musiccabinet installation instructions for the last step “Start and log in to Subsonic as usual (normally via localhost:4040) and click the big “Configure MusicCabinet” header link. It should be pretty self-explanatory from there.” It really is self-explanatory.

I love iSub for streaming to my iPhone, DSub for streaming to my android tablet. I think “donating” to the project is a good idea, but if you don’t feel like it…
https://gist.github.com/andycandet/1611509 will enable subsonic after the “trial” has ended.

Apr 202009
 

I got bored and started looking at adobe air. I made a clone of HakHouse air using the same chat as hakhouse.com. Since there’s already a HakHouse air app, I named mine HakHaus. Download HERE

How’d I do it? It turns out that getting started with Adobe Air is ridiculously simple. Just…

Install
http://get.adobe.com/air/

Install
http://www.adobe.com/products/air/tools/sdk/

Unzip and read devappshtml.pdf
http://help.adobe.com/en_US/AIR/1.5/AIR1_5_html_docs.zip

Also cool
http://www.adobe.com/devnet/air/ajax/articles/air_ajax_developers.html

I followed the “Hello World” example to get started. Pretty simple!

This is what I ended up with… if you wanna take a look
helloworld.zip

Jan 112009
 

Project Requirements
At work we needed a time lapse camera of our new student center construction project. It needs to run continuously for entire length of construction project – approx 18 months. It should run mostly unattended.

Features
It captures 1 picture every 5 minutes. Storage capacity is cheap, so after using excel to make some projections, this worked out to be a reasonable rate for our resources. After some more research, I came to the conclusion that flash video has compatibility with most visitors while being relatively bandwidth efficient, but other codecs could be used. I originally got the idea from http://mydebian.blogdns.org/?p=261 but it wasn’t quite awesome enough, so I rewrote using Perl and expanded upon it. Continue reading »

Feb 252008
 

So, here’s how it went down:

Since I have an older craptop, I have all the drivers to run Windows 98SE. Windows 9x is great for embedded applications like this. I remember from when I was scheming to build a MAME cabinet with nice arcade controls wired up to a disassembled keyboard. I saw a link on someone’s project page to DWJukebox. I thought it was pretty neat. A recent episode of Systm made me remember MAME and all the cool hackery people have done around it. Anyhoo, Friday evening boredom led to this project.

Here was the plan:

  1. Install Windows 98SE
  2. Install all required drivers
  3. Map a drive to network share containing mp3’s
  4. Install and configure DWJukebox
  5. Replace explorer.exe with “C:\path\to\wincab.exe” in the shell= line of C:\windows\system.ini
  6. Reboot

DWJukebox should now be the only thing running when the computer is turned on. Brilliantly simple! In theory…

Since nothing works as well as originally planned, I had a few snags.

Installing the OS and drivers and mapping network drive all worked perfectly.

Wincab failed to load. It could not initialize digital sound driver or something… I’ve had issues with sound cards before, so one of the first things I tried was reducing the hardware acceleration of the sound card. I adjusted it one increment at a time, and it only works on the no acceleration setting. So, finally, Wincab.exe worked pretty well until I tried to set it as the shell.

It failed with a message about it not finding jbdefptr.ptr. I had been cruising around the support forums for DWJukebox and many posts had portions of jbdebug.log attached, so I enabled logging, but it didn’t put the jbdebug.log in the program folder like I expected, it put it in the root of the C:\ drive!

Since this is a dedicated computer that I’m not going to be using for anything else, I just moved DWJukebox to the root of the C:\ drive, updated the C:\windows\system.ini and rebooted.

It’s ALIVE! Er… well, it boots into DWJukebox and plays mp3’s from a network share.