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.pl
use strict;
use warnings;
use DBI;
use ZugangsDaten_postgresql qw($DB_USER $DB_PASSWD);
use Encode qw(is_utf8 decode encode);
# Variablen
my @quelldatei;
my @drumkit_names;
my @drumkit_urls;
my @drumkit_authors;
# Programm
## Öffnen der 'drumkit_list-1.php'-Datei zum Extrahieren der Drumkit-Daten
open ( my $fh, '<drumkit_list-1.php' );
@quelldatei = <$fh>;
close $fh;
## Umwandeln in Textdatei, fehlende Zeilenumbrüche ergänzen
### Array zu String
my $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-/abspeichern
open ( my $fhw, '>drumkit_list-1.txt' );
print $fhw $quelldatei;
close $fhw;
## Quelldatei-Array neu einlesen
@quelldatei = split("\n",$quelldatei);
## Auslesen der Drumkit-Namen & -URLs & -Autoren
my $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 Hash
my %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 Soundbanks
foreach ( keys %urls ) {
my $url = $_;
`lwp-download $url /home/zarko/Downloads/Hydrogen-Soundbanks/`;
}
`lwp-download $url /home/zarko/Downloads/Hydrogen-Soundbanks/`;
The
lwp-download
program is implemented using the
libwww-perl
library. It is better suited to down load big files than the
lwp-request
program 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 found
sh: 1: Cheaps.h2drumkit: not found
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 ...
...
Code-Änderung/-Erweiterung
## Ausgabe der extrahierten Informationen & Sammeln der URLs in einem Hash
my %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 sind
opendir(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üfergebnisses
open ( $fhs, '>drumkits_checked.txt' );
foreach ( sort { $drumkits{$a} <=> $drumkits{$b} } keys %drumkits ) {
print $fhs "Drumkit: $_ ist: $drumkits{$_}\n"
}
close $fhs;
## Exit vor dem Download
exit;
## Download aller Soundbanks
foreach ( keys %urls ) {
my $url = $_;
`lwp-download $url /home/zarko/Downloads/Hydrogen-Soundbanks/`;
}
Output
Drumkit: Denon CRB-90 ist: 0
Drumkit: circAfrique v4 ist: 0
Drumkit: Roland TR-707 ist: 0
Drumkit: Roland TR-808 ist: 0
Drumkit: Roland TR-909 ist: 0
Drumkit: The Black Pearl 1.0 ist: 0
Drumkit: Drumkit excepcional ist: 0
Drumkit: Roland_MC-307_CR78&Cheaps ist: 0
Drumkit: Roland TR-606 ist: 0
Drumkit: Gimme A Hand 1.0 ist: 0
Drumkit: HardElectro (sf) ist: 1
Drumkit: Classic 3355606 (sf) ist: 1
Drumkit: Roland_MC-307_TR-909 ist: 1
Drumkit: Millo drums 1 (sf) ist: 1
Drumkit: BJA_Pacific ist: 1
Drumkit: Millo's MultiLayered 3 (sf) ist: 1
Drumkit: Roland_MC-307_TR-808_ ist: 1
Drumkit: Erny's percussions (sf) ist: 1
Drumkit: HipHop-1 (sf) ist: 1
Drumkit: HipHop-2 (sf) ist: 1
Drumkit: Synthie-1 (sf) ist: 1
Drumkit: GSCW Kit 2 (Flac edition) ist: 1
Drumkit: rumpf_kit_z01_gm ist: 1
Drumkit: Lightning1024 ist: 1
Drumkit: Electric Empire (sf) ist: 1
Drumkit: Roland_MC-307_Techno1 ist: 1
Drumkit: TD-7 (sf) ist: 1
Drumkit: Audiophob ist: 1
Drumkit: GSCW Kit 1 (Flac edition) ist: 1
Drumkit: belofilms.com - AC-Guitar-Strums (flac) ist: 1
Drumkit: Millo's MultiLayered 2 (sf) ist: 1
Drumkit: ColomboAcousticDrumkit (sf) ist: 1
Drumkit: Techno-1 (sf) ist: 1
Drumkit: Boss DR-110 (sf) ist: 1
Drumkit: DeathMetal (sf) ist: 1
Drumkit: Roland_MC-307_TR-606 ist: 1
Drumkit: VariBreaks (sf) ist: 1
Drumkit: Classic 626 (sf) ist: 1
Drumkit: K-27 Trash Kit ist: 1
Drumkit: Forzee Stereo Drumkit ist: 1
Drumkit: TR808909 (sf) ist: 1
Drumkit: SF3007-2011-Set-03 ist: 1
Drumkit: EasternHop (sf) ist: 1
Am 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 Drumkits
foreach ( keys %urls ) {
my $drumkit_name = $urls{$_};
if ( $drumkits{$drumkit_name} == 1 ) {
delete $urls{$_}
}
}
### Kontrolldruck der noch nicht gedownloadedten Drumkits
print "\nDie noch nicht gedownloadedten Drumkits, URLs:\n";
print map { $_, "\n" } keys %urls;
print "\nHabe fertisch!\n";
## Download aller noch nicht gedownloadedten Soundbanks
foreach ( 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.h2drumkit
https://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/The Black Pearl 1.0.h2drumkit
http://www.hydrogen-music.org/download/drumkits/Roland TR-808.h2drumkit
http://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/circAfrique v4.h2drumkit
https://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/Gimme A Hand 1.0.h2drumkit
http://hydro.smoors.de/Denon CRB-90.h2drumkit
http://hydro.smoors.de/Roland_MC-307_CR78&Cheaps.h2drumkit
http://www.hydrogen-music.org/download/drumkits/Roland TR-707.h2drumkit
http://hydro.smoors.de/Drumkit excepcional.h2drumkit
http://www.hydrogen-music.org/download/drumkits/Roland TR-909.h2drumkit
Habe fertisch!
sh: 1: amp: not found
sh: 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 Soundbanks
foreach ( 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.h2drumkit
http://www.hydrogen-music.org/download/drumkits/Roland TR-808.h2drumkit
http://www.hydrogen-music.org/download/drumkits/Roland TR-707.h2drumkit
http://www.hydrogen-music.org/download/drumkits/Roland TR-909.h2drumkit
http://hydro.smoors.de/Roland_MC-307_CR78&Cheaps.h2drumkit
http://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/circAfrique v4.h2drumkit
http://www.hydrogen-music.org/download/drumkits/Roland TR-606.h2drumkit
Habe fertisch!
Umgewandelte URL: http://hydro.smoors.de/Denon%20CRB-90.h2drumkit
Umgewandelte URL: http://www.hydrogen-music.org/download/drumkits/Roland%20TR-808.h2drumkit
Umgewandelte URL: http://www.hydrogen-music.org/download/drumkits/Roland%20TR-707.h2drumkit
Umgewandelte URL: http://www.hydrogen-music.org/download/drumkits/Roland%20TR-909.h2drumkit
Umgewandelte URL: http://hydro.smoors.de/Roland_MC-307_CR78&Cheaps.h2drumkit
sh: 1: amp: not found
sh: 1: Cheaps.h2drumkit: not found
Umgewandelte
URL:
http://sourceforge.net/projects/hydrogen/files/Sound%20Libraries/Main%20sound%20libraries/circAfrique%20v4.h2drumkit
Umgewandelte 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 sind
opendir(DIR, "/home/zarko/Downloads/Hydrogen-Soundbanks/");
my @files = grep(/.*\.h2drumkit/,readdir(DIR));
closedir(DIR);
### Die vorhandenen Drumkits
print "\nDiese Drumkits haben wir:\n";
foreach my $file (@files) {
print "$file\n";
}
print "\nGedownloadedte Drumkits Liste Ende\n\n";
...
...
Diese Drumkits haben wir:
3355606kit.h2drumkit
Lugenfalscher_SG1.h2drumkit
Akai_XE8.h2drumkit
Emu_Sp12.h2drumkit
Denon CRB-90(1).h2drumkit
Roland_D-70.h2drumkit
Akai_XR10_Latiny.h2drumkit
Boss_DR220C.h2drumkit
Emu_Drumulator.h2drumkit
Roland_Tr-808_full.h2drumkit
Fairlight_CMI-iix_full.h2drumkit
Casio_MT500.h2drumkit
Electro_Harmonix_Drm15-32.h2drumkit
EKO_Rhythmbox.h2drumkit
Boss_DR202_altaira_full.h2drumkit
Linn_Linndrum.h2drumkit
Classic-626.h2drumkit
Casio_PT80.h2drumkit
Lugenfalscher_BeguinesAndBeghards.h2drumkit
TR808909.h2drumkit
Emu_E-drum.h2drumkit
Cheetah_MD16_full.h2drumkit
Roland_MC-307_TR-808.h2drumkit
Alesis_DM5_ghazal_full.h2drumkit
Korg_Wavestation.h2drumkit
Gimme A Hand 1.0.h2drumkit
Alesis_SR16.h2drumkit
Kawai_R50_full.h2drumkit
MatiasReccius_heavyMetal.h2drumkit
Linn_LM2.h2drumkit
Korg_KPR77.h2drumkit
Korg_TX.h2drumkit
Fricke_MFB5x2.h2drumkit
TicTacShutUp_studio_17-29.h2drumkit
Alesis_D4FX_full.h2drumkit
Alesis_HR16_wimpy.h2drumkit
Kawai_R100.h2drumkit
Roland_CR79.h2drumkit
Blackie666_8bit.h2drumkit
Alesis_HR16_power_full.h2drumkit
Synthie-1.h2drumkit
The Black Pearl 1.0.h2drumkit
Roland_MC-307_Techno1.h2drumkit
Korg_KR55.h2drumkit
Flac_GSCW-2.h2drumkit
Yamaha_Tg33_full.h2drumkit
Korg_DDD1.h2drumkit
Flac_GSCW-1.h2drumkit
Suonho_deconstruction.h2drumkit
Millo_MultiLayered3.h2drumkit
MXR_M185.h2drumkit
Hammond_DPM48.h2drumkit
Kawai_XD5.h2drumkit
Yamaha_TX16W.h2drumkit
HardElectro1.h2drumkit
HipHop-2.h2drumkit
Casio_RZ3.h2drumkit
Farfisa.h2drumkit
BJA_Pacific.h2drumkit
Korg_M1.h2drumkit
Quasimidi_309.h2drumkit
Ensoniq_ASRX_Acoustic_full.h2drumkit
Ltibbits_Rock.h2drumkit
Boss_DR-110.h2drumkit
Linn_Linn-9000.h2drumkit
Akai_MPC-X.h2drumkit
Roland_JD800.h2drumkit
Ianhall_SampleSet.h2drumkit
Korg_DDD5.h2drumkit
DeathMetal.h2drumkit
Alesis_DM5_circle_full.h2drumkit
Jovica_Tonic_full.h2drumkit
Roland_JD-990_full.h2drumkit
Alesis_HR16_chaser.h2drumkit
Emu_Drumulator-alt.h2drumkit
Altemark_gameboy-lsdj.h2drumkit
Roland_TB909.h2drumkit
K-27_Trash_Kit.h2drumkit
ElectricEmpireKit.h2drumkit
ForzeeStereo.h2drumkit
Audiophob.h2drumkit
Yoursck+Vitriolix_Texturizer.h2drumkit
Bdu_Roland_TR606.h2drumkit
Korg_Minipops35.h2drumkit
Thanvannispen_industrisplode.h2drumkit
Moogish_full.h2drumkit
belofilms_GuitarStrums.h2drumkit
Yamaha_Sy35.h2drumkit
Korg_DDM110.h2drumkit
Korg_SR120.h2drumkit
Roland_MC-307_TR-909.h2drumkit
Roland_D-10_withMOD_full.h2drumkit
Boss_DR202_zaphod_full.h2drumkit
Casio_PT30.h2drumkit
Serge_Modular.h2drumkit
Alesis_DM5_space_full.h2drumkit
Lightning1024.h2drumkit
Drumkit excepcional.h2drumkit
Korg_MS20+EMS_VCS3.h2drumkit
Lugenfalscher_Blitzbox.h2drumkit
Techno-1.h2drumkit
Millo-Drums_v.1.h2drumkit
HipHop-1.h2drumkit
Millo_MultiLayered2.h2drumkit
Boss_DR-660_zapman_full.h2drumkit
Roland_MC303.h2drumkit
Roland_MC-307_TR-606.h2drumkit
Alesis_HR16_skins_full.h2drumkit
Roland_CR-1000.h2drumkit
Ensoniq_ASRX_Electro_full.h2drumkit
Boss_DR-660_taxman_full.h2drumkit
Hammond_Autovari22.h2drumkit
Ace-Tone_Rhythm_Plus.h2drumkit
Alesis_DM5_future_full.h2drumkit
Yamaha_SY22_full.h2drumkit
Korg_x5_full.h2drumkit
Oberheim_Dmx.h2drumkit
Ace-Tone_Rhythm_Ace.h2drumkit
EasternHop-1.h2drumkit
Akai_XR10.h2drumkit
Boss_DR550_cymbale.h2drumkit
TD-7kit.h2drumkit
Casio_RAP1.h2drumkit
Linn_LM1.h2drumkit
ErnysPercussion.h2drumkit
SF3007-2011-Set-03.h2drumkit
rumpf_kit_z01_h2.h2drumkit
Casio_MT800.h2drumkit
ColomboAcousticDrumkit.h2drumkit
Lugenfalscher_Teatime.h2drumkit
Korg_Minipops7.h2drumkit
VariBreaks.h2drumkit
Alesis_DM5_eclectic.h2drumkit
Boss_DR550_dj.h2drumkit
Boss_DR110_full.h2drumkit
Boss_DR202_sainthood.h2drumkit
Gedownloadedte Drumkits Liste Ende
...
Mehr als ordentlich, würde ich mal sagen. Wunnebar!
Kommentare
Kommentar veröffentlichen