luogu.models.paste 源代码
from datetime import datetime
from ..utils import cached_method
from . import Model
from .main import User
[文档]class Paste(Model):
"""剪贴板
:param str id: 剪贴板 ID
:var str data: 内容
:var str id: 剪贴板 ID
:var User user: 用户
:var datetime.datetime time: 时间
:var bool public: 是否公开
"""
def __init__(self, id: str) -> None:
self._current_data: dict[str] = self._get(
f"https://www.luogu.com.cn/paste/{id}"
)["currentData"]
paste: dict[str] = self._current_data["paste"]
self.data: str = paste["data"]
self.id: str = paste["id"]
self._user: dict[str] = paste["user"]
self.time = datetime.fromtimestamp(paste["time"])
self.public: bool = paste["public"]
@property
@cached_method
def user(self) -> User:
return User(self._user["uid"])
[文档] def delete(self) -> str:
"""删除剪贴板
:returns: 剪贴板 ID
:rtype: str
"""
return self._post(f"https://www.luogu.com.cn/paste/delete/{self.id}")["id"]
[文档] def edit(self, data: str = None, public: bool = None):
"""编辑剪贴板
:param str data: 剪贴板内容
:param bool public: 是否公开
:returns: 剪贴板 ID
:rtype: str
"""
r = self._post(
f"https://www.luogu.com.cn/paste/edit/{self.id}",
{"data": data, "public": public},
)
if data is not None:
self.data = data
if public is not None:
self.public = public
return r["id"]
[文档] @classmethod
def new(cls, data: str, public: bool = None) -> "Paste":
"""新建剪贴板
:param str data: 剪贴板内容
:param bool public: 值为真时表示公开剪贴板,否则表示私有剪贴板
:rtype: Session.Paste
"""
r = cls._post(
"https://www.luogu.com.cn/paste/new",
{"data": data, "public": public},
)
return cls(r["id"])