我有一个异步任务,可以解析html,从中获取一些内容,然后将其放入firebase实时数据库(作为json)中。如果您自己运行代码,我的代码可以工作,但是由于数据在变化,我希望从服务器定期运行代码,比如说每5分钟更新一次我的数据库。在firebase中有可能吗?如果没有,您是否可以解释执行此操作的其他方法(服务器自行定期执行代码)?
static class fetchdata extends AsyncTask<String, Void, DatabaseReference>{
private DatabaseReference hurriyetDatabase = FirebaseDatabase.getInstance().getReference("HurriyetNews");
@Override
protected DatabaseReference doInBackground(String... urls) {
String url = urls[0];
hurriyetDatabase.removeValue();
try {
Document wholePage = Jsoup.connect(url).get();
Elements links = wholePage.select(
"div.swiper-slide a[href][href*=/gundem/], " +
"div.swiper-slide a[href][href*=/dunya/], " +
"div.swiper-slide a[href][href*=/ekonomi/], " +
"div.swiper-slide a[href][href*=/teknoloji/]");
for (int i=0; i< links.size(); i++){
Element link = links.get(i);
String newsUrl = link.attr("abs:href");
Document currentnews = Jsoup.connect(newsUrl).get();
String category = currentnews
.select("meta[property=article:section]")
.first()
.attr("content");
String title = currentnews
.select("meta[property=og:title]")
.first()
.attr("content");
String description = currentnews
.select("meta[property=og:description]")
.first()
.attr("content");
String imageUrl = currentnews
.select("meta[property=og:image]")
.first()
.attr("content");
String lastUpdateTime = currentnews
.select("time")
.first()
.attr("datetime");
NewsEntry currentNews = new NewsEntry(
"Hürriyet", category, title, newsUrl, imageUrl, lastUpdateTime, description);
String id = hurriyetDatabase.push().getKey();
hurriyetDatabase.child(id).setValue(currentNews);
}
} catch (IOException e) {
e.printStackTrace();
}
return hurriyetDatabase;
}
}
我想将此json用作数据库,移动应用程序的客户端将根据其需求从其查询。
答案 0 :(得分:1)
在Firebase上,您可以使用Cloud Functions来完成此任务,该功能可响应Firebase内部或外部发生的事件而运行。
对于这种特定情况,您希望按计划运行代码,因此请查看Cloud Functions for Firebase trigger on time?
答案 1 :(得分:1)
在Firebase中有可能吗?
是的,使用Cloud Functions for Firebase可以自动运行后端代码。这也可以响应Firebase功能和HTTPS请求触发的事件。但是请注意,单个云功能一次只能响应一次在单个位置发生的更改。