Autor Beitrag
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 10.07.09 16:04 
HI,

ich such ne Möglichkeit, mit der ich die Songtexte von www.LyricWiki.org runter laden kann. Weiß jmd von euch wie ich das in nem Programm realisieren kann?

MfG & Thx Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 10.07.09 16:11 
Ja, weiß ich. :mrgreen:

_________________
We are, we were and will not be.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 10.07.09 16:21 
hehe, gut das wars dann auch schon.... xD

ne spaß. wie mach ich das?

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Fr 10.07.09 16:29 
Zuerst musst du die Suchfunktion der Seite ansteuern. Suchen wir mal nach "faith no more land of sunshine":

http://lyricwiki.org/Special:GoogleSearchResults?cx=partner-pub-7265006513689515%3Aenbi50a4igp&cof=FORID%3A9&ie=UTF-8&q=faith+no+more+land+of+sunshine&sa=Search#869
So einen String kannst du dir ja problemlos zusammen bauen. Die Seite lädst du dann mit IdHttp.get in eine StringList und extrahierst dir die Suchergebnisse (dazu musst du dir den HTML-Code Ergebnisseite ansehen, jedes Suchergebnis hat einen ähnlichen HTML-Code den du als Suchmuster verwenden kannst).

Hast du die URL extrahiert, z. B.
ausblenden Quelltext
1:
http://lyricwiki.org/Faith_No_More:Land_Of_Sunshine					


lLädst du diese URL ebenfalls in eine StringList und extrahierst alles zwischen <div class="lyricbox"> und </div>.

Was du alles brauchst: TStringList, Suche in: Delphi-Forum, Delphi-Library TIDHTTP, Suche in: Delphi-Forum, Delphi-Library POS, Suche in: Delphi-Forum, Delphi-Library COPY, Suche in: Delphi-Forum, Delphi-Library POSEX
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Fr 10.07.09 16:33 
Kannst Du denn mal genauer beschreiben, was Du denn als Ausgabe haben möchtest?
Möchtest Du nur z.B. diese Seite als ganzes speichern - oder möchtest Du dann nur den Songtext haben?
Um nur den Text zu speichern, bräuchtest Du ja nur nach diesem: <div class='lyricbox' > und nach dem Ende davon -also dem nächsten, direkt darauf folgenden:</div> suchen und das dazwischen ist dann doch der Text, inklusive HTML-Formatierung.


Zuletzt bearbeitet von ffgorcky am Fr 10.07.09 16:39, insgesamt 3-mal bearbeitet
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 10.07.09 16:34 
Oh, das geht besser. Steht doch alles auf der Seite, was man da tun muss: lyricwiki.org/LyricWiki:REST :zwinker:

Alternativ gehts auch über SOAP, aber auf den Delphi-Tagen haben wir ja dieses Jahr gelernt, dass SOAP sowieo Mist ist, und REST viel toller. :D

Mal ein Auszug aus meinem Player-Code:
Erstmal ein paar Hilfsfunktionen - das ist die Version für Delphi 7, also String = AnsiString = UTF8String.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
function StringToURLString(aString: String): String;
var i: integer;
begin
    result := '';
    for i := 1 to length(aString) do
      result := result + '%'  + IntToHex(Ord(aString[i]),2)
end;

function WordUppercase(s: String): String;
var
    i: Integer;
    tmp: String;
