Rippa låtar från vkgoeswild.com

Här kan du dela med dig av dina bästa tips och knep.
Kategoriregler
Här ligger de utförliga instruktionerna vi kan tänkas behöva. Leta här om du tex behöver installera nåt program eller sätta upp någon funktion. Starta inte trådar utan att ha ett svar.
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Rippa låtar från vkgoeswild.com

Inlägg av m!rage »

Det finns en Youtube-kändis som kallar sig vkgoeswild. Hon gör riktigt bra piano-covers av metal-låtar. Många av dessa covers har hon lagt upp som mp3-filer på sin hemsida http://www.vkgoeswild.com/. Eftersom jag inte hade någon lust att klicka på alla 170 länkarna en i taget skrev jag ett program som gör det åt mig. Inget jag är särskilt stolt över för jag rafsade ihop det på mindre än en timme. Beskrivningen finns i den inledande kommentaren:

Kod: Markera allt

/*
 * vkgoeswild ripper rev. 1
 *
 * Sparar alla mp3-filer från vkgoeswild.com med hjälp av wget.
 *
 * Användning: Gå in på http://www.vkgoeswild.com/?section=mp3&songs=1 och visa
 * HTML-koden för länkarna till mp3-filerna. Den ska vara i formatet
 * <li><a href="downloads.php3?song=355">Guns N' Roses - Estranged</a><li><a href... osv.
 * Kopiera hela raden och spara i filen vkgoeslinks i mappen du står i när du kör programmet.
 * Kör programmet med ./vkripper
 * Det sparar alla filer i vkgoeslinks till mappen du står i.
 *
 * OBS! Jag har inte implementerat någon felhantering alls för jag
 * slängde bara ihop programmet på en halvtimme. Det KAN (läs: kommer att) krasha
 * om något oväntat händer, men det duger för mina behov för tillfället.
 *
 * Koden för funktionen Tokenize har jag tagit utan lov från
 * http://www.oopweb.com/CPP/Documents/CPPHOWTO/Volume/C++Programming-HOWTO-7.html
 * Hoppas att det går bra.
 *
 * All annan kod är skriven av mig
 * (c) Anton Eliasson, 26 april 2010
 * Licens: Creative Commons Attribution-Share Alike 3.0
 *
 */

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <fstream>
using namespace std;

void Tokenize(const string& str, vector<string>& tokens, const string& delimiters = " ")
{
    // Skip delimiters at beginning.
    string::size_type lastPos = str.find_first_not_of(delimiters, 0);
    // Find first "non-delimiter".
    string::size_type pos     = str.find_first_of(delimiters, lastPos);

    while (string::npos != pos || string::npos != lastPos)
    {
        // Found a token, add it to the vector.
        tokens.push_back(str.substr(lastPos, pos - lastPos));
        // Skip delimiters.  Note the "not_of"
        lastPos = str.find_first_not_of(delimiters, pos);
        // Find next "non-delimiter"
        pos = str.find_first_of(delimiters, lastPos);
    }
}

int main()
{
    ifstream infil;
    vector<string> tokens;

    infil.open("vkgoeslinks");
    if (!infil) {
        cout << "Kunde inte öppna fil!";
        exit(1);
    }

    string str;
    getline(infil, str);    // bör ta hela filen om den är i rätt format
    
    Tokenize(str, tokens, "\"");

    for (unsigned int i = 0; i < tokens.size(); i++) {
/*        if (i % 2 == 1) {   // vi vill endast ha de ojämna strängarna
            cout << tokens.at(i) << endl;
        }*/
        string temp = tokens.at(i); // plockar ut en delsträng
        //cout << temp << endl;
        if (temp.find("downloads.php3?song=") == 0) {    // giltig länk
            string cmd = "wget http://www.vkgoeswild.com/" + temp;  // bygg kommando
//            cout << cmd << endl;
            if (system(cmd.c_str())) {  // spara mha wget
                cout << "status: 1\n";
            } else {
                cout << "status: 0\n";
            }
        }
    }
}
Här kan man lyssna på hennes piano-covers.
Användarvisningsbild
Hylas
Inlägg: 1511
Blev medlem: 06 aug 2007, 18:05
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster

Re: Rippa låtar från vkgoeswild.com

Inlägg av Hylas »

Detta var hur bra som helst ;D Tack för den länken!

Som hon behandlar Metallica:

http://www.youtube.com/watch?v=Q_nm3_Y3ldg

Grymt!
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Rippa låtar från vkgoeswild.com

Inlägg av m!rage »

Jo jag vet. Alltid bra ljudkvalitet också, till skillnad från de flesta andra pianolirare på YT som använder kamerans mikrofon så spelar hon in direkt från pianots ljudutgång
Användarvisningsbild
pun
Inlägg: 5317
Blev medlem: 20 okt 2007, 22:11
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster

Re: Rippa låtar från vkgoeswild.com

Inlägg av pun »

Hon är ju kanon efter att ha lyssnat igenom några låtar.... ;D
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Rippa låtar från vkgoeswild.com

Inlägg av dmz »

Din lösning fungerar säkert jättebra, men jag är lat av mig och att manuellt kopiera ur koden känns... jobbigt. :p
Så jag gjorde en oneliner som sparar filerna efter namn-id;

Kod: Markera allt

curl http://www.vkgoeswild.com/\?section\=mp3\&songs\=1 | grep '<li><a href="downloads.php3'|perl -pe 's/<\/a>/\n/g'|perl -pe 's/^<.+\?song=//g'|perl -pe 's/">/,/'|perl -pe '%h=();while(<>){my($id,$name) = split /,/; $h{$id} = $name;}print "$_\n" for keys %h;my $burl="http://www.vkgoeswild.com/?section=mp3&songs=1";use WWW::Mechanize; my $m=WWW::Mechanize->new;$m->get($burl);foreach my $song($m->links){if($song->url_abs =~ /.+song=([0-9]+)$/) {my $id = $1;my $fname = $h{$id}.$id.".mp3";$m->follow_link(url => $song->url); print "Saving ". $song->url, " to ", "$fname\n";$m->save_content($fname);$m->back;}}'
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Hund
Inlägg: 16492
Blev medlem: 25 jan 2007, 04:15
OS: Gentoo
Ort: Norrland
Kontakt:

Re: Rippa låtar från vkgoeswild.com

Inlägg av Hund »

Snuff är nog min favorit. Det är ruskigt bra stämningen över den. Tack för tips om henne (och skriptet). :P
Linuxkompis - En vänlig Linux-gemenskap för alla!
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Rippa låtar från vkgoeswild.com

Inlägg av m!rage »

Jag har inte lyssnat igenom hälften än, men Snuff var väldigt bra.
@dmz:
Du ska alltid vara värst :P Har inte testat ditt skript (fattar inte mycket av det heller :)) men det fungerar säkert minst lika bra
Skriv svar

Återgå till "Guider"