diff --git a/plexpy/exporter.py b/plexpy/exporter.py index 95766e2b..9a0f02f8 100644 --- a/plexpy/exporter.py +++ b/plexpy/exporter.py @@ -1643,8 +1643,7 @@ class Export(object): if self.file_format == 'csv': csv_data = helpers.flatten_dict(result) - csv_headers = [field.split('.') for field in set().union(*csv_data)] - csv_headers = ['.'.join(field) for field in sorted(csv_headers, key=lambda s: (len(s), s))] + csv_headers = sorted(set().union(*csv_data), key=helpers.sort_attrs) with open(filepath, 'w', encoding='utf-8', newline='') as outfile: writer = csv.DictWriter(outfile, csv_headers) writer.writeheader() diff --git a/plexpy/helpers.py b/plexpy/helpers.py index b2a3dbc6..abeabaca 100644 --- a/plexpy/helpers.py +++ b/plexpy/helpers.py @@ -1236,6 +1236,14 @@ def bool_true(value, return_none=False): return False +def sort_attrs(attr): + if isinstance(attr, (list, tuple)): + a = attr[0].split('.') + else: + a = attr.split('.') + return len(a), a + + def get_attrs_to_dict(obj, attrs): d = {}