Beispiel #1
0
def main():
    def generate_file_list(file_extension, path_to_files: Path):
        if path_to_files.is_file():
            return [path_to_files]

        file_list_generator = path_to_files.rglob(f'*{file_extension}')
        file_list = {item for item in file_list_generator}
        return file_list

    conversion_settings = ConversionSettings()
    conversion_settings.quick_set_gfm_settings()
    conversion_settings.working_directory = Path('/Users/nimbus')
    conversion_settings.export_format = 'obsidian'
    # conversion_settings.export_format = 'gfm'
    # conversion_settings.export_format = 'multimarkdown'
    conversion_settings.conversion_input = 'nimbus'
    conversion_settings.split_tags = True
    conversion_settings.source = 'source'
    conversion_settings.export_folder = 'target'
    conversion_settings.attachment_folder_name = 'assets'
    conversion_settings.front_matter_format = 'yaml'
    # conversion_settings.front_matter_format = 'toml'
    # conversion_settings.front_matter_format = 'json'
    # conversion_settings.front_matter_format = 'text'
    # conversion_settings.front_matter_format = 'none'
    conversion_settings.tag_prefix = '#'

    conversion_settings.keep_nimbus_row_and_column_headers = False
    conversion_settings.embed_these_document_types = ['md', 'pdf']
    conversion_settings.embed_these_image_types = [
        'png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg'
    ]
    conversion_settings.embed_these_audio_types = [
        'mp3', 'webm', 'wav', 'm4a', 'ogg', '3gp', 'flac'
    ]
    conversion_settings.embed_these_video_types = ['mp4', 'webm', 'ogv']

    conversion_settings.unrecognised_tag_format = 'html'
    # options html = as html tag, text or '' = string content of tag

    nimbus_zip_files = generate_file_list(
        'zip', conversion_settings.source_absolute_root)

    convert_nimbus_notes(conversion_settings, nimbus_zip_files)
