Q100497: डेटा हानि से बचने के लिए Katana में ऑटोसेव स्क्रिप्ट कैसे सेट करें?


सारांश

Katana में प्रोजेक्ट सेटअप करते समय, डेटा और समय की हानि से बचने के लिए, प्रगति के दौरान सेव करना ज़रूरी है। Katana एक अंतर्निहित ऑटोसेव सुविधा है, जो एक निश्चित समय या क्रियाओं के बाद बैकअप क्रैश फ़ाइल सेव कर लेती है।

क्रैश सेव के बारे में अधिक जानकारी के लिए, कृपया Katana उपयोगकर्ता गाइड देखें: ऑटोसेव

यह आलेख प्रदर्शित करता है कि ऑटोसेव स्क्रिप्ट को कैसे सेट किया जाए, जिसका उपयोग कस्टम नामकरण परंपरा के साथ कस्टम स्थान पर सहेजने के लिए किया जा सकता है, न कि स्वचालित रूप से जेनरेट किए गए फ़ाइल नाम के साथ Katana की अस्थायी निर्देशिका में, जो ऑटोसेव कार्यक्षमता का डिफ़ॉल्ट व्यवहार है।

अधिक जानकारी

Katana अपनी परियोजना फाइलों को Katana Python API के भीतर Katana File मॉड्यूल के माध्यम से सहेजता है।

Katana File.Save( path/to/location/file.katana ) को कॉल करने से वर्तमान Katana प्रोजेक्ट को चुने गए फ़ाइल नाम का उपयोग करके चुने गए स्थान पर सहेजा जाएगा।

Katana File.CrashSave() को कॉल करने से वर्तमान Katana प्रोजेक्ट की क्रैश फ़ाइल को स्वचालित रूप से जेनरेट किए गए नाम के साथ एक अस्थायी निर्देशिका में सहेजा जाएगा, जहां से इसे Katana क्रैश फ़ाइल चयनकर्ता का उपयोग करके पुनर्स्थापित किया जा सकता है।

ऑटोसेव फ़ाइलों को पुनर्स्थापित करने के बारे में अधिक जानकारी के लिए, कृपया निम्नलिखित लेख देखें: Q100450: क्रैश के बाद ऑटोसेव की गई फ़ाइल को कैसे खोजें और पुनर्प्राप्त करें

ऊपर वर्णित कार्यों का उपयोग करके, आप एक पायथन स्क्रिप्ट बना सकते हैं जो निर्दिष्ट समय अंतराल पर स्वचालित रूप से Katana प्रोजेक्ट को सहेज लेती है।

Katana फ़ाइल मॉड्यूल के बारे में अधिक जानकारी के लिए, कृपया Katana डेवलपर गाइड देखें: प्रोजेक्ट्स के साथ कार्य करना

उदाहरण स्क्रिप्ट

इस लेख के साथ एक पायथन उदाहरण संलग्न है, जिसे डाउनलोड किया जा सकता है और अपनी आवश्यकताओं के अनुसार संशोधित किया जा सकता है।

उदाहरण डाउनलोड करें और फ़ाइल को अपने .katana\UIPlugins फ़ोल्डर में ले जाएं।

उदाहरण के लिए:

विंडोज़: C:\Users\USERNAME\.katana\UIPlugins\autosaveProject.py
लिनक्स: /mnt/nethome/users/USERNAME/.katana/UIPlugins/autosaveProject.py

जब फ़ाइल को UIPlugins फ़ोल्डर में जोड़ा जाता है, तो Katana स्टार्टअप पर फ़ाइल को लोड और निष्पादित करेगा।

स्क्रिप्ट का उपयोग करना

स्क्रिप्ट में 3 विकल्प हैं जिनमें से आप saveOption वैरिएबल सेट करके चुन सकते हैं। इसमें सेव के बीच के समय का भी विकल्प है, उदाहरण के लिए, स्क्रिप्ट में यह वर्तमान में 60000 मिलीसेकंड (60 सेकंड) पर सेट है।

कृपया नीचे दिए गए विकल्पों की समीक्षा करें:

विकल्प 0: ऑटोसेव क्रैश सेव को बाध्य करें

यह विकल्प आपको पायथन के माध्यम से एक नया क्रैशसेव लागू करने की अनुमति देता है।

यद्यपि Katana में एक अंतर्निहित क्रैश ऑटोसेव है, यह फ़ंक्शन पायथन के साथ फ़ंक्शन चलाने से पहले सेटअप करने के लिए उपयोगी हो सकता है।

