Hydrogen-Drumkits-Einsammlung
I'm freuing me 2 present that there (following):
Das downloaded mir grade nacheinander alle 47 (?) Soundbibliotheken, zu denen ich URLs in einer Textdatei (siehe oben!) gefunden habe.
Mehr als ordentlich, würde ich mal sagen. Wunnebar!
Code
#!/usr/bin/perl# hydrogen-drumkits.pluse strict;use warnings;use DBI;use ZugangsDaten_postgresql qw($DB_USER $DB_PASSWD);use Encode qw(is_utf8 decode encode);# Variablenmy @quelldatei;my @drumkit_names;my @drumkit_urls;my @drumkit_authors;# Programm## Öffnen der 'drumkit_list-1.php'-Datei zum Extrahieren der Drumkit-Datenopen ( my $fh, '<drumkit_list-1.php' );@quelldatei = <$fh>;close $fh;## Umwandeln in Textdatei, fehlende Zeilenumbrüche ergänzen### Array zu Stringmy $quelldatei = join("",@quelldatei);$quelldatei =~ s/<drumkit></<drumkit>\n</g;$quelldatei =~ s/<\/name></<\/name>\n</g;$quelldatei =~ s/<\/url></<\/url>\n</g;$quelldatei =~ s/<\/info></<\/info>\n</g;$quelldatei =~ s/<\/author></<\/author>\n</g;$quelldatei =~ s/<\/license></<\/license>\n</g;### String als Textdatei zwischen-/abspeichernopen ( my $fhw, '>drumkit_list-1.txt' );print $fhw $quelldatei;close $fhw;## Quelldatei-Array neu einlesen@quelldatei = split("\n",$quelldatei);## Auslesen der Drumkit-Namen & -URLs & -Autorenmy $drumkit_toggle = 0;foreach ( @quelldatei ) { if ( $_ =~ /<drumkit>/ ) { $drumkit_toggle = 1 } if ( $drumkit_toggle == 1 ) { if ( $_ =~ /<name>.*<\/name>/ ) { my $name = $_; $name =~ s/^(.*)<name>(.*)<\/name>(.*)$/$2/; chomp $name; push @drumkit_names, $name; } elsif ( $_ =~ /<url>.*<\/url>/ ) { my $url = $_; $url =~ s/^(.*)<url>(.*)<\/url>(.*)$/$2/; chomp $url; push @drumkit_urls, $url; } elsif ( $_ =~ /<author>.*<\/author>/ ) { my $author = $_; $author =~ s/^(.*)<author>(.*)<\/author>(.*)$/$2/; chomp $author; push @drumkit_authors, $author; } } if ( $_ =~ /<\/drumkit>/ ) { $drumkit_toggle = 0 }}## Ausgabe der extrahierten Informationen & Sammeln der URLs in einem Hashmy %urls;open ( my $fhs, '>drumkits_urls.txt' );for ( my $nr = 0; $nr < scalar @drumkit_names; $nr++ ) { print $fhs "Drumkit: ", $drumkit_names[$nr], "\n"; print $fhs "URL: ", $drumkit_urls[$nr], "\n"; if ( not exists $urls{$drumkit_urls[$nr]} ) { $urls{$drumkit_urls[$nr]} = 0 } print $fhs "Autor(in): ", $drumkit_authors[$nr], "\n"; print $fhs "----------------------------------------------\n";}close $fhs;print "\nHier ist die URL-Liste:\n\n";print map { $_, "\n" } keys %urls;print "\n\n";## Download aller Soundbanksforeach ( keys %urls ) { my $url = $_; `lwp-download $url /home/zarko/Downloads/Hydrogen-Soundbanks/`;}`lwp-download $url /home/zarko/Downloads/Hydrogen-Soundbanks/`;
Thelwp-downloadprogram is implemented using thelibwww-perllibrary. It is better suited to down load big files than thelwp-requestprogram because it does not store the file in memory. Another benefit is that it will keep you updated about its progress and that you don't have much options to worry about.
Das downloaded mir grade nacheinander alle 47 (?) Soundbibliotheken, zu denen ich URLs in einer Textdatei (siehe oben!) gefunden habe.
Die werde ich mir dann erstmal in meinem Online-Speicher sichern, zur Sicherheit.
Zwei Fehlermeldungen, 33 Dateien wurden herunter geladen. Damit bin ich natürlich schon mehr als zufrieden. Die Frage bleibt allerdings, bei welchen es nicht geklappert hat, außer bei den angegebenen ...
...
Am Besten versucht das Programm selbständig noch einmal da, wo noch nicht gedownloaded wurde (und dort, wo bereits, dann eben nicht noch einmal)!
* Ein Grund für mich, dennoch fröhlich zu sein.
sh: 1: amp: not foundsh: 1: Cheaps.h2drumkit: not foundZwei Fehlermeldungen, 33 Dateien wurden herunter geladen. Damit bin ich natürlich schon mehr als zufrieden. Die Frage bleibt allerdings, bei welchen es nicht geklappert hat, außer bei den angegebenen ...
...
Code-Änderung/-Erweiterung
## Ausgabe der extrahierten Informationen & Sammeln der URLs in einem Hashmy %urls;my %drumkits;open ( my $fhs, '>drumkits_urls.txt' );for ( my $nr = 0; $nr < scalar @drumkit_names; $nr++ ) { print $fhs "Drumkit: ", $drumkit_names[$nr], "\n"; print $fhs "URL: ", $drumkit_urls[$nr], "\n"; if ( not exists $urls{$drumkit_urls[$nr]} ) { $urls{$drumkit_urls[$nr]} = $drumkit_names[$nr] } if ( not exists $drumkits{$drumkit_names[$nr]} ) { $drumkits{$drumkit_names[$nr]} = 0 } print $fhs "Autor(in): ", $drumkit_authors[$nr], "\n"; print $fhs "----------------------------------------------\n";}close $fhs;print "\nHier ist die URL-Liste:\n\n";print map { $_, "\n" } keys %urls;print "\n\n";## Prüfen, welche Drumkits im Download-Verzeichnis sindopendir(DIR, "/home/zarko/Downloads/Hydrogen-Soundbanks/");my @files = grep(/.*\.h2drumkit/,readdir(DIR));closedir(DIR);foreach my $file (@files) { print "$file\n";}foreach ( keys %urls ) { my $drumkit2check = $_; print "Drumkit: $_\n"; foreach ( @files ) { my $file2check = $_; $file2check =~ s/(.*)\.h2drumkit/$1/; if ( $drumkit2check =~ m/$file2check/ ) { print "Datei ist vorhanden!\n"; $drumkits{$urls{$drumkit2check}} = 1; } else { print "Keine Datei vorhanden!\n" } }}### Ausdruck des Prüfergebnissesopen ( $fhs, '>drumkits_checked.txt' );foreach ( sort { $drumkits{$a} <=> $drumkits{$b} } keys %drumkits ) { print $fhs "Drumkit: $_ ist: $drumkits{$_}\n"}close $fhs;## Exit vor dem Downloadexit;## Download aller Soundbanksforeach ( keys %urls ) { my $url = $_; `lwp-download $url /home/zarko/Downloads/Hydrogen-Soundbanks/`;}Output
Drumkit: Denon CRB-90 ist: 0Drumkit: circAfrique v4 ist: 0Drumkit: Roland TR-707 ist: 0Drumkit: Roland TR-808 ist: 0Drumkit: Roland TR-909 ist: 0Drumkit: The Black Pearl 1.0 ist: 0Drumkit: Drumkit excepcional ist: 0Drumkit: Roland_MC-307_CR78&Cheaps ist: 0Drumkit: Roland TR-606 ist: 0Drumkit: Gimme A Hand 1.0 ist: 0Drumkit: HardElectro (sf) ist: 1Drumkit: Classic 3355606 (sf) ist: 1Drumkit: Roland_MC-307_TR-909 ist: 1Drumkit: Millo drums 1 (sf) ist: 1Drumkit: BJA_Pacific ist: 1Drumkit: Millo's MultiLayered 3 (sf) ist: 1Drumkit: Roland_MC-307_TR-808_ ist: 1Drumkit: Erny's percussions (sf) ist: 1Drumkit: HipHop-1 (sf) ist: 1Drumkit: HipHop-2 (sf) ist: 1Drumkit: Synthie-1 (sf) ist: 1Drumkit: GSCW Kit 2 (Flac edition) ist: 1Drumkit: rumpf_kit_z01_gm ist: 1Drumkit: Lightning1024 ist: 1Drumkit: Electric Empire (sf) ist: 1Drumkit: Roland_MC-307_Techno1 ist: 1Drumkit: TD-7 (sf) ist: 1Drumkit: Audiophob ist: 1Drumkit: GSCW Kit 1 (Flac edition) ist: 1Drumkit: belofilms.com - AC-Guitar-Strums (flac) ist: 1Drumkit: Millo's MultiLayered 2 (sf) ist: 1Drumkit: ColomboAcousticDrumkit (sf) ist: 1Drumkit: Techno-1 (sf) ist: 1Drumkit: Boss DR-110 (sf) ist: 1Drumkit: DeathMetal (sf) ist: 1Drumkit: Roland_MC-307_TR-606 ist: 1Drumkit: VariBreaks (sf) ist: 1Drumkit: Classic 626 (sf) ist: 1Drumkit: K-27 Trash Kit ist: 1Drumkit: Forzee Stereo Drumkit ist: 1Drumkit: TR808909 (sf) ist: 1Drumkit: SF3007-2011-Set-03 ist: 1Drumkit: EasternHop (sf) ist: 1Am Besten versucht das Programm selbständig noch einmal da, wo noch nicht gedownloaded wurde (und dort, wo bereits, dann eben nicht noch einmal)!
## Bereinigen der URLs um die bereits gedownloadedten Drumkitsforeach ( keys %urls ) { my $drumkit_name = $urls{$_}; if ( $drumkits{$drumkit_name} == 1 ) { delete $urls{$_} }}### Kontrolldruck der noch nicht gedownloadedten Drumkitsprint "\nDie noch nicht gedownloadedten Drumkits, URLs:\n";print map { $_, "\n" } keys %urls;print "\nHabe fertisch!\n";## Download aller noch nicht gedownloadedten Soundbanksforeach ( keys %urls ) { my $url = $_; `lwp-download $url /home/zarko/Downloads/Hydrogen-Soundbanks/`;}Output
Die noch nicht gedownloadedten Drumkits, URLs:http://www.hydrogen-music.org/download/drumkits/Roland TR-606.h2drumkithttps://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/The Black Pearl 1.0.h2drumkithttp://www.hydrogen-music.org/download/drumkits/Roland TR-808.h2drumkithttp://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/circAfrique v4.h2drumkithttps://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/Gimme A Hand 1.0.h2drumkithttp://hydro.smoors.de/Denon CRB-90.h2drumkithttp://hydro.smoors.de/Roland_MC-307_CR78&Cheaps.h2drumkithttp://www.hydrogen-music.org/download/drumkits/Roland TR-707.h2drumkithttp://hydro.smoors.de/Drumkit excepcional.h2drumkithttp://www.hydrogen-music.org/download/drumkits/Roland TR-909.h2drumkitHabe fertisch!sh: 1: amp: not foundsh: 1: Cheaps.h2drumkit: not found
Da klappert iwas nicht. Aber engal, hab's so ja gut unter Kontrolle.* Yapyeah!
Ach, womöglich sind es die Leerzeichen in den URLs, die die Sache problematisch machen. Kein Prob für mich!
Mit der URL-Kodierung kann ein Leerzeichen durch die Zeichenfolge%20übergeben werden.
Code
## Download aller noch nicht gedownloadedten Soundbanksforeach ( keys %urls ) { my $url = $_; $url =~ s/ /%20/; print "Umgewandelte URL: $url\n"; `lwp-download $url /home/zarko/Downloads/Hydrogen-Soundbanks/`;}Output ( nach mehrmaligem Versuch )
Die noch nicht gedownloadedten Drumkits, URLs:http://hydro.smoors.de/Denon CRB-90.h2drumkithttp://www.hydrogen-music.org/download/drumkits/Roland TR-808.h2drumkithttp://www.hydrogen-music.org/download/drumkits/Roland TR-707.h2drumkithttp://www.hydrogen-music.org/download/drumkits/Roland TR-909.h2drumkithttp://hydro.smoors.de/Roland_MC-307_CR78&Cheaps.h2drumkithttp://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/circAfrique v4.h2drumkithttp://www.hydrogen-music.org/download/drumkits/Roland TR-606.h2drumkitHabe fertisch!Umgewandelte URL: http://hydro.smoors.de/Denon%20CRB-90.h2drumkitUmgewandelte URL: http://www.hydrogen-music.org/download/drumkits/Roland%20TR-808.h2drumkitUmgewandelte URL: http://www.hydrogen-music.org/download/drumkits/Roland%20TR-707.h2drumkitUmgewandelte URL: http://www.hydrogen-music.org/download/drumkits/Roland%20TR-909.h2drumkitUmgewandelte URL: http://hydro.smoors.de/Roland_MC-307_CR78&Cheaps.h2drumkitsh: 1: amp: not foundsh: 1: Cheaps.h2drumkit: not foundUmgewandelte
URL:
http://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/circAfrique%20v4.h2drumkitUmgewandelte URL: http://www.hydrogen-music.org/download/drumkits/Roland%20TR-606.h2drumkit
Diese
Drumkits sind auch manuell nicht mehr über diese Links downloadbar.
Nicht schlimm. Außerdem ist mir der Name ja jetzt bekannt, von daher
kann ich diese explizit noch mal über Google suchen.
Z.B.:
Roland TR-808.h2drumkit
99 Hydrogen Drumkits! So viele?
...
Nach manueller Ergänzung
...
## Prüfen, welche Drumkits im Download-Verzeichnis sindopendir(DIR, "/home/zarko/Downloads/Hydrogen-Soundbanks/");my @files = grep(/.*\.h2drumkit/,readdir(DIR));closedir(DIR);### Die vorhandenen Drumkitsprint "\nDiese Drumkits haben wir:\n";foreach my $file (@files) { print "$file\n";}print "\nGedownloadedte Drumkits Liste Ende\n\n"; ......
Diese Drumkits haben wir:3355606kit.h2drumkitLugenfalscher_SG1.h2drumkitAkai_XE8.h2drumkitEmu_Sp12.h2drumkitDenon CRB-90(1).h2drumkitRoland_D-70.h2drumkitAkai_XR10_Latiny.h2drumkitBoss_DR220C.h2drumkitEmu_Drumulator.h2drumkitRoland_Tr-808_full.h2drumkitFairlight_CMI-iix_full.h2drumkitCasio_MT500.h2drumkitElectro_Harmonix_Drm15-32.h2drumkitEKO_Rhythmbox.h2drumkitBoss_DR202_altaira_full.h2drumkitLinn_Linndrum.h2drumkitClassic-626.h2drumkitCasio_PT80.h2drumkitLugenfalscher_BeguinesAndBeghards.h2drumkitTR808909.h2drumkitEmu_E-drum.h2drumkitCheetah_MD16_full.h2drumkitRoland_MC-307_TR-808.h2drumkitAlesis_DM5_ghazal_full.h2drumkitKorg_Wavestation.h2drumkitGimme A Hand 1.0.h2drumkitAlesis_SR16.h2drumkitKawai_R50_full.h2drumkitMatiasReccius_heavyMetal.h2drumkitLinn_LM2.h2drumkitKorg_KPR77.h2drumkitKorg_TX.h2drumkitFricke_MFB5x2.h2drumkitTicTacShutUp_studio_17-29.h2drumkitAlesis_D4FX_full.h2drumkitAlesis_HR16_wimpy.h2drumkitKawai_R100.h2drumkitRoland_CR79.h2drumkitBlackie666_8bit.h2drumkitAlesis_HR16_power_full.h2drumkitSynthie-1.h2drumkitThe Black Pearl 1.0.h2drumkitRoland_MC-307_Techno1.h2drumkitKorg_KR55.h2drumkitFlac_GSCW-2.h2drumkitYamaha_Tg33_full.h2drumkitKorg_DDD1.h2drumkitFlac_GSCW-1.h2drumkitSuonho_deconstruction.h2drumkitMillo_MultiLayered3.h2drumkitMXR_M185.h2drumkitHammond_DPM48.h2drumkitKawai_XD5.h2drumkitYamaha_TX16W.h2drumkitHardElectro1.h2drumkitHipHop-2.h2drumkitCasio_RZ3.h2drumkitFarfisa.h2drumkitBJA_Pacific.h2drumkitKorg_M1.h2drumkitQuasimidi_309.h2drumkitEnsoniq_ASRX_Acoustic_full.h2drumkitLtibbits_Rock.h2drumkitBoss_DR-110.h2drumkitLinn_Linn-9000.h2drumkitAkai_MPC-X.h2drumkitRoland_JD800.h2drumkitIanhall_SampleSet.h2drumkitKorg_DDD5.h2drumkitDeathMetal.h2drumkitAlesis_DM5_circle_full.h2drumkitJovica_Tonic_full.h2drumkitRoland_JD-990_full.h2drumkitAlesis_HR16_chaser.h2drumkitEmu_Drumulator-alt.h2drumkitAltemark_gameboy-lsdj.h2drumkitRoland_TB909.h2drumkitK-27_Trash_Kit.h2drumkitElectricEmpireKit.h2drumkitForzeeStereo.h2drumkitAudiophob.h2drumkitYoursck+Vitriolix_Texturizer.h2drumkitBdu_Roland_TR606.h2drumkitKorg_Minipops35.h2drumkitThanvannispen_industrisplode.h2drumkitMoogish_full.h2drumkitbelofilms_GuitarStrums.h2drumkitYamaha_Sy35.h2drumkitKorg_DDM110.h2drumkitKorg_SR120.h2drumkitRoland_MC-307_TR-909.h2drumkitRoland_D-10_withMOD_full.h2drumkitBoss_DR202_zaphod_full.h2drumkitCasio_PT30.h2drumkitSerge_Modular.h2drumkitAlesis_DM5_space_full.h2drumkitLightning1024.h2drumkitDrumkit excepcional.h2drumkitKorg_MS20+EMS_VCS3.h2drumkitLugenfalscher_Blitzbox.h2drumkitTechno-1.h2drumkitMillo-Drums_v.1.h2drumkitHipHop-1.h2drumkitMillo_MultiLayered2.h2drumkitBoss_DR-660_zapman_full.h2drumkitRoland_MC303.h2drumkitRoland_MC-307_TR-606.h2drumkitAlesis_HR16_skins_full.h2drumkitRoland_CR-1000.h2drumkitEnsoniq_ASRX_Electro_full.h2drumkitBoss_DR-660_taxman_full.h2drumkitHammond_Autovari22.h2drumkitAce-Tone_Rhythm_Plus.h2drumkitAlesis_DM5_future_full.h2drumkitYamaha_SY22_full.h2drumkitKorg_x5_full.h2drumkitOberheim_Dmx.h2drumkitAce-Tone_Rhythm_Ace.h2drumkitEasternHop-1.h2drumkitAkai_XR10.h2drumkitBoss_DR550_cymbale.h2drumkitTD-7kit.h2drumkitCasio_RAP1.h2drumkitLinn_LM1.h2drumkitErnysPercussion.h2drumkitSF3007-2011-Set-03.h2drumkitrumpf_kit_z01_h2.h2drumkitCasio_MT800.h2drumkitColomboAcousticDrumkit.h2drumkitLugenfalscher_Teatime.h2drumkitKorg_Minipops7.h2drumkitVariBreaks.h2drumkitAlesis_DM5_eclectic.h2drumkitBoss_DR550_dj.h2drumkitBoss_DR110_full.h2drumkitBoss_DR202_sainthood.h2drumkitGedownloadedte Drumkits Liste Ende
...
Mehr als ordentlich, würde ich mal sagen. Wunnebar!
Kommentare
Kommentar veröffentlichen