From 6bd61a5dbe3269b7f0b5c6474b90617c41a931bf Mon Sep 17 00:00:00 2001 From: Jens Georg Date: Thu, 11 Jun 2020 00:13:54 +0200 Subject: media-export: Get rid of "blacklist" --- examples/mx-info | 44 ++++++++++---------- .../media-export/rygel-media-export-harvester.vala | 8 ++-- .../rygel-media-export-harvesting-task.vala | 2 +- .../rygel-media-export-media-cache-upgrader.vala | 20 ++++++--- .../rygel-media-export-media-cache.vala | 8 ++-- .../rygel-media-export-sql-factory.vala | 47 +++++++++++----------- 6 files changed, 69 insertions(+), 60 deletions(-) diff --git a/examples/mx-info b/examples/mx-info index 99fe664b..42f5253b 100755 --- a/examples/mx-info +++ b/examples/mx-info @@ -61,13 +61,13 @@ Technical information: Channels: %(channels)d Color depths: %(depth)d """ -BLACKLIST_QUERY = """ -SELECT b.timestamp FROM blacklist b WHERE b.uri = :uri +IGNORELIST_QUERY = """ +SELECT b.timestamp FROM ignorelist b WHERE b.uri = :uri """ -BLACKLIST_TEMPLATE = 'File %(uri)s was blacklisted on %(date)s' -SHOW_BLACKLIST_QUERY = 'SELECT timestamp, uri FROM blacklist' -UNBLACKLIST_QUERY = 'DELETE FROM blacklist where uri = :uri' +IGNORELIST_TEMPLATE = 'File %(uri)s was ignore on %(date)s' +SHOW_IGNORELIST_QUERY = 'SELECT timestamp, uri FROM ignorelist' +UNIGNORELIST_QUERY = 'DELETE FROM ignorelist where uri = :uri' def ensure_uri(string): if not string.startswith ('file://'): @@ -77,12 +77,12 @@ def ensure_uri(string): parser = argparse.ArgumentParser (description = "MediaExport database tool") parser.add_argument ('uris', metavar='URI', nargs = '+', type = ensure_uri, help = 'URIs to dump infos for') -parser.add_argument ('-u, --unblacklist', action = 'store_true', - dest = 'unblacklist', - help = 'Remove uris from database\'s blacklist') -parser.add_argument ('--show-blacklist', action = 'store_true', - dest = 'show_blacklist', - help = 'Show contents of the blacklist') +parser.add_argument ('-u, --unignore', action = 'store_true', + dest = 'unignore', + help = 'Remove uris from database\'s ignorelist') +parser.add_argument ('--show-ignorelist', action = 'store_true', + dest = 'show_ignorelist', + help = 'Show contents of the ignorelist') args = parser.parse_args () rygel_db = os.path.join (BaseDirectory.xdg_cache_home, "rygel", "media-export.db") @@ -95,23 +95,23 @@ if int(info[0]) < 16: print("Unsupported schema version or not a Rygel cache") sys.exit (1) -has_blacklist = int(info[0]) >= 17 +has_ignorelist = int(info[0]) >= 18 -if not has_blacklist and (args.unblacklist or args.show_blacklist): - print ('Database version is too old for blacklists, cannot unblacklist') +if not has_ignorelist and (args.unignorelist or args.show_ignorelist): + print ('Database version is too old for ignorelists, cannot unignorelist') sys.exit (1) -if has_blacklist and args.show_blacklist: - c.execute (SHOW_BLACKLIST_QUERY) +if has_ignorelist and args.show_ignorelist: + c.execute (SHOW_IGNORELIST_QUERY) for row in c: t = time.gmtime(row[0]) - print (BLACKLIST_TEMPLATE % { "uri" : row[1], + print (IGNORELIST_TEMPLATE % { "uri" : row[1], "date" : time.strftime("%a, %d %b %Y %H:%M:%S +0000", t)}) sys.exit(0) -if has_blacklist and args.unblacklist: +if has_ignorelist and args.unignorelist: for uri in args.uris: - c.execute (UNBLACKLIST_QUERY, { 'uri' : uri }) + c.execute (UNIGNORELIST_QUERY, { 'uri' : uri }) conn.commit() else: for uri in args.uris: @@ -140,9 +140,9 @@ else: "disc" : row[21], "title": row[22]}) - if has_blacklist: - c.execute (BLACKLIST_QUERY, {"uri": uri}) + if has_ignorelist: + c.execute (IGNORELIST_QUERY, {"uri": uri}) for row in c: t = time.gmtime(row[0]) - print (BLACKLIST_TEMPLATE % { "uri" : uri, + print (IGNORELIST_TEMPLATE % { "uri" : uri, "date" : time.strftime("%a, %d %b %Y %H:%M:%S +0000", t)}) diff --git a/src/plugins/media-export/rygel-media-export-harvester.vala b/src/plugins/media-export/rygel-media-export-harvester.vala index 0d470320..3c4f3fd3 100644 --- a/src/plugins/media-export/rygel-media-export-harvester.vala +++ b/src/plugins/media-export/rygel-media-export-harvester.vala @@ -77,14 +77,14 @@ internal class Rygel.MediaExport.Harvester : GLib.Object { info.get_content_type () == "text/plain" || info.get_content_type () == "application/x-cd-image"; var cache = MediaCache.get_default (); - var is_blacklisted = cache.is_blacklisted (file); + var is_ignored = cache.is_ignored (file); - if (is_blacklisted) { - debug ("URI %s is not eligible due to blacklisting", + if (is_ignored) { + debug ("URI %s is not eligible due, it is ignored", file.get_uri ()); } - return is_supported_content_type && ! is_blacklisted; + return is_supported_content_type && ! is_ignored; } /** diff --git a/src/plugins/media-export/rygel-media-export-harvesting-task.vala b/src/plugins/media-export/rygel-media-export-harvesting-task.vala index c22c9733..1cc4b8a5 100644 --- a/src/plugins/media-export/rygel-media-export-harvesting-task.vala +++ b/src/plugins/media-export/rygel-media-export-harvesting-task.vala @@ -359,7 +359,7 @@ public class Rygel.MediaExport.HarvestingTask : Rygel.StateMachine, file.get_uri (), error.message); - this.cache.blacklist (file); + this.cache.ignore (file); this.files.poll (); this.do_update (); diff --git a/src/plugins/media-export/rygel-media-export-media-cache-upgrader.vala b/src/plugins/media-export/rygel-media-export-media-cache-upgrader.vala index c628dd6c..b516558b 100644 --- a/src/plugins/media-export/rygel-media-export-media-cache-upgrader.vala +++ b/src/plugins/media-export/rygel-media-export-media-cache-upgrader.vala @@ -90,7 +90,12 @@ internal class Rygel.MediaExport.MediaCacheUpgrader { switch (old_version) { case 16: - this.update_v16_v17 (); + this.update_v17_v18 (false); + // We jump 17 here since 17 -> 18 is just a table rename + old_version++; + break; + case 17: + this.update_v17_v18 (true); break; default: warning (_("Cannot upgrade from version %d"), old_version); @@ -101,18 +106,21 @@ internal class Rygel.MediaExport.MediaCacheUpgrader { } } - private void update_v16_v17 () { + private void update_v17_v18 (bool move_data) { try { this.database.begin (); - this.database.exec (this.sql.make (SQLString.CREATE_BLACKLIST_TABLE)); - this.database.exec (this.sql.make (SQLString.CREATE_BLACKLIST_INDEX)); - database.exec ("UPDATE schema_info SET version = '17'"); + this.database.exec (this.sql.make (SQLString.CREATE_IGNORELIST_TABLE)); + this.database.exec (this.sql.make (SQLString.CREATE_IGNORELIST_INDEX)); + if (move_data) { + database.exec ("INSERT INTO ignorelist SELECT * FROM blacklist"); + } + database.exec ("UPDATE schema_info SET VERSION = '18'"); this.database.commit (); this.database.exec ("VACUUM"); this.database.analyze (); } catch (Database.DatabaseError error) { database.rollback (); - warning (_("Database upgrade failed: %s"), error.message); + warning (_("Database upgrade to v18 failed: %s"), error.message); database = null; } } diff --git a/src/plugins/media-export/rygel-media-export-media-cache.vala b/src/plugins/media-export/rygel-media-export-media-cache.vala index b9a17bef..a494b255 100644 --- a/src/plugins/media-export/rygel-media-export-media-cache.vala +++ b/src/plugins/media-export/rygel-media-export-media-cache.vala @@ -587,11 +587,11 @@ public class Rygel.MediaExport.MediaCache : Object { return object.id; } - public void blacklist (File file) { + public void ignore (File file) { try { GLib.Value[] values = { file.get_uri (), new GLib.DateTime.now_utc ().to_unix () }; - this.db.exec (this.sql.make (SQLString.ADD_TO_BLACKLIST), + this.db.exec (this.sql.make (SQLString.ADD_TO_IGNORELIST), values); } catch (DatabaseError error) { warning (_("Failed to add %s to ignored files: %s"), @@ -600,11 +600,11 @@ public class Rygel.MediaExport.MediaCache : Object { } } - public bool is_blacklisted (File file) { + public bool is_ignored (File file) { try { GLib.Value[] values = { file.get_uri () }; - return this.query_value (SQLString.CHECK_BLACKLIST, + return this.query_value (SQLString.CHECK_IGNORELIST, values) == 1; } catch (DatabaseError error) { warning (_("Failed to get whether URI %s is ignored: %s"), diff --git a/src/plugins/media-export/rygel-media-export-sql-factory.vala b/src/plugins/media-export/rygel-media-export-sql-factory.vala index 8d4ee4ed..c7e24371 100644 --- a/src/plugins/media-export/rygel-media-export-sql-factory.vala +++ b/src/plugins/media-export/rygel-media-export-sql-factory.vala @@ -80,10 +80,10 @@ internal enum Rygel.MediaExport.SQLString { IS_GUARDED, UPDATE_GUARDED_OBJECT, TRIGGER_REFERENCE, - CREATE_BLACKLIST_TABLE, - CREATE_BLACKLIST_INDEX, - ADD_TO_BLACKLIST, - CHECK_BLACKLIST + CREATE_IGNORELIST_TABLE, + CREATE_IGNORELIST_INDEX, + ADD_TO_IGNORELIST, + CHECK_IGNORELIST } internal class Rygel.MediaExport.SQLFactory : Object { @@ -173,12 +173,13 @@ internal class Rygel.MediaExport.SQLFactory : Object { "LEFT OUTER JOIN meta_data m " + "ON o.upnp_id = m.object_fk %s"; - private const string CHECK_BLACKLIST_STRING = - "SELECT COUNT(1) FROM blacklist b " + + private const string CHECK_IGNORELIST_STRING = + "SELECT COUNT(1) FROM ignorelist b " + "WHERE b.uri = ?"; - private const string ADD_TO_BLACKLIST_STRING = - "INSERT OR REPLACE INTO blacklist (uri, timestamp) VALUES (?,?)"; + private const string ADD_TO_IGNORELIST_STRING = + "INSERT OR REPLACE INTO ignorelist (uri, timestamp) VALUES (?,?)"; + private const string GET_OBJECT_COUNT_BY_FILTER_STRING = "SELECT COUNT(1) FROM meta_data m %s"; @@ -199,7 +200,7 @@ internal class Rygel.MediaExport.SQLFactory : Object { "WHERE _column IS NOT NULL %s %s" + "LIMIT ?,?"; - internal const string SCHEMA_VERSION = "17"; + internal const string SCHEMA_VERSION = "18"; internal const string CREATE_META_DATA_TABLE_STRING = "CREATE TABLE meta_data (size INTEGER NOT NULL, " + "mime_type TEXT NOT NULL, " + @@ -224,8 +225,8 @@ internal class Rygel.MediaExport.SQLFactory : Object { "object_fk_id REFERENCES Object(upnp_id) " + "ON DELETE CASCADE);"; - private const string CREATE_BLACKLIST_TABLE_STRING = - "CREATE TABLE blacklist (uri TEXT, timestamp INTEGER NOT NULL);"; + private const string CREATE_IGNORELIST_TABLE_STRING = + "CREATE TABLE ignorelist (uri TEXT, timestamp INTEGER NOT NULL);"; private const string SCHEMA_STRING = "CREATE TABLE schema_info (version TEXT NOT NULL, " + @@ -243,7 +244,7 @@ internal class Rygel.MediaExport.SQLFactory : Object { "container_update_id INTEGER, " + "is_guarded INTEGER, " + "reference_id TEXT DEFAULT NULL);" + - CREATE_BLACKLIST_TABLE_STRING + + CREATE_IGNORELIST_TABLE_STRING + "INSERT INTO schema_info (version) VALUES ('" + SQLFactory.SCHEMA_VERSION + "'); "; @@ -299,10 +300,10 @@ internal class Rygel.MediaExport.SQLFactory : Object { "CREATE INDEX IF NOT EXISTS idx_meta_data_album on meta_data(album);" + "CREATE INDEX IF NOT EXISTS idx_meta_data_artist_album on " + "meta_data(author, album);" + - CREATE_BLACKLIST_INDEX_STRING; + CREATE_IGNORELIST_INDEX_STRING; - private const string CREATE_BLACKLIST_INDEX_STRING = - "CREATE INDEX IF NOT EXISTS idx_blacklist on blacklist(uri);"; + private const string CREATE_IGNORELIST_INDEX_STRING = + "CREATE INDEX IF NOT EXISTS idx_ignorelist on ignorelist(uri);"; private const string EXISTS_CACHE_STRING = "SELECT m.size, o.timestamp, m.mime_type, o.uri FROM Object o " + @@ -379,14 +380,14 @@ internal class Rygel.MediaExport.SQLFactory : Object { return UPDATE_GUARDED_OBJECT_STRING; case SQLString.TRIGGER_REFERENCE: return DELETE_REFERENCE_TRIGGER_STRING; - case SQLString.CREATE_BLACKLIST_TABLE: - return CREATE_BLACKLIST_TABLE_STRING; - case SQLString.CREATE_BLACKLIST_INDEX: - return CREATE_BLACKLIST_INDEX_STRING; - case SQLString.ADD_TO_BLACKLIST: - return ADD_TO_BLACKLIST_STRING; - case SQLString.CHECK_BLACKLIST: - return CHECK_BLACKLIST_STRING; + case SQLString.CREATE_IGNORELIST_TABLE: + return CREATE_IGNORELIST_TABLE_STRING; + case SQLString.CREATE_IGNORELIST_INDEX: + return CREATE_IGNORELIST_INDEX_STRING; + case SQLString.ADD_TO_IGNORELIST: + return ADD_TO_IGNORELIST_STRING; + case SQLString.CHECK_IGNORELIST: + return CHECK_IGNORELIST_STRING; default: assert_not_reached (); } -- cgit v1.2.1