The Diffbot API Delphi Client Library can be delivered in several ways:
- Source files
*.pas. - Precompiled unit files
*.dcu. - Precompiled run-time package files
Diffbot.dcpandDiffbot.bpl.
If you have source files all you need to put all the source files to one of the project source paths.
If you have precompiled unit files you have to put all the unit files of the matching Delphi version to one of the project library paths.
If you have precompiled run-time package files put Diffbot.dcp the matching Delphi version to one of the project library paths or project DCP directory. Diffbot.bpl must be in the same folder as a executable project file (or in one of the PATH directories).
Add the unit DiffbotIntf to the uses section of the modules where you work with the library.
Obtaining Delphi Diffbot Client is simple as that:
uses DiffbotIntf;
var
analyzeBot: IDiffbotAnalyze;
articleBot: IDiffbotArticle;
begin
analyzeBot:= GetDiffbotAnalyze('...token...');
articleBot:= GetDiffbotArticle('...token...');
end;This gives you an interface to one of the Diffbot API'es for further working with it.
Notify that you have to pass your developer token as a parameter of the factory function.
The present version of the Diffbot API Delphi Client Library doesn't use any third-party libraries.
All the Diffbot API interfaces are inherited from the common base interface IDiffbotBase and have the common properties to setup.
You must set this properties before processing a page URL.
After processing a page URL you will get an appropriate strong-typed Response API interface according to the used API. However, you can get access to the response data directly with common IDiffbotResponse interface methods:
See samples below.
To process the Article API you have to call the factory function GetDiffbotArticle(). It returns IDiffbotArticle interface and after loading a page you will get IDiffbotArticleResponse.
uses DiffbotIntf;
var
article: IDiffbotArticle;
response: IDiffbotArticleResponse;
begin
article:= GetDiffbotArticle('...token...');
// Set a timeout in 10 seconds
article.Timeout:= 10000;
// Add Tags and Links to the response fields.
article.Fields:= dfDefaultArticle + [dfTags, dfLinks, dfMedia] + dfImagesAll;
// Loading a page
response:= article.Load('http://www.diffbot.com/our-apis/article');
// Processing result
// Sample to access with common IDiffbotResponse interface methods
Writeln('Url: ', response.AsString('url'));
Writeln('Date: ', DateTimeToStr(response.AsDateTime('date')));
// Sample to access with strong-typed IDiffbotArticleResponse interface methods
Writeln('Url: ', response.Url);
Writeln('ResolvedUrl: ', response.ResolvedUrl);
Writeln('IconUrl: ', response.IconUrl);
Writeln('Title: ', response.Title);
Writeln('Author: ', response.Author);
Writeln('Creation Date: ', DateTimeToStr(response.DateCreated));
Writeln('Date: ', DateTimeToStr(response.Date));
Writeln('Language: ', response.Language);
Write('Tags: ');
for i:= Low(response.Tags) to High(response.Tags) do
Write(response.Tags[i], ', ');
Writeln;
Writeln('Links: ');
for i:= Low(response.Links) to High(response.Links) do
begin
WriteLn(' ' + response.Links[i]);
end;
Writeln;
Writeln('Media: ');
for i:= Low(response.Media) to High(response.Media) do
begin
WriteLn(' Type: ' + iif(response.Media[i].MediaType = dbmtImage, 'Image', 'Video'));
WriteLn(' IsPrimary: ' + iif(response.Media[i].IsPrimary, 'true', 'false'));
WriteLn(' Url: ' + response.Media[i].UrlLink);
WriteLn(' Width: ', response.Media[i].Size.cx);
WriteLn(' Height: ', response.Media[i].Size.cy);
WriteLn(' Caption: ' + response.Media[i].Caption);
WriteLn(' ------------------------------------------');
end;
Writeln;To process the Analyze API you have to call the factory function GetDiffbotAnalyze(). It returns IDiffbotAnalyze interface and after loading a page you will get IDiffbotAnalyzeResponse.
uses DiffbotIntf;
var
analyze: IDiffbotAnalyze;
response: IDiffbotAnalyzeResponse;
typ: TDiffbotAPI;
begin
analyze:= GetDiffbotAnalyze('...token...');
// Set a timeout in 10 seconds
analyze.Timeout:= 10000;
// Add Tags and Links to the response fields.
analyze.Fields:= [dfTitle, dfLanguage];
// Loading a page
response:= analyze.Load('http://www.diffbot.com/our-apis/article', True);
// Processing result
Writeln('Type: ', DiffbotAPIToString(response.API));
Writeln('Title: ', response.Title);
Writeln('Language: ', response.Language);
Writeln('Stats: ');
Writeln('Parse Time: ', response.AsObject('stats').AsObject('times').AsString('docParseTime'));
for typ:= Low(response.Stats) to High(response.Stats) do
Writeln(DiffbotAPIToString(typ), ' = ', response.Stats[typ]);
Writeln;-Initial commit by Yevgen Leybov-