83 lines
2.8 KiB
Python
83 lines
2.8 KiB
Python
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.") |