batpack torture
This commit is contained in:
83
scripts/relocate_libraries.py
Normal file
83
scripts/relocate_libraries.py
Normal file
@@ -0,0 +1,83 @@
|
||||
import bpy
|
||||
import os
|
||||
import re
|
||||
|
||||
def relocate_libraries():
|
||||
"""
|
||||
Relocate linked library files from Synology Drive to NAS storage.
|
||||
Changes paths from C:\\Users\\Nathan\\SynologyDrive\\ to R:\\
|
||||
"""
|
||||
|
||||
# Define the path mappings
|
||||
old_base = r"C:\Users\Nathan\SynologyDrive"
|
||||
new_base = r"R:"
|
||||
|
||||
# Track changes
|
||||
changed_files = []
|
||||
failed_files = []
|
||||
|
||||
print("=== Library Relocation Script ===")
|
||||
print(f"Mapping: {old_base} → {new_base}")
|
||||
print()
|
||||
|
||||
# Process all library files
|
||||
for lib in bpy.data.libraries:
|
||||
if lib.filepath:
|
||||
old_path = lib.filepath
|
||||
|
||||
# Check if this is a Synology Drive path
|
||||
if old_base in old_path:
|
||||
# Create new path
|
||||
new_path = old_path.replace(old_base, new_base)
|
||||
|
||||
# Verify the new file exists
|
||||
if os.path.exists(new_path):
|
||||
try:
|
||||
# Update the library path
|
||||
lib.filepath = new_path
|
||||
changed_files.append((old_path, new_path))
|
||||
print(f"✓ Relocated: {os.path.basename(old_path)}")
|
||||
print(f" {old_path}")
|
||||
print(f" → {new_path}")
|
||||
print()
|
||||
except Exception as e:
|
||||
failed_files.append((old_path, str(e)))
|
||||
print(f"✗ Failed to relocate: {os.path.basename(old_path)}")
|
||||
print(f" Error: {e}")
|
||||
print()
|
||||
else:
|
||||
failed_files.append((old_path, "Target file not found"))
|
||||
print(f"✗ Target not found: {new_path}")
|
||||
print()
|
||||
else:
|
||||
print(f"ℹ Skipped (not Synology Drive): {old_path}")
|
||||
print()
|
||||
|
||||
# Summary
|
||||
print("=== Summary ===")
|
||||
print(f"Successfully relocated: {len(changed_files)} files")
|
||||
print(f"Failed to relocate: {len(failed_files)} files")
|
||||
|
||||
if changed_files:
|
||||
print("\nRelocated files:")
|
||||
for old, new in changed_files:
|
||||
print(f" {os.path.basename(old)}")
|
||||
|
||||
if failed_files:
|
||||
print("\nFailed files:")
|
||||
for old, reason in failed_files:
|
||||
print(f" {os.path.basename(old)}: {reason}")
|
||||
|
||||
return len(changed_files), len(failed_files)
|
||||
|
||||
# Run the script
|
||||
if __name__ == "__main__":
|
||||
success_count, fail_count = relocate_libraries()
|
||||
|
||||
if success_count > 0:
|
||||
print(f"\n✅ Successfully relocated {success_count} library files!")
|
||||
print("You may need to save your .blend file to preserve these changes.")
|
||||
|
||||
if fail_count > 0:
|
||||
print(f"\n⚠️ {fail_count} files failed to relocate.")
|
||||
print("Check that the NAS paths exist and are accessible.")
|
||||
Reference in New Issue
Block a user