Skip to content

Exporting

The exporting feature allows you to save channel data in multiple formats for analysis, reporting, or integration with other tools. ytfetcher supports three widely-used export formats to suit different use cases and preferences.

Use the BaseExporter class to export ChannelData in csv, json, or txt:

from ytfetcher.services import JSONExporter # OR you can import other exporters: TXTExporter, CSVExporter

channel_data = fetcher.fetch_youtube_data()

exporter = JSONExporter(
    channel_data=channel_data,
    allowed_metadata_list=['title'],
    timing=True,
    filename='my_export',
    output_dir='./exports'
)

exporter.write()

Exporter Parameters

Parameter Type Description
channel_data ChannelData The channel data object to export (required)
allowed_metadata_list list[str] List of metadata fields to include in the export. Common fields: title, description, duration, upload_date, etc.
timing bool Whether to include transcript timing information (start time and duration for each segment)
filename str Base filename for the exported file (without extension)
output_dir str Directory path where the exported file will be saved. Defaults to current directory if not specified

Example with Different Metadata

# Export with more metadata fields
exporter = CSVExporter(
    channel_data=channel_data,
    allowed_metadata_list=['title', 'duration', 'upload_date', 'view_count'],
    timing=False,
    filename='channel_analysis',
    output_dir='./data/exports'
)

exporter.write()

Custom Exporters (Advanced)

If you need to support a format not provided by ytfetcher (like XML), you can extend the BaseExporter class. You only need to implement the write() method.

from ytfetcher.services import BaseExporter

class XMLExporter(BaseExporter):
    def write(self):
        output_path = self._initialize_output_path(export_type='xml')
        # Your custom logic to convert self.channel_data to XML
        print(f"Exporting data to {output_path}")