-
Notifications
You must be signed in to change notification settings - Fork 38
Open
Description
📌 Feature Request: Support Naver OGQ Market as sticker source
What:
Support importing stickers from https://ogqmarket.naver.com, a large Korean sticker marketplace with creator-made content.
Why:
- OGQ Market hosts thousands of high-quality, creator-made sticker packs.
- Korean Telegram users often want to reuse these but must manually convert them.
- Adding automated support (like LINE/Kakao import) would be a big UX win.
How it could work:
- User provides OGQ sticker URL
- The bot scrapes:
- Title from
div.header div div.title p - Author from
div.info div.nickname span - Images from
img[alt="sticker-detail-image-prevew"](...-prevewis not a typo)
- Title from
- Downloads:
- Uses
?type=ma480_480variant (animated + alpha, largest) - Deduplicates by clean
src
- Uses
- Converts:
- Animated:
.webm(VP9 + alpha, ≤ 256KB) - Static:
.webp - Files not starting with
original_(likedjwhpr2j.pngorqhqe6g5s.png): -> preview.png (should be scaled to 100x100)
- Animated:
FFmpeg example:
ffmpeg -i original_1.gif -an -to 3 \
-vf "scale='if(gt(iw,ih),512,-1)':'if(gt(ih,iw),512,-1)'" \
-c:v libvpx-vp9 -pix_fmt yuva420p -crf 28 -b:v 0 -fs 256k 1.webmmight not fit into 256k — raising CRF may needed.
I'm not sure about OCQMarket's backend, so there might be wrong or missing informations.
Python Downloader Example
This is NOT okay. modification required.import os, re, urllib.parse, requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
url = "https://ogqmarket.naver.com/artworks/sticker/detail?artworkId=5ef373905a559"
headers = {"User-Agent":"Mozilla/5.0"}
html = requests.get(url, headers=headers).text
soup = BeautifulSoup(html, "html.parser")
def safe(s): return re.sub(r"[<>:\"/\\|?*\x00-\x1F]", "_", s) # not sure would this ok
def sel(txt, fallback="unknown"):
tag = soup.select_one(txt)
return safe(tag.text.strip() if tag else fallback)
author = sel("div.info div.nickname span")
title = sel("div.header div div.title p") # TODO: fallback = artwordId
save_dir = os.path.join("Downloads", author, title)
os.makedirs(save_dir, exist_ok=True)
seen, imgs = set(), []
for img in soup.find_all("img", alt="sticker-detail-image-prevew"): # What if naver fix this typo?
src = img.get("src")
if src:
src = src.split("?")[0]
if src not in seen:
seen.add(src)
imgs.append(src)
def download(src):
final = f"{src}?type=ma480_480"
name = os.path.basename(urllib.parse.urlparse(src).path).replace("original_", "") # this replacement might danger
try:
r = requests.get(final, headers=headers)
r.raise_for_status()
with open(os.path.join(save_dir, name), "wb") as f: f.write(r.content)
print(f"✔ {name}")
except Exception as e: print(f"✘ {name}:",e)
with ThreadPoolExecutor(max_workers=3) as ex:
for i in imgs: ex.submit(download, i)Metadata
Metadata
Assignees
Labels
No labels