batch rendering multiple audio strip files I have some edited audio strips inside sequence editor and I want to batch render them because rendering them one by one will take an eternity.
so I thought of writing a simple add-one to do so and I mean what can go wrong!
this is a how my audio strips are

they each have at least one empty frame between them and the cuts with no empty frame are going to be one file. I decided to make those a meta strip since I use the Strip_jump command for setting render frames.
also if not obvious, its my first time writing scripts inside blender so yea
here is what I got so far:
import bpy
from bpy.types import Panel, Operator

    #make a panel in the sequence editor
class AUDIOSTRIPEXPORTER_PT_main_panel(Panel):
    bl_label = &quot;Batch Audio Strip Exporter&quot;
    bl_idname = &quot;BATCH_PT_export_audio_strip&quot;
    bl_space_type = 'SEQUENCE_EDITOR'
    bl_region_type = 'UI'
    bl_category = &quot;Export&quot;
    
    def draw(self, context):
        layout = self.layout

        layout = self.layout
        layout.use_property_split = True
        layout.use_property_decorate = False

        rd = context.scene.render
        ffmpeg = rd.ffmpeg

        layout.prop(rd, &quot;filepath&quot;, text=&quot;&quot;)

        if ffmpeg.format != 'MP3':
            layout.prop(ffmpeg, &quot;audio_codec&quot;, text=&quot;Audio Codec&quot;)

        if ffmpeg.audio_codec != 'NONE':
            layout.prop(ffmpeg, &quot;audio_channels&quot;)
            layout.prop(ffmpeg, &quot;audio_mixrate&quot;, text=&quot;Sample Rate&quot;)
            layout.prop(ffmpeg, &quot;audio_bitrate&quot;)
            layout.prop(ffmpeg, &quot;audio_volume&quot;, slider=True)
            
            layout.operator(&quot;audiostripexporter.strip_export&quot;)        

    
class AUDIOSTRIPEXPORTER_OT_strip_export(Operator):
    bl_label = &quot;Export&quot;
    bl_idname = &quot;audiostripexporter.strip_export&quot;

    
    def execute(self, context):
        
        strip = bpy.ops.sequencer
        strip.strip_jump(next=True, center=False)
        bpy.ops.anim.start_frame_set()
        strip.strip_jump(next=True, center=False)
        bpy.ops.anim.end_frame_set()
        bpy.ops.sound.mixdown(filepath='filepath', codec='MP3')
        
        return {'FINISHED'}


classes = [AUDIOSTRIPEXPORTER_PT_main_panel, AUDIOSTRIPEXPORTER_OT_strip_export]
 
 
def register():
    for cls in classes:
        bpy.utils.register_class(cls)
        
 
def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
 
 
if __name__ == &quot;__main__&quot;:
    register()

but ofc it doesn't work and gives me this error:
Error: Python: Traceback (most recent call last):
  File &quot;\squencer_batch_audio_export.py&quot;, line 49, in execute
  File &quot;C:\Program Files\Blender Foundation\Blender 2.92\2.92\scripts\modules\bpy\ops.py&quot;, line 132, in __call__
    ret = _op_call(self.idname_py(), None, kw)
RuntimeError: Error: The file couldn't be written with any installed writer.

so how should I go about fixing this error and the add-one?
well after a lot of testing I was able to do it and wrote something that does the trick for me
here is the code, it not perfect but it works :)
import bpy
import os

#set the directory to where the blend file is
basedir = os.path.dirname(bpy.data.filepath)
# if the blend file is not saved, operator wont be called
if not basedir:
    raise Exception(&quot;Blend file is not saved&quot;)

# the panel in the UI of sequence editor
class AUDIOSTRIPEXPORTER_PT_sequencer_panel(bpy.types.Panel):
    bl_label = &quot;strip exporter&quot;
    bl_idname = &quot;EXPORT_PT_exporter_panel&quot;
    bl_space_type = 'SEQUENCE_EDITOR'
    bl_region_type = 'UI'
    bl_category = &quot;Export&quot;

    def draw(self, context):
        layout = self.layout
        
        row = layout.row()
        rd = context.scene.render
        layout.label(text=&quot;Strip Exporter&quot;)
        row = layout.row()
        row.scale_y = 1.0
        row.operator(&quot;export.audio_strip_exporter_operator&quot;)

# the export operator
class AUDIOSTRIPEXPORTER_OT_sequencer_operator(bpy.types.Operator):
    &quot;&quot;&quot;Exports all the strips separetly&quot;&quot;&quot;
    bl_idname = &quot;export.audio_strip_exporter_operator&quot;
    bl_label = &quot;Simple Object Operator&quot;
    
    def execute(self, context):
        layout = self.layout
        strip = bpy.ops.sequencer
        selection = bpy.context.selected_editable_sequences
        select_num = len(selection)
        bpy.ops.sequencer.select_all(action='DESELECT')     
        number = 1
        
        for each_strip in selection:
            # name the file here, the code will add a number to each file like: FileName_001, FileName_002 ...
            name = &quot;FileName_&quot; + str(number)
            # joining the file name with the directory name for saving
            fn = os.path.join(basedir, name)
            
            bpy.ops.anim.start_frame_set()
            strip.strip_jump(next=True, center=False)
            bpy.ops.anim.end_frame_set()
            bpy.ops.sound.mixdown('INVOKE_DEFAULT', filepath=fn + &quot;.mp3&quot;, container='MP3', codec='MP3')

            number = number + 1
            strip.strip_jump(next=True, center=False)
        return {'FINISHED'}

classes = [AUDIOSTRIPEXPORTER_PT_sequencer_panel, AUDIOSTRIPEXPORTER_OT_sequencer_operator]
 
 
def register():
    for cls in classes:
        bpy.utils.register_class(cls)
        
 
def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
 
 
if __name__ == &quot;__main__&quot;:
    register()

now as I said its not perfect so you have to change stuff to fit your needs
and remember:

it renders the files to the folder where the blend file is
you need to put cursor at the beginning of the first strip
add at least a few empty frames between each strip
you have to change the export name in the code

thats all I think