begin
    s := LowerCase(s);
    result := s;

    with TStringList.Create do try
        Delimiter := ' ';
        DelimitedText := s;
        for i := 0 to Count-1 do
            if (Strings[i] <> ''then
            begin
                tmp := Strings[i];
                tmp[1] := Upcase(tmp[1]);
                Strings[i] := tmp;
            end;
        Delimiter := '_';//#32;
        result := DelimitedText;
    finally
        Free;
    end;
end;


Die eigentliche Lyric-Such-Methode ist dann stark gekürzt so: (d.h. ohne Thread-Kram und Exception-Handling)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
LyricQuery := 'http://lyricwiki.org/api.php?func=getSong&artist='
                        + StringToURLString(WordUppercase(UTF8Encode((aArtist))))
                        + '&song='
                        + StringToURLString(WordUppercase(UTF8Encode((aTitel))))
                        + '&fmt=text';
myLyrics := idHttp1.Get(LyricQuery);

_________________
We are, we were and will not be.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 10.07.09 17:38 
wunderhübsch. funzt alles 1a. danke!

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Sa 11.07.09 16:27 
HI,

1 Problem hab ich noch und zwar bleibt das ganze Prog hängen, solange TidHTTP arbeitet, kann man das ändern?

MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 11.07.09 17:04 
Ja, das kann man auch ändern. Eine Möglichkeit wäre diese Antifreeze-Komponente von den Indys, die aber vom Gefühl her irgendwie Murks ist. Besser ist es, das herunterladen in einen Thread auszulagern.

_________________
We are, we were and will not be.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Sa 11.07.09 17:59 
HI,

hab die Suche jetzt komplet in nen Thread ausgelagert, aber wenn ich gesucht hab hageltes beim schließen des Progs Fehlermeldungen: Ungültiges Fensterhandle.
So hab ich das gemacht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
  
TSearchThread = class(TThread)
    abort: Boolean;
    procedure Execute; override;
  end;

procedure TSearchThread.Execute;
begin
  [Quelltext zur LyricSuche mit schleife die die Datein durchzählt. 
   wenn abort = true bricht die schleife ab...]
end;

procedure TForm1.StartSearchClick(Sender: TObject);
var i: Integer;
begin    
  //SearchThread erstellen
  Thread := TSearchThread.Create(True);
  Thread.FreeOnTerminate := True;
  Thread.Resume;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(Thread) then Thread.Terminate;
end;

Hab noch nie mit Thread programmiert und weiß net wo ich den Fehler suchen soll...

MfH & Thx Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 05.08.09 09:09 
Heyho,

irgendwie geht das REST nich mehr. Gibts noch ne andere Lsg? Ich hab mir das jetzt Stück für Stück aus den HTML-Code zusammen gebastelt, aber das is ar***-lahm!

Mfg Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 05.08.09 09:30 
Argh. Diese [*selbstzensur*] von Plattenbossen. Kriegen den Hals wieder nicht voll und torpedieren ein offenes Projekt. Klar, durch die kostenlose Verbreitung von Liedtexten entgehen den armen Künstlern drölftausend Milliarden Einnahmen pro Tag. :autsch:

Aktuelle Antwort bei Lyric-Requests:
Unfortunately, due to licensing restrictions from some of the major music publishers we can no longer return lyrics through the LyricWiki API (where this application gets some or all of its lyrics).

The lyrics for this song can be found at the following URL:
<URL zum angeforderten Song>

(Please note: this is not the fault of the developer who created this application, but is a restriction imposed by the music publishers themselves.)


Da bleibt wohl als Abhilfe nur, die URL aus dieser Antwort auszulesen, die Seite aufzurufen und den Text daraus zu extrahieren, siehe auch hier.

Urheberrechte hin oder her, die Künstler sollen und müssen für ihre Arbeit entlohnt werden. Aber bei solchen Aktionen möchte ich einfach nur alle diese Typen in einen Sack packen und mit einem dicken Knüppel draufhauen. Da denkt man, die kriegen langsam die Kurve von wegen kein DRM, mp3 und fair-use, und dann kommt wieder sowas. :motz:

_________________
We are, we were and will not be.
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 595
Erhaltene Danke: 4

Windows 8.1, Linux Debian 8, Android Lollipop
Delphi, PHP, Java (Android)
BeitragVerfasst: Do 06.08.09 18:56 
Also scheint doch noch zu gehen wenn es die Seite lyricwiki.org/LyricWiki:REST noch gibt!?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 06.08.09 18:59 
Probier mal die Links auf der Seite aus, die als Beispiel für die Textsuche dienen sollen ;-). Die API ist nicht komplett abgeschaltet, aber die wichtigen Teile schon. :(

_________________
We are, we were and will not be.
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mo 02.11.09 23:29 
Hey,

da LyricWiki ja zwischenzeitlich komplett down war ist sie jetzt zu neuem Leben erwacht...
Mit dem kleinen aber feinen Unterschied, das der Text jetzt durch ein JavaScript geladen wird und nicht mehr direkt im Quelltext steht.
Nun die Frage: kommt man irgendwie über den JavaScript an die Lyrics, wenn ja wie und wäre das legal?

Mfg Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Mo 02.11.09 23:32 
Um sicher zu gehen, frag doch einfach an, ob du es bei denen darfst. Aber generell würde ich sagen, dass das nicht OK ist.

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 03.11.09 08:50 
Irgendwie geht das bestimmt. Es ist dann aber keine Methode, die sicher vor Veränderungen an der Seite ist.

Legal ist das dann natürlich keineswegs - denn die API wurde ja abgeschaltet, um genau das zu verhindern. Außerdem schädigst du mit dem automatisierten Herunterladen von Lyrics die Künstler, hast Schuld an der Weltwirtschaftskrise und bist (zumindest teilweise) Verursacher der Schweinegrippe-Pandemie. :roll:

_________________
We are, we were and will not be.
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 03.11.09 11:13 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
[...] Alternativ gehts auch über SOAP, aber auf den Delphi-Tagen haben wir ja dieses Jahr gelernt, dass SOAP sowieo Mist ist, und REST viel toller. :D [...]

Ach je, das seh ich ja jetzt erst. :shock:

Wer verzapft denn so einen ausgemachten Unsinn? Sollte das in dieser Allgemeinheit tatsächlich Ernst gemeint sein, hat da jemand aber von seinem Metier nicht wirklich Ahnung.

Sicherlich ist REST für solche unkritischen Suchabfragen das Protokoll der Wahl, aber was ist denn mit SOA-Infrastrukturen, in denen z.B. Sicherheitsapekte oder nichtfunktionale Attribute eine Rolle spielen? Von fehlender Unterstützung von Komponier- oder Orchestrierbarkeit durch REST möchte ich gar nicht erst sprechen...
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8535
Erhaltene Danke: 473

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 03.11.09 11:19 
Das war Marco Cantu, und das war wohl so halb ernst gemeint. Begründung (in etwa): REST ist deutlich einfacher und simpler gestrickt, und reicht für viele Anwendungen aus. In seinem Vortrag hat er dann einige Beispiele genannt, wie man mit ein paar Zeilen Code da was basteln kann. IIRC was zu GoogleMaps und Twitter.

Eine allgemeine Abwertung von SOAP war das vermutlich nicht, aber oftmals ist das wohl eher mit Kanonen auf Spatzen geschossen.

_________________
We are, we were and will not be.
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Di 03.11.09 11:40 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Das war Marco Cantu, und das war wohl so halb ernst gemeint. [...]

Ach so, dann bin ich ja beruhigt. ;)

Marco Cantus Beispiele zu REST beziehen sich ja tatsächlich auf den Konsum unkritischer Abfragen. Dort sehe ich auf Grund des geringeren Overheads tatsächlich Vorteile für REST gegenüber anderen Protokollen.