x
@ -1 +1 @@
|
|||||||
__version__: v0.1.4.1
|
__version__: v0.1.4
|
||||||
@ -2,12 +2,15 @@ from nonebot.matcher import Matcher
|
|||||||
from nonebot.message import run_preprocessor, IgnoredException
|
from nonebot.message import run_preprocessor, IgnoredException
|
||||||
from nonebot.typing import T_State
|
from nonebot.typing import T_State
|
||||||
from ._utils import status_message_manager
|
from ._utils import status_message_manager
|
||||||
|
from utils.image_utils import text2image
|
||||||
|
from typing import Dict, Any
|
||||||
from nonebot.adapters.onebot.v11 import (
|
from nonebot.adapters.onebot.v11 import (
|
||||||
Bot,
|
Bot,
|
||||||
MessageEvent,
|
MessageEvent,
|
||||||
PrivateMessageEvent,
|
PrivateMessageEvent,
|
||||||
GroupMessageEvent,
|
GroupMessageEvent,
|
||||||
)
|
)
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
# 为什么AI会自己和自己聊天
|
# 为什么AI会自己和自己聊天
|
||||||
@ -38,3 +41,11 @@ async def _(matcher: Matcher, bot: Bot, event: MessageEvent, state: T_State):
|
|||||||
status_message_manager.delete(event.user_id)
|
status_message_manager.delete(event.user_id)
|
||||||
raise IgnoredException("有命令就别说话了")
|
raise IgnoredException("有命令就别说话了")
|
||||||
|
|
||||||
|
# @Bot.on_calling_api
|
||||||
|
# async def handle_api_call(bot: Bot, api: str, data: Dict[str, Any]):
|
||||||
|
# if api in ["send_msg", "send_group_msg", "send_private_msg"]:
|
||||||
|
# msg = str(data["message"])
|
||||||
|
# if (r := re.search("\[\[To_Img\|?(.*?)]]", msg)) or (r := re.search("[[To_Img\|?(.*?)[[")):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -14,20 +14,10 @@ async def handle_api_call(bot: Bot, api: str, data: Dict[str, Any]):
|
|||||||
or api == "send_group_msg"
|
or api == "send_group_msg"
|
||||||
)
|
)
|
||||||
and (
|
and (
|
||||||
(
|
(r := re.search("^\[\[_task\|(.*)]]", str(data["message"]["text"]).strip()))
|
||||||
r := re.search(
|
|
||||||
"^\[\[_task\|(.*)]]",
|
|
||||||
data["message"].strip()
|
|
||||||
if isinstance(data["message"], str)
|
|
||||||
else str(data["message"]["text"]).strip(),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
or (
|
or (
|
||||||
r := re.search(
|
r := re.search(
|
||||||
"^[[_task\|(.*)]]",
|
"^[[_task\|(.*)]]", str(data["message"]["text"]).strip()
|
||||||
data["message"].strip()
|
|
||||||
if isinstance(data["message"], str)
|
|
||||||
else str(data["message"]["text"]).strip(),
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,58 +0,0 @@
|
|||||||
from .music_163 import get_song_id, get_song_info
|
|
||||||
from nonebot.adapters.onebot.v11 import Bot, Event, GroupMessageEvent, Message
|
|
||||||
from nonebot.params import CommandArg
|
|
||||||
from nonebot.typing import T_State
|
|
||||||
from services.log import logger
|
|
||||||
from nonebot import on_command
|
|
||||||
|
|
||||||
|
|
||||||
__zx_plugin_name__ = "点歌"
|
|
||||||
__plugin_usage__ = """
|
|
||||||
usage:
|
|
||||||
在线点歌
|
|
||||||
指令:
|
|
||||||
点歌 [歌名]
|
|
||||||
""".strip()
|
|
||||||
__plugin_des__ = "为你点播了一首曾经的歌"
|
|
||||||
__plugin_cmd__ = ["点歌 [歌名]"]
|
|
||||||
__plugin_type__ = ("一些工具",)
|
|
||||||
__plugin_version__ = 0.1
|
|
||||||
__plugin_author__ = "HibiKier"
|
|
||||||
__plugin_settings__ = {
|
|
||||||
"level": 5,
|
|
||||||
"default_status": True,
|
|
||||||
"limit_superuser": False,
|
|
||||||
"cmd": ["点歌"],
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
music = on_command("点歌", priority=5, block=True)
|
|
||||||
|
|
||||||
|
|
||||||
@music.handle()
|
|
||||||
async def handle_first_receive(state: T_State, arg: Message = CommandArg()):
|
|
||||||
args = arg.extract_plain_text().strip()
|
|
||||||
if args:
|
|
||||||
state["song_name"] = args
|
|
||||||
|
|
||||||
|
|
||||||
@music.got("song_name", prompt="歌名是?")
|
|
||||||
async def _(bot: Bot, event: Event, state: T_State):
|
|
||||||
song = state["song_name"]
|
|
||||||
song_id = await get_song_id(song)
|
|
||||||
if not song_id:
|
|
||||||
await music.finish("没有找到这首歌!", at_sender=True)
|
|
||||||
for _ in range(3):
|
|
||||||
song_content = [{"type": "music", "data": {"type": 163, "id": song_id}}]
|
|
||||||
logger.info(
|
|
||||||
f"(USER {event.user_id}, GROUP "
|
|
||||||
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
|
||||||
f" 点歌 :{song}"
|
|
||||||
)
|
|
||||||
await music.finish(song_content)
|
|
||||||
else:
|
|
||||||
await music.finish("网易云繁忙...")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ class GenshinCountManager(DrawCountManager):
|
|||||||
# print(self._data)
|
# print(self._data)
|
||||||
user: GenshinCountManager.UserCount = self._data[key]
|
user: GenshinCountManager.UserCount = self._data[key]
|
||||||
if user.count - user.five_index == 90:
|
if user.count - user.five_index == 90:
|
||||||
user.five_index = user.count
|
user.five_index = 90
|
||||||
return 5
|
return 5
|
||||||
if user.count - user.four_index == 10:
|
if user.count - user.four_index == 10:
|
||||||
user.four_index = user.count
|
user.four_index = user.count
|
||||||
|
|||||||
0
plugins/draw_card/rule.py
Normal file
@ -37,7 +37,7 @@ async def _(event: GroupMessageEvent):
|
|||||||
img = ""
|
img = ""
|
||||||
msg = ""
|
msg = ""
|
||||||
if (DATA_PATH / "custom_welcome_msg" / f"{event.group_id}.jpg").exists():
|
if (DATA_PATH / "custom_welcome_msg" / f"{event.group_id}.jpg").exists():
|
||||||
img = image(abspath=DATA_PATH / "custom_welcome_msg" / f"{event.group_id}.jpg")
|
img = image(DATA_PATH / "custom_welcome_msg" / f"{event.group_id}.jpg")
|
||||||
custom_welcome_msg_json = (
|
custom_welcome_msg_json = (
|
||||||
DATA_PATH / "custom_welcome_msg" / "custom_welcome_msg.json"
|
DATA_PATH / "custom_welcome_msg" / "custom_welcome_msg.json"
|
||||||
)
|
)
|
||||||
|
|||||||
54
plugins/music/__init__.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
from .music_163 import get_song_id, get_song_info
|
||||||
|
from nonebot.adapters.onebot.v11 import Bot, MessageEvent, GroupMessageEvent, Message
|
||||||
|
from nonebot.params import CommandArg
|
||||||
|
from nonebot.typing import T_State
|
||||||
|
from services.log import logger
|
||||||
|
from nonebot import on_command
|
||||||
|
from utils.message_builder import music
|
||||||
|
|
||||||
|
|
||||||
|
__zx_plugin_name__ = "点歌"
|
||||||
|
__plugin_usage__ = """
|
||||||
|
usage:
|
||||||
|
在线点歌
|
||||||
|
指令:
|
||||||
|
点歌 [歌名]
|
||||||
|
""".strip()
|
||||||
|
__plugin_des__ = "为你点播了一首曾经的歌"
|
||||||
|
__plugin_cmd__ = ["点歌 [歌名]"]
|
||||||
|
__plugin_type__ = ("一些工具",)
|
||||||
|
__plugin_version__ = 0.1
|
||||||
|
__plugin_author__ = "HibiKier"
|
||||||
|
__plugin_settings__ = {
|
||||||
|
"level": 5,
|
||||||
|
"default_status": True,
|
||||||
|
"limit_superuser": False,
|
||||||
|
"cmd": ["点歌"],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
music_handler = on_command("点歌", priority=5, block=True)
|
||||||
|
|
||||||
|
|
||||||
|
@music_handler.handle()
|
||||||
|
async def handle_first_receive(state: T_State, arg: Message = CommandArg()):
|
||||||
|
if args := arg.extract_plain_text().strip():
|
||||||
|
state["song_name"] = args
|
||||||
|
|
||||||
|
|
||||||
|
@music_handler.got("song_name", prompt="歌名是?")
|
||||||
|
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||||
|
song = state["song_name"]
|
||||||
|
song_id = await get_song_id(song)
|
||||||
|
if not song_id:
|
||||||
|
await music_handler.finish("没有找到这首歌!", at_sender=True)
|
||||||
|
await music_handler.send(music("163", song_id))
|
||||||
|
logger.info(
|
||||||
|
f"(USER {event.user_id}, GROUP "
|
||||||
|
f"{event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
||||||
|
f" 点歌 :{song}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
0
plugins/c_song/music_163.py → plugins/music/music_163.py
Executable file → Normal file
@ -1,9 +1,8 @@
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from random import choice
|
from random import choice
|
||||||
from nonebot import on_regex
|
from nonebot import on_regex
|
||||||
from nonebot.typing import T_State
|
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, Message
|
||||||
from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent
|
from utils.utils import get_message_at, get_user_avatar, get_message_text
|
||||||
from utils.utils import get_message_at, get_user_avatar
|
|
||||||
from utils.message_builder import image
|
from utils.message_builder import image
|
||||||
from utils.image_utils import BuildImage
|
from utils.image_utils import BuildImage
|
||||||
from nonebot.params import RegexGroup
|
from nonebot.params import RegexGroup
|
||||||
@ -28,14 +27,14 @@ __plugin_settings__ = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
one_friend = on_regex(
|
one_friend = on_regex(
|
||||||
"^我.*?朋友.*?(想问问|说|让我问问|想问|让我问|想知道|让我帮他问问|让我帮他问|让我帮忙问|让我帮忙问问|问)(.*)",
|
"^我.*?朋友.*?[想问问|说|让我问问|想问|让我问|想知道|让我帮他问问|让我帮他问|让我帮忙问|让我帮忙问问|问](.*)",
|
||||||
priority=4,
|
priority=4,
|
||||||
block=True,
|
block=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@one_friend.handle()
|
@one_friend.handle()
|
||||||
async def _(bot: Bot, event: GroupMessageEvent, state: T_State, reg_group: Tuple[Any, ...] = RegexGroup()):
|
async def _(bot: Bot, event: GroupMessageEvent, reg_group: Tuple[Any, ...] = RegexGroup()):
|
||||||
qq = get_message_at(event.json())
|
qq = get_message_at(event.json())
|
||||||
if not qq:
|
if not qq:
|
||||||
qq = choice(
|
qq = choice(
|
||||||
@ -51,7 +50,7 @@ async def _(bot: Bot, event: GroupMessageEvent, state: T_State, reg_group: Tuple
|
|||||||
qq = qq[0]
|
qq = qq[0]
|
||||||
at_user = await bot.get_group_member_info(group_id=event.group_id, user_id=qq)
|
at_user = await bot.get_group_member_info(group_id=event.group_id, user_id=qq)
|
||||||
user_name = at_user["card"] or at_user["nickname"]
|
user_name = at_user["card"] or at_user["nickname"]
|
||||||
msg = reg_group[1]
|
msg = get_message_text(Message(reg_group[0])).strip()
|
||||||
if not msg:
|
if not msg:
|
||||||
msg = "都不知道问什么"
|
msg = "都不知道问什么"
|
||||||
msg = msg.replace("他", "我").replace("她", "我").replace("它", "我")
|
msg = msg.replace("他", "我").replace("她", "我").replace("它", "我")
|
||||||
|
|||||||
@ -235,10 +235,10 @@ async def get_image(img_url: str, user_id: int) -> Optional[str]:
|
|||||||
img_url = old_img_url
|
img_url = old_img_url
|
||||||
continue
|
continue
|
||||||
async with aiofiles.open(
|
async with aiofiles.open(
|
||||||
TEMP_PATH / f"pix_{user_id}_{img_url[-10:-4]}.jpg", "wb"
|
TEMP_PATH / f"pix_{user_id}_{img_url.split('/')[-1][:-4]}.jpg", "wb"
|
||||||
) as f:
|
) as f:
|
||||||
await f.write(response.content)
|
await f.write(response.content)
|
||||||
return TEMP_PATH / f"pix_{user_id}_{img_url[-10:-4]}.jpg"
|
return TEMP_PATH / f"pix_{user_id}_{img_url.split('/')[-1][:-4]}.jpg"
|
||||||
except TimeoutError:
|
except TimeoutError:
|
||||||
logger.warning(f"PIX:{img_url} 图片下载超时...")
|
logger.warning(f"PIX:{img_url} 图片下载超时...")
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -1,15 +1,10 @@
|
|||||||
from utils.utils import is_number
|
from utils.utils import is_number
|
||||||
from configs.config import Config
|
from configs.config import Config
|
||||||
from ._model.omega_pixiv_illusts import OmegaPixivIllusts
|
from ._model.omega_pixiv_illusts import OmegaPixivIllusts
|
||||||
from utils.message_builder import image
|
from utils.message_builder import image, custom_forward_msg
|
||||||
from utils.manager import withdraw_message_manager
|
from utils.manager import withdraw_message_manager
|
||||||
from services.log import logger
|
from services.log import logger
|
||||||
from nonebot.adapters.onebot.v11 import (
|
from nonebot.adapters.onebot.v11 import Bot, MessageEvent, GroupMessageEvent, Message
|
||||||
Bot,
|
|
||||||
MessageEvent,
|
|
||||||
GroupMessageEvent,
|
|
||||||
Message
|
|
||||||
)
|
|
||||||
from nonebot.params import CommandArg
|
from nonebot.params import CommandArg
|
||||||
from ._data_source import get_image
|
from ._data_source import get_image
|
||||||
from ._model.pixiv import Pixiv
|
from ._model.pixiv import Pixiv
|
||||||
@ -49,6 +44,13 @@ __plugin_settings__ = {
|
|||||||
"cmd": ["pix", "Pix", "PIX", "pIx"],
|
"cmd": ["pix", "Pix", "PIX", "pIx"],
|
||||||
}
|
}
|
||||||
__plugin_block_limit__ = {"rst": "您有PIX图片正在处理,请稍等..."}
|
__plugin_block_limit__ = {"rst": "您有PIX图片正在处理,请稍等..."}
|
||||||
|
__plugin_configs__ = {
|
||||||
|
"MAX_ONCE_NUM2FORWARD": {
|
||||||
|
"value": None,
|
||||||
|
"help": "单次发送的图片数量达到指定值时转发为合并消息",
|
||||||
|
"default_value": None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pix = on_command("pix", aliases={"PIX", "Pix"}, priority=5, block=True)
|
pix = on_command("pix", aliases={"PIX", "Pix"}, priority=5, block=True)
|
||||||
@ -64,12 +66,12 @@ async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|||||||
if PIX_RATIO is None:
|
if PIX_RATIO is None:
|
||||||
pix_omega_pixiv_ratio = Config.get_config("pix", "PIX_OMEGA_PIXIV_RATIO")
|
pix_omega_pixiv_ratio = Config.get_config("pix", "PIX_OMEGA_PIXIV_RATIO")
|
||||||
PIX_RATIO = pix_omega_pixiv_ratio[0] / (
|
PIX_RATIO = pix_omega_pixiv_ratio[0] / (
|
||||||
pix_omega_pixiv_ratio[0] + pix_omega_pixiv_ratio[1]
|
pix_omega_pixiv_ratio[0] + pix_omega_pixiv_ratio[1]
|
||||||
)
|
)
|
||||||
OMEGA_RATIO = 1 - PIX_RATIO
|
OMEGA_RATIO = 1 - PIX_RATIO
|
||||||
num = 1
|
num = 1
|
||||||
keyword = arg.extract_plain_text().strip()
|
keyword = arg.extract_plain_text().strip()
|
||||||
x = keyword.split(" ")
|
x = keyword.split()
|
||||||
if "-s" in x:
|
if "-s" in x:
|
||||||
x.remove("-s")
|
x.remove("-s")
|
||||||
nsfw_tag = 1
|
nsfw_tag = 1
|
||||||
@ -80,12 +82,15 @@ async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|||||||
nsfw_tag = 0
|
nsfw_tag = 0
|
||||||
if nsfw_tag != 0 and str(event.user_id) not in bot.config.superusers:
|
if nsfw_tag != 0 and str(event.user_id) not in bot.config.superusers:
|
||||||
await pix.finish("你不能看这些噢,这些都是是留给管理员看的...")
|
await pix.finish("你不能看这些噢,这些都是是留给管理员看的...")
|
||||||
if len(x) > 1:
|
if n := len(x) == 1 and is_number(x[0]):
|
||||||
|
num = int(x[-1])
|
||||||
|
keyword = ""
|
||||||
|
elif n > 1:
|
||||||
if is_number(x[-1]):
|
if is_number(x[-1]):
|
||||||
num = int(x[-1])
|
num = int(x[-1])
|
||||||
if num > 10:
|
if num > 10:
|
||||||
if str(event.user_id) not in bot.config.superusers or (
|
if str(event.user_id) not in bot.config.superusers or (
|
||||||
str(event.user_id) in bot.config.superusers and num > 30
|
str(event.user_id) in bot.config.superusers and num > 30
|
||||||
):
|
):
|
||||||
num = random.randint(1, 10)
|
num = random.randint(1, 10)
|
||||||
await pix.send(f"太贪心了,就给你发 {num}张 好了")
|
await pix.send(f"太贪心了,就给你发 {num}张 好了")
|
||||||
@ -125,11 +130,12 @@ async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|||||||
tmp_.append(x.pid)
|
tmp_.append(x.pid)
|
||||||
if not all_image:
|
if not all_image:
|
||||||
await pix.finish(f"未在图库中找到与 {keyword} 相关Tag/UID/PID的图片...", at_sender=True)
|
await pix.finish(f"未在图库中找到与 {keyword} 相关Tag/UID/PID的图片...", at_sender=True)
|
||||||
|
msg_list = []
|
||||||
for _ in range(num):
|
for _ in range(num):
|
||||||
img_url = None
|
img_url = None
|
||||||
author = None
|
author = None
|
||||||
if not all_image:
|
# if not all_image:
|
||||||
await pix.finish("坏了...发完了,没图了...")
|
# await pix.finish("坏了...发完了,没图了...")
|
||||||
img = random.choice(all_image)
|
img = random.choice(all_image)
|
||||||
all_image.remove(img)
|
all_image.remove(img)
|
||||||
if isinstance(img, OmegaPixivIllusts):
|
if isinstance(img, OmegaPixivIllusts):
|
||||||
@ -144,7 +150,7 @@ async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|||||||
_img = await get_image(img_url, event.user_id)
|
_img = await get_image(img_url, event.user_id)
|
||||||
if _img:
|
if _img:
|
||||||
if Config.get_config("pix", "SHOW_INFO"):
|
if Config.get_config("pix", "SHOW_INFO"):
|
||||||
msg_id = await pix.send(
|
msg_list.append(
|
||||||
Message(
|
Message(
|
||||||
f"title:{title}\n"
|
f"title:{title}\n"
|
||||||
f"author:{author}\n"
|
f"author:{author}\n"
|
||||||
@ -153,16 +159,31 @@ async def _(bot: Bot, event: MessageEvent, arg: Message = CommandArg()):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
msg_id = await pix.send(image(_img))
|
msg_list.append(image(_img))
|
||||||
logger.info(
|
logger.info(
|
||||||
f"(USER {event.user_id}, GROUP {event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
f"(USER {event.user_id}, GROUP {event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
||||||
f" 查看PIX图库PID: {pid}"
|
f" 查看PIX图库PID: {pid}"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
msg_id = await pix.send(f"下载图片似乎出了一点问题,PID:{pid}")
|
msg_list.append("这张图似乎下载失败了")
|
||||||
logger.info(
|
logger.info(
|
||||||
f"(USER {event.user_id}, GROUP {event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
f"(USER {event.user_id}, GROUP {event.group_id if isinstance(event, GroupMessageEvent) else 'private'})"
|
||||||
f" 查看PIX图库PID: {pid},下载图片出错"
|
f" 查看PIX图库PID: {pid},下载图片出错"
|
||||||
)
|
)
|
||||||
withdraw_message_manager.withdraw_message(event, msg_id, Config.get_config("pix", "WITHDRAW_PIX_MESSAGE"))
|
if (
|
||||||
|
Config.get_config("pix", "MAX_ONCE_NUM2FORWARD")
|
||||||
|
and num >= Config.get_config("pix", "MAX_ONCE_NUM2FORWARD")
|
||||||
|
and isinstance(event, GroupMessageEvent)
|
||||||
|
):
|
||||||
|
msg_id = await bot.send_group_forward_msg(
|
||||||
|
group_id=event.group_id, messages=custom_forward_msg(msg_list, bot.self_id)
|
||||||
|
)
|
||||||
|
withdraw_message_manager.withdraw_message(
|
||||||
|
event, msg_id, Config.get_config("pix", "WITHDRAW_PIX_MESSAGE")
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
for msg in msg_list:
|
||||||
|
msg_id = await pix.send(msg)
|
||||||
|
withdraw_message_manager.withdraw_message(
|
||||||
|
event, msg_id, Config.get_config("pix", "WITHDRAW_PIX_MESSAGE")
|
||||||
|
)
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 474 KiB After Width: | Height: | Size: 474 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 393 KiB After Width: | Height: | Size: 393 KiB |
|
Before Width: | Height: | Size: 176 KiB After Width: | Height: | Size: 176 KiB |
|
Before Width: | Height: | Size: 654 KiB After Width: | Height: | Size: 654 KiB |
|
Before Width: | Height: | Size: 365 KiB After Width: | Height: | Size: 365 KiB |
|
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 290 KiB |
|
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 608 KiB After Width: | Height: | Size: 608 KiB |
|
Before Width: | Height: | Size: 499 KiB After Width: | Height: | Size: 499 KiB |
|
Before Width: | Height: | Size: 596 KiB After Width: | Height: | Size: 596 KiB |
|
Before Width: | Height: | Size: 745 KiB After Width: | Height: | Size: 745 KiB |
|
Before Width: | Height: | Size: 349 KiB After Width: | Height: | Size: 349 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 365 KiB After Width: | Height: | Size: 365 KiB |
|
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 349 KiB After Width: | Height: | Size: 349 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |