|
# retoor <retoor@molodetz.nl>
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from client import DevPlace
|
|
|
|
URL = os.environ.get("DEVPLACE_URL", "https://devplace.net")
|
|
API_KEY = os.environ.get("DEVPLACE_API_KEY", "YOUR_API_KEY")
|
|
USERNAME = os.environ.get("DEVPLACE_USERNAME") or (sys.argv[1] if len(sys.argv) > 1 else "")
|
|
OUT_FILE = Path(os.environ.get("DEVPLACE_EXPORT_FILE", "devplace_export.json"))
|
|
|
|
|
|
def main() -> None:
|
|
if not USERNAME:
|
|
print("Usage: DEVPLACE_USERNAME=<you> python export_data.py")
|
|
return
|
|
dp = DevPlace(URL, api_key=API_KEY)
|
|
export = {
|
|
"profile": dp.call("profile.detail", username=USERNAME),
|
|
"posts": dp.call("profile.detail", username=USERNAME, tab="posts").get("posts", []),
|
|
"gists": dp.call("profile.detail", username=USERNAME, tab="gists").get("gists", []),
|
|
"projects": dp.call("profile.detail", username=USERNAME, tab="projects").get("projects", []),
|
|
"bookmarks": dp.call("bookmarks.saved").get("items", []),
|
|
"notifications": dp.call("notifications.list").get("notification_groups", []),
|
|
}
|
|
OUT_FILE.write_text(json.dumps(export, indent=2), encoding="utf-8")
|
|
print(
|
|
f"exported profile, {len(export['posts'])} posts, {len(export['gists'])} gists, "
|
|
f"{len(export['projects'])} projects to {OUT_FILE}"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|