Пример #1
0
void GMDBTracks::update(GMTrack & track) {

  /// Artist
  FXint album_artist_id = insertArtist(track.getAlbumArtist(default_artist));
  FXint artist_id       = insertArtist(track.getArtist(default_artist));
  FXint composer_id     = insertArtist(track.composer);
  FXint conductor_id    = insertArtist(track.conductor);
  FXint album_id        = insertAlbum(track,album_artist_id);

  /// Update Tracks
  update_track.set(0,track.title.empty() ? FXPath::title(track.url) : track.title);
  update_track.set(1,track.time);
  update_track.set(2,track.no);
  update_track.set(3,track.year);
  update_track.set(4,(track.sampleformat) ? -track.sampleformat : track.bitrate);
  update_track.set(5,track.samplerate);
  update_track.set(6,track.channels);
  update_track.set(7,track.filetype);
  update_track.set(8,album_id);
  update_track.set(9,artist_id);
  update_track.set_null(10,composer_id);
  update_track.set_null(11,conductor_id);
  update_track.set(12,FXThread::time());
  update_track.set(13,track.index);
  update_track.execute();

    fxmessage("%d %d\n",track.sampleformat,track.bitrate);

  /// Update Tags
  updateTags(track.index,track.tags);
  }
Пример #2
0
void GMDBTracks::insert(GMTrack & track,FXint & path_index) {
  if (__likely(track.index==0)) {

    FXASSERT(!track.url.empty());
    FXASSERT(path_index>=0);

    if (path_index==0) {
      path_index = insertPath(FXPath::directory(track.url));
      FXASSERT(path_index);
      if (!path_index) fxwarning("pid==0 for %s\n",FXPath::directory(track.url).text());
      }

    /// Artist
    FXint album_artist_id = insertArtist(track.getAlbumArtist(default_artist));
    FXint artist_id       = insertArtist(track.getArtist(default_artist));
    FXint composer_id     = insertArtist(track.composer);
    FXint conductor_id    = insertArtist(track.conductor);
    FXint album_id        = insertAlbum(track,album_artist_id);

    FXASSERT(artist_id);
    FXASSERT(album_id);

    /// Insert Track
    insert_track.set(0,path_index);
    insert_track.set(1,path_index ? FXPath::name(track.url) : track.url);
    insert_track.set(2,track.title.empty() ? FXPath::title(track.url) : track.title);
    insert_track.set(3,track.time);
    insert_track.set(4,track.no);
    insert_track.set(5,track.year);
    insert_track.set(6,(track.sampleformat) ? -track.sampleformat : track.bitrate);
    insert_track.set(7,album_id);
    insert_track.set(8,artist_id);
    insert_track.set_null(9,composer_id);
    insert_track.set_null(10,conductor_id);
    insert_track.set(11,FXThread::time());
    insert_track.set(12,track.samplerate);
    insert_track.set(13,track.channels);
    insert_track.set(14,track.filetype);


    track.index = insert_track.insert();

    /// Tags
    if (track.tags.no())
      insertTags(track.index,track.tags);
    }

  /// Add to playlist
  if (playlist) {
    insert_playlist_track_by_id.set(0,playlist);
    insert_playlist_track_by_id.set(1,track.index);
    insert_playlist_track_by_id.set(2,playlist_queue);
    insert_playlist_track_by_id.execute();
    }
  }
Пример #3
0
int Database::insertSong(const char *path, const char *title, const char *album, const char *artist, const char *genre, int length)
{
  debug ("path: %s\n", path ? path : "NULL");
  debug ("title: %s\n", title ? title : "NULL");
  debug ("album: %s\n", album ? album : "NULL");
  debug ("artist: %s\n", artist ? artist : "NULL");
  debug ("genre: %s\n", genre ? genre : "NULL");
  int artist_id = insertArtist(artist);
  debug("inserted artist_id=%d\n", artist_id);
  int album_id;
  if (artist_id > 0) {
    album_id = insertAlbum(album, artist_id);
    debug("inserted album_id=%d\n", album_id);
  }
  else
    return 0;
  debug("insertSong: %s (album_id=%d)\n", title, album_id);
  if (album_id > 0 && execute("select rowid from songs where title=%Q and album_id=%d", title, album_id)) {
    debug("returning song_id\n");
    Result *r = next();
    if (r && r->find("rowid") != r->end())
      return strtol((*r)["rowid"], NULL, 10);
    return 0;
  }

  int genre_id = insertGenre(genre);
  debug("inserted genre_id=%d\n", genre_id);
  debug("inserting into songs\n");
  execute("insert into songs (title, album_id, genre_id, length, path) values (%Q, %d, %d, %d, %Q)", title, album_id, genre_id, length, path);
  return sqlite3_last_insert_rowid(m_db);
}