]> code.delx.au - mediapc-tools/blobdiff - mythcleanfiles
MythTV maintenance scripts
[mediapc-tools] / mythcleanfiles
diff --git a/mythcleanfiles b/mythcleanfiles
new file mode 100755 (executable)
index 0000000..5c259c8
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+
+import mythlib
+
+def main():
+    config_xml = mythlib.get_config()
+    db_connection = mythlib.get_db_connection(config_xml)
+    recordings_dir = mythlib.get_recordings_dir(config_xml, db_connection)
+
+    basenames = set(fetch_all_basenames(db_connection))
+    orphan_filenames = list(find_orphan_filenames(recordings_dir, basenames))
+
+    if orphan_filenames:
+        print("# Orphaned files:")
+        print("\n".join("rm %s" % filename for filename in orphan_filenames))
+        print()
+
+def fetch_all_basenames(db_connection):
+    with db_connection.cursor() as cursor:
+        cursor.execute("SELECT basename FROM recorded")
+        for row in cursor:
+            yield row[0]
+
+def find_orphan_filenames(recordings_dir, basenames):
+    for filename in os.listdir(recordings_dir):
+        _, ext = os.path.splitext(filename)
+        if ext not in [".mpg", ".ts"]:
+            continue
+
+        if filename not in basenames:
+            yield "%s/%s" % (recordings_dir, filename)
+
+if __name__ == "__main__":
+    main()