uv project to migrate wordpress to nextcloud
This commit is contained in:
94
main.py
Normal file
94
main.py
Normal file
@ -0,0 +1,94 @@
|
||||
import yaml
|
||||
from path import Path
|
||||
import subprocess
|
||||
from wxr2md.lib import Blog
|
||||
|
||||
WP_PATH = '/home/miembros-comerciojusto-org/htdocs/miembros.comerciojusto.org'
|
||||
|
||||
def run_wp_cli_export(c_slug, directory_path):
|
||||
|
||||
command = f"wp export --path=/home/miembros-comerciojusto-org/htdocs/miembros.comerciojusto.org --with_attachments --dir=\"{directory_path}/\" --post__in=\"$(wp post list --path=/home/miembros-comerciojusto-org/htdocs/miembros.comerciojusto.org --post_type=documento --tipo={c_slug} --format=ids --fields=ID)\" --filename_format={c_slug}.xml"
|
||||
|
||||
# command = f"wp export --post_type=documento --posts_per_page=-1 --cat-name={c_slug} --file=actas_{c_slug}.zip --path={directory_path}"
|
||||
# print(command)
|
||||
wxr_file = directory_path / (c_slug + ".xml")
|
||||
if wxr_file.exists() is False:
|
||||
subprocess.run(command, shell=True)
|
||||
blog = Blog.from_file(wxr_file,types=['documento','attachment'])
|
||||
attachments = []
|
||||
docs = []
|
||||
for item in blog.posts:
|
||||
if item.type == 'attachment':
|
||||
attachments.append(item)
|
||||
elif item.type == 'documento':
|
||||
docs.append(item)
|
||||
for post in docs:
|
||||
# print(post)
|
||||
# print(post.type)
|
||||
# print(post.to_md())
|
||||
# if description:
|
||||
description_file = directory_path / "Readme.md"
|
||||
with open(description_file, 'w') as f:
|
||||
f.write(post.to_md())
|
||||
attachments = search_attachment(attachments,post.id)
|
||||
for at in attachments:
|
||||
# print(at.url)
|
||||
path_rep = 'https://miembros.comerciojusto.org'
|
||||
if at.url.startswith('http:'):
|
||||
path_rep = 'http://miembros.comerciojusto.org'
|
||||
# at_path = at.url.replace('http://miembros.comerciojusto.org', WP_PATH)
|
||||
at_path = Path(at.url.replace(path_rep, WP_PATH))
|
||||
new_path = directory_path / at_path.name
|
||||
# print(at_path.name)
|
||||
# print(at_path.exists())
|
||||
if at_path.exists() and new_path.exists() is False:
|
||||
at_path.copy(new_path)
|
||||
# print(attachments)
|
||||
return wxr_file
|
||||
|
||||
def search_attachment(posts, id):
|
||||
results = []
|
||||
for post in posts:
|
||||
if post.parent == id:
|
||||
results.append(post)
|
||||
return results
|
||||
|
||||
|
||||
# Replace 'your_directory_path' with the actual path where you want to create directories
|
||||
directory_path = Path('/home/miembros-comerciojusto-org/htdocs/migrate-to-nx/export')
|
||||
|
||||
def get_yaml_content():
|
||||
with open('tree.yaml','r') as tree_file:
|
||||
return yaml.safe_load(tree_file)
|
||||
|
||||
def create_dir(dir,description=False):
|
||||
dir_path = dir
|
||||
if not dir_path.exists():
|
||||
dir_path.mkdir(parents=True)
|
||||
if description:
|
||||
description_file = dir_path / "Readme.md"
|
||||
with open(description_file, 'w') as f:
|
||||
f.write(description)
|
||||
|
||||
def process_tree():
|
||||
# Load the YAML content and create directories
|
||||
tree = get_yaml_content()
|
||||
for dir in tree:
|
||||
create_dir(directory_path / dir['title'],dir.get('description'))
|
||||
# create_directory_tree(tree, directory_path)
|
||||
if 'subitems' in dir:
|
||||
for item in dir['subitems']:
|
||||
subpath = directory_path / dir['title'] / item['title']
|
||||
create_dir(subpath, item.get('description'))
|
||||
run_wp_cli_export(item['c_slug'], subpath)
|
||||
|
||||
# if 'c_slug' in subitem and subitem['c_slug']:
|
||||
# c_slug = subitem['c_slug']
|
||||
|
||||
def main():
|
||||
print("Hello from migrate-to-nx!")
|
||||
process_tree()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user