package mediawiki.task;
import java.net.URL;
import java.util.List;
import java.util.Map;
import mediawiki.MediaWikiConnection;
import mediawiki.info.Article;
import mediawiki.info.wikibase.Claim;
import mediawiki.info.wikibase.Property;
import mediawiki.info.wikibase.Reference;
import mediawiki.info.wikibase.Statement;
import mediawiki.info.wikibase.snaks.ItemSnak;
import mediawiki.info.wikibase.snaks.URLSnak;
import mediawiki.request.GetTemplatesValuesRequest;
import mediawiki.request.TemplateEmbeddedInRequest;
import mediawiki.request.WikiBaseItemRequest;
import mediawiki.request.wikibase.CreateClaimRequest;
import mediawiki.request.wikibase.GetSpecificStatementRequest;
import mediawiki.request.wikibase.SetReferenceRequest;
public class OfficialWebsiteTask extends WikipediaWikidataTask {
public OfficialWebsiteTask(MediaWikiConnection wikidata,
MediaWikiConnection wikipedia) {
super(wikidata, wikipedia);
}
@Override
public void run() {
try {
List<Article> l = getWikipediaConnection().request(new TemplateEmbeddedInRequest("Template:Official website", 0));
for(Article a : l){
try{
String base = getWikipediaConnection().request(new WikiBaseItemRequest(a));
Map<String, String> m = getWikipediaConnection().request(new GetTemplatesValuesRequest(a, "Official website")).get(0);
String url = m.get("1");
if(url.indexOf("//") == -1)
url = "http://"+url;
URL u = new URL(url);
List<Statement> c = getWikidataConnection().request(new GetSpecificStatementRequest(base, new Property(856)));
if(c.size() == 0){
Statement s = getWikidataConnection().request(new CreateClaimRequest(base, new Claim(856, new URLSnak(u))));
getWikidataConnection().request(new SetReferenceRequest(s, new Reference(new Property(143), new ItemSnak(328))));
}
}catch(Exception e2){
e2.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}