Beispiel #2
0
def test_update_content_with_new_paths_for_non_movable_attachments(tmp_path):
    Path(tmp_path,
         'some_folder/data/my_notebook/attachments').mkdir(parents=True)
    Path(tmp_path, 'some_folder/attachments').mkdir(parents=True)
    Path(tmp_path, 'some_folder/data/attachments').mkdir(parents=True)
    Path(tmp_path,
         'some_folder/data/my_other_notebook/attachments').mkdir(parents=True)
    Path(tmp_path, 'some_folder/data/my_notebook/note.md').touch()
    Path(tmp_path, 'some_folder/data/my_notebook/attachments/one.png').touch()
    Path(tmp_path, 'some_folder/data/attachments/two.csv').touch()
    Path(tmp_path, 'some_folder/three.png').touch()
    Path(tmp_path, 'some_folder/attachments/four.csv').touch()
    Path(tmp_path, 'some_folder/four.csv').touch()
    Path(tmp_path,
         'some_folder/data/my_other_notebook/attachments/five.pdf').touch()
    Path(tmp_path, 'some_folder/data/my_notebook/six.csv').touch()
    Path(tmp_path,
         'some_folder/data/my_notebook/attachments/eight.pdf').touch()
    Path(tmp_path, 'some_folder/data/my_notebook/nine.md').touch()
    Path(tmp_path, 'some_folder/data/my_notebook/attachments/ten.png').touch()
    Path(tmp_path,
         'some_folder/data/my_notebook/attachments/eleven.pdf').touch()
    Path(tmp_path,
         'some_folder/data/my_notebook/attachments/file twelve.pdf').touch()
    Path(tmp_path,
         'some_folder/data/my_notebook/attachments/file fourteen.png').touch()

    file_path = Path(tmp_path, 'some_folder/data/my_notebook/note.md')
    content = f'![copyable|600]({helper_functions.path_to_posix_str(tmp_path)}/some_folder/data/my_notebook/attachments/one.png)\n' \
              f'![non-existing|600]({helper_functions.path_to_posix_str(tmp_path)}/some_folder/two.png)\n' \
              f'![non-copyable|600]({helper_functions.path_to_posix_str(tmp_path)}/some_folder/three.png)\n' \
              f'![non-copyable|600](../../three.png)\n' \
              f'![non-existing|600](attachments/three.pdf)\n' \
              f'![copyable|600](attachments/eight.pdf)\n' \
              f'![copyable](../attachments/two.csv)\n' \
              f'![non-copyable](../../attachments/four.csv)\n' \
              f'![non-existing](../my_notebook/seven.csv)\n' \
              f'![copyable](../my_notebook/six.csv)\n' \
              f'![copyable](../my_other_notebook/attachments/five.pdf "test tool tip text")\n' \
              f'![note link](nine.md)\n' \
              f'[a web link](https://www.google.com)\n' \
              f'<img src="attachments/ten.png" />\n' \
              f'<a href="attachments/eleven.pdf">example-attachment.pdf</a>\n' \
              f'![copyable](attachments/file%20twelve.pdf)\n' \
              f'<a href="attachments/file%20thirteen.pdf">example-attachment.pdf</a>\n' \
              f'<img src="attachments/file%20fourteen.png" />\n' \
              f'<a href="https://www.google.com">google</a>)\n' \
              f'![]()\n' \
              f'<img src="" />\n' \
              f'<a href="">empty href link</a>'

    expected_content = f'![copyable|600]({helper_functions.path_to_posix_str(tmp_path)}/some_folder/data/my_notebook/attachments/one.png)\n' \
                       f'![non-existing|600]({helper_functions.path_to_posix_str(tmp_path)}/some_folder/two.png)\n' \
                       f'![non-copyable|600]({helper_functions.path_to_posix_str(tmp_path)}/some_folder/three.png)\n' \
                       f'![non-copyable|600]({helper_functions.path_to_posix_str(tmp_path)}/some_folder/three.png)\n' \
                       f'![non-existing|600](attachments/three.pdf)\n' \
                       f'![copyable|600](attachments/eight.pdf)\n' \
                       f'![copyable](../attachments/two.csv)\n' \
                       f'![non-copyable]({str(tmp_path.as_posix())}/some_folder/attachments/four.csv)\n' \
                       f'![non-existing](../my_notebook/seven.csv)\n' \
                       f'![copyable](../my_notebook/six.csv)\n' \
                       f'![copyable](../my_other_notebook/attachments/five.pdf "test tool tip text")\n' \
                       f'![note link](nine.md)\n' \
                       f'[a web link](https://www.google.com)\n' \
                       f'<img src="attachments/ten.png"/>\n' \
                       f'<a href="attachments/eleven.pdf">example-attachment.pdf</a>\n' \
                       f'![copyable](attachments/file%20twelve.pdf)\n' \
                       f'<a href="attachments/file%20thirteen.pdf">example-attachment.pdf</a>\n' \
                       f'<img src="attachments/file%20fourteen.png"/>\n' \
                       f'<a href="https://www.google.com">google</a>)\n' \
                       f'![]()\n' \
                       f'<img src=""/>\n' \
                       f'<a href="">empty href link</a>'

    conversion_settings = ConversionSettings()
    conversion_settings.source = Path(tmp_path, 'some_folder/data')
    conversion_settings.export_folder = Path(tmp_path, 'some_folder/export')
    conversion_settings.export_format = 'obsidian'
    conversion_settings.conversion_input = 'markdown'
    conversion_settings.make_absolute = True
    file_converter = HTMLToMDConverter(conversion_settings, 'files_to_convert')
    file_converter._file = file_path
    file_converter._files_to_convert = {
        Path(tmp_path, 'some_folder/data/my_notebook/nine.md')
    }
    attachment_links = get_attachment_paths(
        file_converter._conversion_settings.source_absolute_root,
        file_converter._conversion_settings.export_format,
        file_converter._file, file_converter._files_to_convert, content)
    result_content = update_content_with_new_paths(
        content,
        file_converter._file,
        attachment_links.non_copyable_relative,
        file_converter._conversion_settings.make_absolute,
        file_converter._conversion_settings.export_folder_absolute,
    )

    assert result_content == expected_content