Spaces:
Runtime error
Runtime error
File size: 3,352 Bytes
13bad59 78efe79 440418c f3985af 021392e 407a575 32c38ef f3985af 440418c 1831164 440418c 22dee1c 7262aa5 021392e 539a18a 13bad59 efe93ef 13bad59 f714b05 13bad59 9b2f51a 78efe79 40d0e92 78efe79 dc80b35 7262aa5 9b2f51a 021392e 539a18a 13bad59 7262aa5 13bad59 021392e 9b2f51a 34428f1 9b2f51a dc80b35 9b2f51a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import requests
import discord
import logging
import os
from transformers import pipeline
# ๋ก๊น
์ค์
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s:%(levelname)s:%(name)s: %(message)s', handlers=[logging.StreamHandler()])
# ์ธํ
ํธ ์ค์
intents = discord.Intents.default()
intents.message_content = True
# ๋ฒ์ญ ํ์ดํ๋ผ์ธ ์ค์
translator = pipeline("translation", model="Helsinki-NLP/opus-mt-ko-en")
# ๊ณ ์ ๋ ๋ค๊ฑฐํฐ๋ธ ํ๋กฌํํธ
negative_prompt = "blur, low quality, bad composition, ugly, disfigured, weird colors, low quality, jpeg artifacts, lowres, grainy, deformed structures, blurry, opaque, low contrast, distorted details, details are low"
# ์ธํผ๋ฐ์ค API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ํจ์
def generate_image(prompt, negative_prompt):
headers = {
"Authorization": f"Bearer {os.getenv('HF_TOKEN')}"
}
data = {
"inputs": prompt + " " + negative_prompt # ํ๋กฌํํธ์ ๋ค๊ฑฐํฐ๋ธ ํ๋กฌํํธ๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๊ฒฐํฉ
}
api_url = "https://api-inference.huggingface.co/models/fluently/Fluently-XL-Final"
response = requests.post(api_url, headers=headers, json=data)
if response.status_code == 200:
image_url = response.json()[0]['url'] # ์๋ต์์ ์ด๋ฏธ์ง URL ์ถ์ถ
return image_url
else:
logging.error(f"API ์์ฒญ์ ์คํจํ์ต๋๋ค: {response.text}")
return None
# ํ๋กฌํํธ ๋ฒ์ญ ํจ์
def translate_prompt(prompt):
logging.debug(f'ํ๋กฌํํธ ๋ฒ์ญ ์ค: {prompt}')
translation = translator(prompt, max_length=512)
translated_text = translation[0]['translation_text']
logging.debug(f'๋ฒ์ญ๋ ํ
์คํธ: {translated_text}')
return translated_text
# ๋์ค์ฝ๋ ๋ด ํด๋์ค
class MyClient(discord.Client):
async def on_ready(self):
logging.info(f'{self.user}๋ก ๋ก๊ทธ์ธ๋์์ต๋๋ค!')
async def on_message(self, message):
if message.author == self.user:
return
if message.content.startswith('!image '):
self.is_processing = True
try:
prompt = message.content[len('!image '):]
prompt_en = translate_prompt(prompt)
logging.debug(f'๋ฒ์ญ๋ ํ๋กฌํํธ: {prompt_en}')
logging.debug(f'๊ณ ์ ๋ ๋ค๊ฑฐํฐ๋ธ ํ๋กฌํํธ: {negative_prompt}')
image_url = generate_image(prompt_en, negative_prompt)
user_id = message.author.id
if image_url:
await message.channel.send(
f"<@{user_id}> ๋์ด ์์ฒญํ์ ์ด๋ฏธ์ง์
๋๋ค: {image_url}"
)
else:
await message.channel.send(f"<@{user_id}> ์ด๋ฏธ์ง ์์ฑ์ ์คํจํ์์ต๋๋ค.")
finally:
self.is_processing = False
else:
# "!image" ๋ช
๋ น์ด๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ด ๋ฉ์์ง ์ ์ก
await message.channel.send('์ฌ๋ฐ๋ฅธ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์. ์) "!image ๊ท์ฌ์ด ๊ณ ์์ด๊ฐ ์ ์ ์๊ณ ์๋ค." ๋ฑ์ผ๋ก ์
๋ ฅํ์๋ฉด ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ฉ๋๋ค.')
# ๋์ค์ฝ๋ ํ ํฐ ๋ฐ ๋ด ์คํ
if __name__ == "__main__":
discord_token = os.getenv('DISCORD_TOKEN')
discord_client = MyClient(intents=intents)
discord_client.run(discord_token)
|