new files for 0.3.0 release
[lms] / www / api / index.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3 <title>Light Media Scanner: Main Page</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
5 <link href="tabs.css" rel="stylesheet" type="text/css">
6 </head><body>
7 <!-- Generated by Doxygen 1.5.6 -->
8 <div class="navigation" id="top">
9   <div class="tabs">
10     <ul>
11       <li class="current"><a href="index.html"><span>Main&nbsp;Page</span></a></li>
12       <li><a href="modules.html"><span>Modules</span></a></li>
13       <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
14       <li><a href="files.html"><span>Files</span></a></li>
15     </ul>
16   </div>
17 </div>
18 <div class="contents">
19 <h1>Light Media Scanner Documentation</h1>
20 <p>
21 <h3 align="center">0.1 </h3>Copyright (C) 2008 by ProFUSION embedded systems Copyright (C) 2007 by INdT<p>
22 This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.<p>
23 This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.<p>
24 You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.<p>
25 <dl class="author" compact><dt><b>Author:</b></dt><dd>Gustavo Sverzut Barbieri &lt;<a href="mailto:barbieri@profusion.mobi">barbieri@profusion.mobi</a>&gt; <p>
26 Gustavo Sverzut Barbieri &lt;<a href="mailto:gustavo.barbieri@openbossa.org">gustavo.barbieri@openbossa.org</a>&gt;</dd></dl>
27 The architecture is based on 2 processes that cooperate, the first is the driver, that controls the behavior of the worker/slave process, that does the hard work. This slave process is meant to make the software more robust since some <a class="el" href="structparser.html">parser</a> libraries and even user-provided media is not reliable, so if for some reason the worker process freezes, it's killed and then restarted with the next item.<p>
28 User API is quite simple, with means to add new charsets to be tried and new parsers to handle media. The most important functions are (see <a class="el" href="lightmediascanner_8h.html">lightmediascanner.h</a>):<p>
29 <ul>
30 <li>int <a class="el" href="lightmediascanner__process_8c.html#c2f07fb73717514237862c98dbf023b2">lms_process(lms_t *lms, const char *top_path)</a></li><li>int <a class="el" href="lightmediascanner__check_8c.html#859492d896e816498edb471315efced1">lms_check(lms_t *lms, const char *top_path)</a></li></ul>
31 <p>
32 <dl class="note" compact><dt><b>Note:</b></dt><dd>The whole library follows libC standard of "0 (zero) means success", unless explicitly stated (usually boolean queries where no error is possible/interesting).</dd></dl>
33 The first will walk all the files and children directories of top_path, check if files are handled by some <a class="el" href="structparser.html">parser</a> and if they're, they'll be parsed and registered in the data base.<p>
34 The second will get all already registered media in data base that is located at top_path and see if they're still up to date, deleted or changed. If they were deleted, a flag is set on data base with current time, so it can be expired at some point. If they were marked as deleted, but are not present again, check if the state is still valid (mtime, size), so we can avoid re-parse of removable media. If the file was present and is still present, just check if its properties (mtime, size) are still the same, if not trigger re-parse.<p>
35 Parsers are handled as shared object plugins, they can be added without modification to the core, see the plugins API later in this document. Since the core have no control over plugins, they can register data as they want, but since some utilities are provided, we expect that the given data base tables are used:<p>
36 <ul>
37 <li><b>files:</b> known files.<ul>
38 <li>id: identification inside LMS/DB.</li><li>path: file path.</li><li>mtime: modification time, in seconds from UNIX epoch.</li><li>dtime: modification time, in seconds from UNIX epoch.</li><li>size: in bytes.</li></ul>
39 </li><li><b>audios:</b> audio files.<ul>
40 <li>id: same as files.id</li><li>title: audio title.</li><li>album_id: same as audio_albums.id.</li><li>artist_id: same as audio_artists.id.</li><li>genre_id: same as audio_genres.id.</li><li>trackno: track number.</li><li>rating: rating.</li><li>playcnt: play count.</li></ul>
41 </li><li><b>audio_artists:</b> audio artists.<ul>
42 <li>id: identification inside LMS/DB.</li><li>name: artist name.</li></ul>
43 </li><li><b>audio_albums:</b> audio albums.<ul>
44 <li>id: identification inside LMS/DB.</li><li>artist_id: same as audio_artists.id.</li><li>name: album name.</li></ul>
45 </li><li><b>audio_genres:</b> audio genres.<ul>
46 <li>id: identification inside LMS/DB.</li><li>name: genre name.</li></ul>
47 </li><li><b>playlists:</b> playlists.<ul>
48 <li>id: identification inside LMS/DB.</li><li>title: playlists title.</li><li>n_entries: number of entries in this playlist.</li></ul>
49 </li><li><b>images:</b> image files.<ul>
50 <li>id: identification inside LMS/DB.</li><li>title: image title.</li><li>artist: image creator or artirst or photographer or ...</li><li>date: image taken date or creation date or ...</li><li>width: image width.</li><li>height: image height.</li><li>orientation: image orientation.</li><li>gps_lat: GPS latitude.</li><li>gps_long: GPS longitude.</li><li>gps_alt: GPS altitude.</li></ul>
51 </li><li><b>videos:</b> video files.<ul>
52 <li>id: identification inside LMS/DB.</li><li>title: video title.</li><li>artist: video artist or creator or producer or ... </li></ul>
53 </li></ul>
54 </div>
55 <hr size="1"><address style="text-align: right;"><small>Generated on Sun Oct 5 12:24:53 2008 for Light Media Scanner by&nbsp;
56 <a href="http://www.doxygen.org/index.html">
57 <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
58 </body>
59 </html>