Re: [Tracker] Question about retrieving Tracker‘s detailed indexing information
- From: Martyn Russell <martyn lanedo com>
- To: chen bin <chenbin060708 gmail com>, tracker-list gnome org
- Subject: Re: [Tracker] Question about retrieving Tracker‘s detailed indexing information
- Date: Fri, 18 Oct 2013 15:42:54 +0100
On 18/10/13 09:27, chen bin wrote:
Hi guys,
Hello Chen,
I am using Tracker to implement a service to retrieve the metadatas of
musics under a given path. I want to notify the upper layers the
indexing process by emitting some signals to them.
I was requested to emit the URI of file being processed during the
indexing process, and I have implement the indexing of a given path by
using tracker_miner_manager_index_file. However, I have no idea how to
get the file being processed, but I noticed a signal "process-file" of
TrackerMinerFS. Can I use it to implement my function? If yes, can you
give me some hints to implement it?
Sadly not. That signal is given by libtracker-miner, which is a generic
crawling / mining library. The "process-file" signal is used by miners
that use libtracker-miner (like tracker-miner-fs) to know when a file is
processed.
We do have a kind of status system, but not to the file level. If you
look at tracker-control, you will see we can follow status for all
miners there with:
tracker-control -F
Here is the source for that:
https://git.gnome.org/browse/tracker/tree/src/tracker-control/tracker-control-status.c#n507
This will give you *progress* (between 0.0 and 1.0) and a *status*, but
sadly, what the miners tell you is not standardised. We do try to stick
to some common statuses which you can see with:
$ tracker-control -C
Common statuses include:
Unavailable
Initialising
Processing…
Fetching…
Crawling single directory '%s'
Crawling recursively directory '%s'
Paused
Idle
But sadly, we don't cover the file level because we would be spamming
dbus with signals constantly.
HOWEVER, :) you could periodically poll the database to see which files
have been updated/added. Something like this might work:
$ tracker-sparql -q "select nie:url(?p) nie:url(?f) tracker:added(?f)
where { ?f a nfo:FileDataObject ; nfo:belongsToContainer ?p .
FILTER(fn:starts-with(nie:url(?p),'file:///home/martyn/Pictures')) }
ORDER BY DESC tracker:added(?f) LIMIT 5"
Results:
file:///home/martyn/Pictures, file:///home/martyn/Pictures/bar.txt,
2013-10-18T14:24:11Z
file:///home/martyn/Pictures/desktop,
file:///home/martyn/Pictures/desktop/IMG_8151.JPG, 2013-10-11T07:20:45Z
file:///home/martyn/Pictures/desktop,
file:///home/martyn/Pictures/desktop/IMG_8152.JPG, 2013-10-11T07:20:45Z
file:///home/martyn/Pictures/desktop,
file:///home/martyn/Pictures/desktop/IMG_8153.JPG, 2013-10-11T07:20:45Z
file:///home/martyn/Pictures/desktop,
file:///home/martyn/Pictures/desktop/IMG_8154-small.JPG,
2013-10-10T14:23:43Z
So you can see all files ordered by when they were added filterd by a
prefix and limited by 5 or whatever you want.
If you need better granularity, you can listen to the tracker-store's
signals for updating the graph. There is a wiki page on this here:
https://wiki.gnome.org/Tracker/Documentation/SignalsOnChanges
Hope this helps, :)
--
Regards,
Martyn
Founder & Director @ Lanedo GmbH.
http://www.linkedin.com/in/martynrussell
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]