Is it possible to use timeline markers for driver expression? I want to use timeline markers for driver expression, is it possible? And is it need to be added to bpy.app.driver_namespace for quick driver add like #frame? If yes, then how?

Thanks
It is possible to use marker for rendering frame ranges, but not through driver, which is normally used to trigger value change based on Scene.frame_current. What you need instead, is property manipulation based on TimeLineMarker.frame.

The only thing you need to do is iterating over Scene.timeline_markers, because manipulation of Scene.frame_start and Scene.frame_end for each render batch is already taken care of by the addon. Get the list of frame ranges used by the addon, which is Scene.batch_render.frame_ranges, and insert positions of the pair of markers into it. It is this last step that wouldn't be made simpler by a driver.

Below's an operator for you to edit and use. It converts each pair of markers named start and end directly into frame ranges:

class OBJECT_OT_MarkerToFrameRanges(bpy.types.Operator):
    bl_idname = "batch_render.marker_to_frame_ranges"
    bl_label = "Marker To Frame Ranges"

    def execute(self, context):
        batcher = context.scene.batch_render
        marker_list = sorted(context.scene.timeline_markers,
                             key=lambda x: x.frame)
        marker_frame_ranges = []

        for marker in marker_list:
            if marker.name == 'start':
                marker_frame_ranges.append({'start': marker.frame})
            elif marker.name == 'end':
                range_dict = marker_frame_ranges[-1] if marker_frame_ranges\
                    else {}                
                range_dict['end'] = marker.frame

        for index, range_dict in enumerate(marker_frame_ranges):
            marker_start = range_dict.get('start', 0)
            marker_end = range_dict.get('end', context.scene.frame_end)

            if index &gt;= len(batcher.frame_ranges):
                bpy.ops.batch_render.add_new()

            batcher.frame_ranges[index].start_frame = marker_start
            batcher.frame_ranges[index].end_frame = marker_end

        return {'FINISHED'}


EDIT: To strictly answer your question: Yes, it is possible to use timeline marker for driver expression. The function below will return True only if there's a marker at the current frame:

def any_marker_at_frame():
    frame_current = bpy.context.scene.frame_current
    markers = bpy.context.scene.timeline_markers

    for m in markers:
        if m.frame == frame_current:
            return True
    return False

bpy.app.driver_namespace['any_marker_at_frame'] = any_marker_at_frame


You can then use any_marker_at_frame() in your scripted expression.