#!/usr/bin/perl # # author: jolly aka Patrick # purpose: cleanup wwdc 2009 sessions videofolder. It moves the wwdc sessions into folders: # All # IT All # Beginner # Intermediate # Expert # iPhone # ... # Mac # ... # # # usage: start this program in the directory where you downloaded the session videos. Arguments are the filenames you want to get sorted. # # example: TIN> perl ~/Desktop/cleanwwdcvideos.perl * # Session not found for file: 700 - WWDC Sessions Kickoff.m4v # TIN> # # now all the files are in the directories except the mentioned file - which is not in the database. # my @filenames = grep(/\.m4v$/,@ARGV); die "arguments are the filenames" if @filenames < 1; ### # create directories ### mkdir ('All'); for my $type ('Mac','IT','iPhone') { mkdir($type); for my $level ('All','Beginner','Intermediate','Expert','General') { mkdir($type.'/'.$level); } } ### # move files over to All and create links ### { my $session = &sessionhash(); foreach $filename (@filenames) { if( -e $filename && $filename =~ /(?:Session\s*)(\d+).*?\.m4v$/ ) { my($number) = $1; if( $$session{$number} ) { rename($filename,'All/'.$filename); while( my($type,$level)=each%{$$session{$number}} ) { link('All/'.$filename,$type.'/All/'.$filename); link('All/'.$filename,$type.'/'.$level.'/'.$filename); } } else { print STDERR "Session not found for file: $filename\n"; } } } } exit; sub sessionhash() { my %session; my @sessions = ( "Mac","106","Intermediate", "Mac","108","Intermediate", "Mac","109","Expert", "Mac","110","Expert", "Mac","111","Intermediate", "Mac","112","Intermediate", "Mac","113","Beginner", "Mac","114","Intermediate", "Mac","115","Intermediate", "Mac","116","Intermediate", "Mac","117","Intermediate", "Mac","126","Beginner", "Mac","127","Expert", "Mac","129","Expert", "Mac","130","Expert", "Mac","131","Expert", "Mac","200","Intermediate", "Mac","201","General", "Mac","202","Intermediate", "Mac","203","Intermediate", "Mac","204","General", "Mac","205","Intermediate", "Mac","207","Intermediate", "Mac","208","Beginner", "Mac","209","Intermediate", "Mac","300","General", "Mac","301","Intermediate", "Mac","303","Intermediate", "Mac","306","Expert", "Mac","307","Intermediate", "Mac","308","Intermediate", "Mac","309","Expert", "Mac","310","Expert", "Mac","313","Expert", "Mac","314","Intermediate", "Mac","316","Intermediate", "Mac","320","Intermediate", "Mac","400","General", "Mac","401","General", "Mac","402","Intermediate", "Mac","403","General", "Mac","404","General", "Mac","405","Expert", "Mac","406","General", "Mac","407","Expert", "Mac","408","Intermediate", "Mac","409","Beginner", "Mac","411","Expert", "Mac","412","Expert", "Mac","413","Intermediate", "Mac","418","Intermediate", "Mac","419","Intermediate", "Mac","420","Beginner", "Mac","422","Intermediate", "Mac","424","Beginner", "Mac","425","Intermediate", "Mac","426","Intermediate", "Mac","500","Intermediate", "Mac","501","Expert", "Mac","502","Expert", "Mac","503","Intermediate", "Mac","504","Intermediate", "Mac","505","Intermediate", "Mac","506","Expert", "Mac","508","Intermediate", "Mac","604","Expert", "Mac","605","Intermediate", "Mac","606","Intermediate", "Mac","607","Intermediate", "Mac","610","General", "Mac","611","Intermediate", "Mac","612","Intermediate", "Mac","613","Intermediate", "Mac","615","Intermediate", "Mac","617","Intermediate", "Mac","619","Intermediate", "Mac","623","Expert", "Mac","701","General", "iPhone","100","Intermediate", "iPhone","101","Expert", "iPhone","102","Expert", "iPhone","103","Intermediate", "iPhone","104","Intermediate", "iPhone","105","Intermediate", "iPhone","106","Intermediate", "iPhone","107","Expert", "iPhone","114","Intermediate", "iPhone","118","Intermediate", "iPhone","119","Intermediate", "iPhone","120","Expert", "iPhone","121","Intermediate", "iPhone","122","Intermediate", "iPhone","123","Expert", "iPhone","124","Intermediate", "iPhone","125","Intermediate", "iPhone","128","Intermediate", "iPhone","132","Expert", "iPhone","201","General", "iPhone","202","Intermediate", "iPhone","203","Intermediate", "iPhone","205","Intermediate", "iPhone","206","Intermediate", "iPhone","208","Beginner", "iPhone","300","General", "iPhone","302","Beginner", "iPhone","303","Intermediate", "iPhone","304","Intermediate", "iPhone","305","Intermediate", "iPhone","311","Intermediate", "iPhone","312","Intermediate", "iPhone","313","Expert", "iPhone","315","Intermediate", "iPhone","316","Intermediate", "iPhone","317","Intermediate", "iPhone","318","Intermediate", "iPhone","319","Expert", "iPhone","400","General", "iPhone","401","General", "iPhone","402","Intermediate", "iPhone","409","Beginner", "iPhone","410","General", "iPhone","413","Intermediate", "iPhone","414","Expert", "iPhone","415","Intermediate", "iPhone","416","Intermediate", "iPhone","417","Intermediate", "iPhone","418","Intermediate", "iPhone","420","Beginner", "iPhone","421","Beginner", "iPhone","422","Intermediate", "iPhone","423","Beginner", "iPhone","424","Beginner", "iPhone","503","Intermediate", "iPhone","507","Intermediate", "iPhone","508","Intermediate", "iPhone","601","Intermediate", "iPhone","602","Intermediate", "iPhone","603","Intermediate", "iPhone","605","Intermediate", "iPhone","610","General", "iPhone","611","Intermediate", "iPhone","612","Intermediate", "iPhone","613","Intermediate", "iPhone","617","Intermediate", "iPhone","619","Intermediate", "iPhone","625","Expert", "iPhone","701","General", "iPhone","702","Intermediate", "IT","201","General", "IT","500","Intermediate", "IT","503","Intermediate", "IT","601","Intermediate", "IT","602","Intermediate", "IT","603","Intermediate", "IT","604","Expert", "IT","605","Intermediate", "IT","606","Intermediate", "IT","607","Intermediate", "IT","608","Intermediate", "IT","609","Intermediate", "IT","611","Intermediate", "IT","612","Intermediate", "IT","613","Intermediate", "IT","614","Intermediate", "IT","615","Intermediate", "IT","616","Intermediate", "IT","617","Intermediate", "IT","618","Intermediate", "IT","619","Intermediate", "IT","620","Expert", "IT","621","Intermediate", "IT","622","Intermediate", "IT","623","Expert", "IT","624","Expert", "IT","625","Expert", ); while( @sessions ) { my($type,$number,$level,@fasel) = (@sessions); @sessions=@fasel; $session{$number}{$type}=$level; } return \%session; }