[Bf-python] option to choose executable instead of raising error inside function
Bastien Montagne
montagne29 at wanadoo.fr
Tue Oct 15 19:47:08 CEST 2013
Eh, it’s like any file, right? Just have a look around in other addons,
many of them handle files…
I would point you to official ui_translate addon, for example, but it
has some extra complexity you do not need… Just note that simply adding
"subtype='FILE_PATH'" parameter to a string prop definition will turn it
into a file-selector one in the UI… ;)
On 15/10/2013 19:38, flavio soares wrote:
> Hi, Bastien,
>
> Thanks for the link. I'll try to mess with it, but I think the addon
> part is ok. The problem is really calling a window to choose the
> executable and storing it in a variable.
>
>
> 2013/10/15 Bastien Montagne <montagne29 at wanadoo.fr
> <mailto:montagne29 at wanadoo.fr>>
>
> Hi Flavio,
>
> Think you are looking for AddonPreferences ?
> http://www.blender.org/documentation/blender_python_api_2_69_1/bpy.types.AddonPreferences.html
>
> Bastien
>
>
> On 15/10/2013 19:03, flavio soares wrote:
>> Hi,
>>
>> I'm doing an exporter to ardour and it runs an external ffmpeg.
>> I'm wondering if there is a way of letting user point to a local
>> ffmpeg executable in case it is not recognized by "which". The
>> idea is to replace the RuntimeError with something like:
>>
>> with open(self.filepath) as file:
>> ffCommand = self.filepath
>>
>> but this only works inside classes.
>>
>>
>>
>> Relevant code is below:
>>
>> this is the main class:
>>
>> class ExportArdour(bpy.types.Operator, ExportHelper):
>> """Export audio timeline (including audios from videos) to
>> Ardour"""
>> bl_idname = "export.ardour"
>> bl_label = "Export to Ardour"
>> filename_ext = ".ardour"
>> filter_glob = StringProperty(default="*.ardour",
>> options={'HIDDEN'})
>>
>> @classmethod
>> def poll(cls, context):
>> if bpy.context.sequences:
>> return context.sequences is not None
>>
>> def execute(self, context):
>> scene = bpy.context.scene
>> startFrame = scene.frame_start
>> endFrame = scene.frame_end
>> fps, timecode = checkFPS()
>>
>> system = bpy.context.user_preferences.system
>> audioRate = int(system.audio_sample_rate.split("_")[1])
>>
>> audiosFolderPath, ardourFile = os.path.split(self.filepath)
>> ardourBasename = os.path.splitext(ardourFile)[0]
>> audiosFolder = audiosFolderPath + os.sep + "Audios_for_"
>> + ardourBasename
>>
>> Session = createXML(startFrame, endFrame, fps, timecode,
>> audioRate,
>> ardourBasename, audiosFolder)
>>
>> runFFMPEG(sources, audioRate, audiosFolder)
>> writeXML(self.filepath, Session)
>>
>> return {'FINISHED'}
>>
>>
>> ..........that calls this function (notice the RunTime error):
>>
>> def runFFMPEG(sources, audioRate, outputFolder):
>> if which('ffmpeg') is not None:
>> if (os.name <http://os.name> == "nt"):
>> ffCommand = ffmpegPath + os.sep + "ffmpeg.exe"
>> else:
>> ffCommand = "ffmpeg"
>> else:
>> raise RuntimeError("You don\'t seem to have FFMPEG
>> installed on your system. \
>> Please install it and re-run the
>> Ardour exporter.")
>>
>> if (os.path.exists(outputFolder) is False):
>> os.mkdir(outputFolder)
>>
>> for source in sources:
>> basename, ext = os.path.splitext(source['name'])
>>
>> input = source['origin']
>> if (input.startswith("//")):
>> input = input.replace("//", "")
>>
>> output = outputFolder + os.sep + basename + ".wav"
>>
>> # Due to spaces, the command entries (ffCommand, input
>> and output) have
>> # to be read as strings by the call command, thus the
>> escapings below
>> callFFMPEG = "\"%s\" -i \"%s\" -y -vn -ar %i -ac 1 \"%s\"" \
>> % (ffCommand, input, audioRate, output)
>> call(callFFMPEG, shell=True)
>>
>> return {'FINISHED'}
>>
>>
>>
>> thanks.
>>
>> flavio
>>
>>
>> _______________________________________________
>> Bf-python mailing list
>> Bf-python at blender.org <mailto:Bf-python at blender.org>
>> http://lists.blender.org/mailman/listinfo/bf-python
>
> _______________________________________________
> Bf-python mailing list
> Bf-python at blender.org <mailto:Bf-python at blender.org>
> http://lists.blender.org/mailman/listinfo/bf-python
>
>
>
>
> _______________________________________________
> Bf-python mailing list
> Bf-python at blender.org
> http://lists.blender.org/mailman/listinfo/bf-python
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blender.org/pipermail/bf-python/attachments/20131015/e2fa13bd/attachment.html>
More information about the Bf-python
mailing list