Skip to content

Instantly share code, notes, and snippets.

@zbyna
Last active September 1, 2021 17:50
Show Gist options
  • Save zbyna/22fd3fa78a4558933cbb to your computer and use it in GitHub Desktop.
Save zbyna/22fd3fa78a4558933cbb to your computer and use it in GitHub Desktop.
Internet tools - scrarping thetvdb.com pomocí xpath query
procedure TForm1.Button2Click(Sender: TObject);
var pomQuery: String;
v: IXQValue;
i: Integer;
pomString: String;
pomString3: String;
p: IXQValue;
p3: IXQValue;
begin
str:= ' <?xml version="1.0" encoding="UTF-8" ?>'+ slineBreak +
'<Data>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>78901</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>Supernatural</SeriesName>' + slineBreak +
'<banner>graphical/78901-g4.jpg</banner>' + slineBreak +
'<Overview>Dean and Sam Winchester are two brothers with a special talent. Well-versed...</Overview>' + slineBreak +
'<FirstAired>2005-09-13</FirstAired>' + slineBreak +
'<IMDB_ID>tt0460681</IMDB_ID>' + slineBreak +
'<zap2it_id>EP00754231</zap2it_id>' + slineBreak +
'<id>78901</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>79426</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>Supernatural Science</SeriesName>' + slineBreak +
'<banner>graphical/z79426-g.jpg</banner>' + slineBreak +
'<Overview>Even hardheaded skeptics have to concede that there’s something inherently...</Overview>' + slineBreak +
'<FirstAired>2006-11-09</FirstAired>' + slineBreak +
'<zap2it_id>EP00359360</zap2it_id>' + slineBreak +
'<id>79426</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>154401</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>5th Dimension - Secrets of the Supernatural</SeriesName>' + slineBreak +
'<banner>graphical/154401-g.jpg</banner>' + slineBreak +
'<Overview>Does life end in death? Or does the soul wander from body to body? Are there...</Overview>' + slineBreak +
'<id>154401</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>197001</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>Supernatural the Animation</SeriesName>' + slineBreak +
'<banner>graphical/197001-g2.jpg</banner>' + slineBreak +
'<Overview>Supernatural the Animation will not only remake the best episodes from the ...</Overview>' + slineBreak +
'<FirstAired>2011-02-23</FirstAired>' + slineBreak +
'<IMDB_ID>tt1679482</IMDB_ID>' + slineBreak +
'<id>197001</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>79432</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>Supernatural The Unseen Powers of Animals</SeriesName>' + slineBreak +
'<banner>graphical/z79432-g.jpg</banner>' + slineBreak +
'<Overview>When science fiction becomes science fact. This groundbreaking series unravels...</Overview>' + slineBreak +
'<FirstAired>1999-03-30</FirstAired>' + slineBreak +
'<id>79432</id>' + slineBreak +
'</Series>' + slineBreak +
'<Series>' + slineBreak +
'<seriesid>74143</seriesid>' + slineBreak +
'<language>en</language>' + slineBreak +
'<SeriesName>The Supernatural (1977)</SeriesName>' + slineBreak +
'<FirstAired>1977-06-01</FirstAired>' + slineBreak +
'<IMDB_ID>tt0396375</IMDB_ID>' + slineBreak +
'<id>74143</id>' + slineBreak +
'</Series>' + slineBreak +
'</Data>';
Memo2.Text:=str;
Memo1.Lines.Clear;
// musí vracet typ string jinak vrací typ node a nefungje to
pomQuery:='for $prom in Data/series' + slineBreak +
'return [string($prom/seriesname/text()) ,string($prom/firstaired/text())]';
i:=0;
for v in process(str,pomQuery) do
begin
// napřímo: (v as TXQValueJSONArray).seq.get(1).toString by to nefungovalo
// enumerátor se po první položce sám ukončí :-))) asi bug
p :=(v as TXQValueJSONArray).seq.get(0);
p3:=(v as TXQValueJSONArray).seq.get(1);
pomString3:= p3.toString;
pomString:=p.toString;
// je důležité zjistit typ výstupu pomString:=v.debugAsStringWithTypeAnnotation();
Memo1.Append((inttostr(i)) + ' ' + (pomString) + ' :-) ' + pomString3);
i:=i+1;
end;
end;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment