Когда я заменил Jekyll и мой Jekyll-readthedocs Тема с Mkdocs и а Индивидуальная версия для блога Материал для темы MKDOCS , Urls моих постов изменились.
Я использовал Disqus Для комментариев И они обеспечивают способ мигрировать нити из старых URL-адресов на новые URL. К сожалению, на этот раз это не сработало по какой-то причине (Я уже сделал это один раз в прошлом, и это работало нормально).
Я прочитал все больше и больше критики о Disqus, связанной с конфиденциальностью, поэтому я посмотрел на замену. Миграция потоков Disqus не работала, так что это был идеальный случай!
Я прочитал несколько веб-страниц и заинтересовался ИССО Отказ К сожалению, я не управлял Чтобы установить его на My Raspberry Pi.
Поэтому я пошел с гораздо более простым решением: Высказывания Отказ Вы в основном включите приложение GitHub на вашем репозитории, Добавьте скрипт на ваших постах, и Voilà: ваш новый комментарий Работает по вопросам GitHub.
Я не полностью удовлетворен, потому что читатели должны войти в систему с их учетной записью GitHub, чтобы комментировать (без анонимных комментариев), и вы не можете иметь вложенные дискуссии (ну, как в вопросах GitHub).
Но это было действительно легко настроить 😄!
Теперь мне просто нужно было мигрировать комментарии Disqus в проблемы GitHub. Чтобы сделать это полуавтоматически, я написал следующий скрипт. ” Полуавтоматически «потому что мне все еще пришлось написать комментарий« тест »в каждом из моих постов, поэтому высказывания будут инициировать/создавать проблемы. Я думаю, что он может быть реализован в сценарии напрямую, но поскольку у меня только дюжина постов, я взял легкий/повторяющийся путь.
Сценарий
!!! Предупреждение вам придется создавать начальные проблемы перед запуском скрипта! Служите свой блог локально и напишите «тест» комментарий в каждом посте, который имеет комментарии.
Во-первых, Экспортируйте свой Disqus Комментарии Отказ
Тогда вам понадобится два библиотека Python:
Вам также нужно будет создать токен на GitHub, с только что Общественный репос
доступ.
Напишите следующие переменные среды в файл и источник.
export FILEPATH="comments.xml" export USERNAME="yourUsername" export TOKEN="yourToken" export REPOSITORY="yourUsername/yourUsername.github.io" export BASE_URL="https://yourUsername.github.io/"
Теперь вы можете скопировать/вставить и запустить этот скрипт:
import xmltodict from github import Github FILEPATH = os.environ["FILEPATH"] USERNAME = os.environ["USERNAME"] TOKEN = os.environ["TOKEN"] REPOSITORY = os.environ["REPOSITORY"] BASE_URL = os.environ["BASE_URL"] def disqus_to_github(): g = Github(TOKEN) repo = g.get_repo(REPOSITORY) issues = repo.get_issues() with open(FILEPATH) as fd: data = xmltodict.parse(fd.read()) data = data["disqus"] threads = [dict(t) for t in data["thread"]] posts = sorted((dict(p) for p in data["post"]), key=lambda d: d["createdAt"]) # only keep threads with comments twc_ids = set(p["thread"]["@dsq:id"] for p in posts) threads = {t["@dsq:id"]: t for t in threads if t["@dsq:id"] in twc_ids} # associate the thread to each post for post in posts: post["thread"] = threads[post["thread"]["@dsq:id"]] # associate the related GitHub issue to each thread # warning: the issues need to exist before you run this script! # write a "test" comment in each one of your post with comments # to make Utterances create the initial issues for thread in threads.values(): for issue in issues: if issue.title == thread["link"].replace(BASE_URL, ""): thread["issue"] = issue break # iterate on posts and create issues comments accordingly for i, post in enumerate(posts, 1): name = post["author"]["name"] user = post["author"].get("username") mention = " @" + user if user and not user.startswith("disqus_") else "" date = post["createdAt"] message = post["message"] issue = post["thread"]["issue"] body = f"*Original date: {date}*\n\n{message}" # don't add original author when it's you if user != USERNAME: body = f"*Original author:* **{name}{mention}** \n{body}" print(f"Posting {i}/{len(posts)} to issue {issue.number} \r", end="") issue.create_comment(body) print() if __name__ == "__main__": disqus_to_github()
Я написал это только для одноразового, личного использования, чтобы он мог легко сбой, когда попробуешь это! Просто используйте свои навыки Python и адаптируйте его 😉
Оригинал: “https://dev.to/pawamoy/migrate-disqus-comments-to-utterances-in-github-issues-with-python-3ic9”