विकल्प 1: वर्तमान प्रोजेक्ट फ़ाइल पर सहेजें

इस विकल्प का उपयोग करने से वर्तमान प्रोजेक्ट को नए सेव से अधिलेखित कर दिया जाएगा।

Katana फ़ाइल को केवल तभी सहेजेगा जब परियोजना को संशोधित किया गया हो।

विकल्प 2: फ़ाइल को निर्दिष्ट स्थान पर सहेजें

यह विकल्प विकल्प 1 के समान ही कार्य करता है, लेकिन यह आपको निर्देशिका स्थान और नाम चुनने की अनुमति देता है।

आपको अपनी इच्छित सेव लोकेशन जोड़ने के लिए स्क्रिप्ट में परिवर्तन करना होगा।

इसके अतिरिक्त, आपको स्टार्टअप पर ऑटोसेव फ़ाइलों की जांच करने के लिए एक टूल बनाने की आवश्यकता होगी।

from Katana import QtCore, NodegraphAPI, Katana File
import os

# VARIABLES

# Set your save option
saveOption = 2

# Set delay interval for autosaves
# function argument is the interval in milliseconds (60 seconds in this example)
autosaveDelay = 60000

def saveAndSubmit():
''' Autosaves project with option specified by user '''

# Get path variables
projectPath = NodegraphAPI.NodegraphGlobals.GetProjectFile()
projectFile = os.path.basename(projectPath)
projectDir = os.path.dirname(projectPath)

# OPTION 0
# Q100450: Locating a crash autosave file - https://support.foundry.com/hc/en-us/articles/360000024960
# Save a crash file (standard autosave):
if saveOption == 0:
KatanaFile.CrashSave(True)

# Check if file has been saved atleast once.
if projectPath != '':
# Check if file has been modified since last save
if Katana File.IsFileDirty():

# OPTION 1
# to save file at the current location use:
if saveOption == 1:
KatanaFile.Save(projectPath)

print ("File autosaved to: " + projectPath)

# OPTION 2
# to save at a specified location use:
if saveOption == 2:
customNameFile = 1 # If you want to use a different project name change the customNameFile = 0
customprojectFile = projectFile #Overwrites the active save with any changes (only happens if customNameFile is not 0
# Custom folder directory for Option 2
customFolderDirectory = '/home/userName/Downloads/customFolder/'

if customNameFile == 0:
customprojectFile = 'CustomFileName' # If customNameFile is 0 then you can change CustomFileName for whatever name you want the file to be save as

KatanaFile.Save(customFolderDirectory + customprojectFile)
print ("File autosaved to: " + customFolderDirectory + customprojectFile)

timer = QtCore.QTimer()
timer.timeout.connect(saveAndSubmit)
timer.start(autosaveDelay)

स्क्रिप्ट स्पष्टीकरण

स्क्रिप्ट एक टाइमर लूप प्रदान करने के लिए QtCore.QTimer() कॉल का उपयोग कर रही है। QTimer का उपयोग करने से बैकग्राउंड फ़ंक्शन स्क्रिप्ट के फ़ंक्शन को निष्पादित करने से पहले एक निश्चित समय तक प्रतीक्षा कर सकता है।

प्रत्येक बार जब निर्दिष्ट समय बीत जाता है ( ऑटोसेवडिले वेरिएबल द्वारा निर्धारित), टाइमर saveAndSubmit() फ़ंक्शन चलाता है।

saveAndSubmit() फ़ंक्शन परिभाषा के अंतर्गत , 3 विकल्प हैं जो saveOption चर के साथ स्विच करने योग्य हैं।

चुने गए विकल्प के आधार पर, स्क्रिप्ट या तो क्रैश सेव के रूप में सहेजी जाएगी, वर्तमान Katana फ़ाइल पर सहेजी जाएगी, या किसी नए स्थान पर सहेजी जाएगी।

विकल्प 1 और 2 सबसे पहले Katana File.IsFileDirty() नामक एक अन्य फ़ंक्शन के परिणाम की जाँच करते हैं यह फ़ंक्शन Katana की जाँच करता है कि क्या पिछली सेव के बाद से प्रोजेक्ट में कोई बदलाव हुआ है, और अगर कुछ भी बदलाव नहीं हुआ है, तो Katana लगातार सेव करने से रोक देता है।

Katana में ऑटोसेविंग कार्यों के बारे में अधिक जानकारी के लिए, कृपया Katana डेवलपर गाइड की समीक्षा करें।

संलग्नक

हम चाहते हैं कि खेद व्यक्त करते हैं

कृपया हमें बताएँ कि