BIN
data/app.db
|
|
@ -0,0 +1,103 @@
|
|||
from PySide6.QtCore import QObject, QRunnable, Signal, Slot
|
||||
import requests
|
||||
import logging
|
||||
from deep_translator import GoogleTranslator
|
||||
|
||||
# WorkerSignals 클래스 정의
|
||||
class WorkerSignals(QObject):
|
||||
result = Signal(int, dict) # 성공 신호: (행 번호, API 결과)
|
||||
error = Signal(int, str) # 실패 신호: (행 번호, 오류 메시지)
|
||||
finished = Signal() # 작업 완료 신호
|
||||
|
||||
|
||||
# APICallWorker 클래스 정의
|
||||
class APICallWorker(QRunnable):
|
||||
def __init__(self, row, product_id, image_url, db_manager, rapid_api_url, headers, logger):
|
||||
super().__init__()
|
||||
self.row = row
|
||||
self.product_id = product_id
|
||||
self.image_url = image_url
|
||||
self.db_manager = db_manager
|
||||
self.rapid_api_url = rapid_api_url
|
||||
self.headers = headers
|
||||
self.logger = logger
|
||||
|
||||
self.signals = WorkerSignals()
|
||||
|
||||
self.gtranslator = GoogleTranslator(source="zh-CN", target="ko")
|
||||
|
||||
@Slot()
|
||||
def run(self):
|
||||
try:
|
||||
# API 호출
|
||||
querystring = {"imgUrl": self.image_url, "pageSize": "10"}
|
||||
response = requests.get(self.rapid_api_url, headers=self.headers, params=querystring)
|
||||
response.raise_for_status()
|
||||
|
||||
# 결과 처리
|
||||
api_response = response.json()
|
||||
top_item = self.select_top_item(api_response)
|
||||
|
||||
if top_item:
|
||||
# DB 업데이트
|
||||
self.db_manager.update_item({
|
||||
"id": self.product_id,
|
||||
"Taoid": top_item["itemId"],
|
||||
"Tao_URL": f"https://item.taobao.com/item.htm?id={top_item['itemId']}",
|
||||
"Tao_image_url": top_item["image"],
|
||||
"Tao_price": top_item["price"],
|
||||
"TaoTitle": top_item["title"],
|
||||
"translatedTitle": self.translate_name(top_item["title"]),
|
||||
})
|
||||
|
||||
# 성공 결과 전달
|
||||
self.signals.result.emit(self.row, top_item)
|
||||
else:
|
||||
self.signals.error.emit(self.row, "상위 상품 없음")
|
||||
except requests.exceptions.RequestException as e:
|
||||
self.logger.log(f"API 호출 실패: {e}", level=logging.ERROR, exc_info=True)
|
||||
self.signals.error.emit(self.row, "API 호출 실패")
|
||||
finally:
|
||||
self.signals.finished.emit()
|
||||
|
||||
def select_top_item(self, api_response):
|
||||
try:
|
||||
result_list = api_response.get("result", {}).get("resultList", [])
|
||||
if not result_list:
|
||||
return None
|
||||
|
||||
items = [
|
||||
{
|
||||
"itemId": entry["item"]["itemId"],
|
||||
"image": f"https:{entry['item']['image']}",
|
||||
"title": entry["item"]["title"],
|
||||
"price": float(entry["item"]["sku"]["def"]["price"])
|
||||
}
|
||||
for entry in result_list if "item" in entry
|
||||
]
|
||||
|
||||
sorted_items = sorted(items, key=lambda x: x["price"])
|
||||
return sorted_items[0] if sorted_items else None
|
||||
except Exception as e:
|
||||
self.logger.log(f"API 응답 처리 중 오류: {e}", level=logging.ERROR, exc_info=True)
|
||||
return None
|
||||
|
||||
def translate_name(self, text: str) -> str:
|
||||
"""
|
||||
중국어 텍스트를 한국어로 번역하는 메서드
|
||||
:param text: 번역할 텍스트
|
||||
:return: 번역된 한국어 텍스트
|
||||
"""
|
||||
if not text.strip():
|
||||
self.logger.log(f"빈 텍스트가 입력되었습니다.", level=logging.WARNING)
|
||||
return ""
|
||||
|
||||
try:
|
||||
# 번역 수행
|
||||
result = self.gtranslator.translate(text)
|
||||
self.logger.log(f"번역 성공: {text} -> {result}", level=logging.DEBUG)
|
||||
return result
|
||||
except Exception as e:
|
||||
self.logger.log(f"번역 중 오류 발생: {e}", level=logging.ERROR, exc_info=True)
|
||||
|
||||
return "번역 실패"
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJMSUNFTlNFIiwicm9vdF9oYXNoIjoiUGIwc2tBVUxaUzFqWldTQnctV0hIRkltRlhVcExiZDlUcVkwR2ZHSHBWcyJ9LHsicGF0aCI6ImNybC1zZXQiLCJyb290X2hhc2giOiJCanZVQnV4RzYzQUs5WDBxcTVFaDBlTUJpeGRtbXh3eGw0X3ZwcEV0V0VJIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6ImMwUmo2bTIwSm5OUzB5N1B6REw3V19OYzlZUm1pM1Fta1htR1ptLThpajQifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJoZm5rcGltbGhoZ2llYWRkZ2ZlbWpob2ZtZmJsbW5pYiIsIml0ZW1fdmVyc2lvbiI6IjkzOTIiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"rLZsZDPKsiEPDOB7092uDS5DZnmMe7sC2F3c3EY_cFyPDGOZuTIk6tSE9eF3gmfx_jccA8dpvXl9m6rrUmafx2eP9go520g2JrpkIJa9qCyCPKP2Z2G3en5Wa24_E0HOjBUaamUfdmiDLvm2YnwJRHWebZ6YcEV5JGaS46aCM-dsXBpslBAiD5VLNU9WvryiZexqfeX2mktLq1nh7HTLQwbz4itJbFWMugd4MZkwWY0Z3VApWawU6-uQURVeu3w_ixx71ImVJ2VF8ICe0lQGAdXVjnITnuJnfdMECLa8M6ZolF0HrzS8u0e37k_4Vq0fA-E3BR4DLS2_i1vDB7frcw"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"Lp79dHxu7b_FX1K1Z894TGU8HfmltAQtP6mnuLAy3RagKgqSMUf4URgFO5KMS7-v4nT02EG4YI5v8uhbpHPrGztMwScgwBPTgN3InhF7NWz0jwtgADB8rV7d1ajExXX6vSgegugG7dVn2q560zX6JRSTCzG2ndT5_dmbvS4TivueU-4OEhVLl2HHkHEN6sEheA03GN4h_qKndKMHpTwCebUVGqjtgKrAPrmx-9qB94t8sXnSliqIMgdjM7ih7Y3El3xrt2kRbMNN3Kpr9D_UNYTS4Kceku6dilpC06plHxiJFDfRDQUhI5SJjhuVHq7E5HxcKOuIRVKMufoLl43xjQ"}]}}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
1.84cb6f109deb8d6a5335120f793d6e2fef46f13da33d1d64ed9214bf3071d6db
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"manifest_version": 2,
|
||||
"name": "crl-set-5603823087361325227.data",
|
||||
"version": "9392"
|
||||
}
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
// Copyright 2015 The Chromium Authors. All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJMSUNFTlNFIiwicm9vdF9oYXNoIjoiUGIwc2tBVUxaUzFqWldTQnctV0hIRkltRlhVcExiZDlUcVkwR2ZHSHBWcyJ9LHsicGF0aCI6ImNybC1zZXQiLCJyb290X2hhc2giOiI2bGxFc25OdW5maF9DYVJWQVRQaldHM1M5aW1JWFA3d1BtOGtPSHlaUWlFIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6IjJvNlFQSmp6TXJUbTI0SkUzZGhQUjdfM1BFUTRqRnoySVg2U3lfdWhJbG8ifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJoZm5rcGltbGhoZ2llYWRkZ2ZlbWpob2ZtZmJsbW5pYiIsIml0ZW1fdmVyc2lvbiI6IjkzOTMiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"X9euR2K61cwUnR1LIk4lhlRqD62MxR3yW5LkBkRxHAY7L4xXzQPnVjwxPx0AfYpQNu1cPcP1scO2SEa07Btw8y_qKx94f-hjsaq-1ZoIowUgjZSAA1uirAPunrMyD_Vy_jvcDe5wkMW_pSn4yxiO_vhuYdrjRlQ9NMbsJWoSkyWUXSQSBeRYQg9oA1ZpBj-aHQvtHPjH5MJOiZvGfjWK2KADeGUroR1GL-0WclAebP_MAFckMnYYgbcWKlamB6qDvwcLWHoXfCxDOgmIofLwhyA7vTDSuy0wRuQ3gojoAy-0HSa-8vucZ6wwL1EQ0JSjqc7f9_7ELS4rZqm_mpyFfw"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"N9UrownDFkGRJ4qJXayRac2DAWtTakBtePfZrS1NHNGt4vXVl9LSlrCR2hbtw3ivX5CKoEdp_HlzB2EAxLMaPOQ1yXlDv0Ev2YCqB2sk1c9g8FzB995Br5XQDsp5awL2rEGTcA2gbRmYYA7Ktfp5icfhRTbOQLb5ppFBmK9u3CSBb2wRVQOL-iziEIwVh1weR7YmLShtOFuoxktkGtcILzJmmGSGxOZBCW0Uh1fHRzRWxpVN-1lWpbJqT4DoFxNs0NeBjts7OlaZyLEesrtULvy383546AmNAHSTDQSDepYquDhFo69ZNnawRA_RZ9QHPWQvBvMrXx0fYhDwm0akfQ"}]}}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
1.325b6cac521a90a2004e79359fba56e5fe1bf5091a47e6c1aead76977b1532b0
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"manifest_version": 2,
|
||||
"name": "crl-set-10509878343749934609.data",
|
||||
"version": "9393"
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJMSUNFTlNFIiwicm9vdF9oYXNoIjoiUGIwc2tBVUxaUzFqWldTQnctV0hIRkltRlhVcExiZDlUcVkwR2ZHSHBWcyJ9LHsicGF0aCI6ImNybC1zZXQiLCJyb290X2hhc2giOiJ5R3ZDT2hDU1MwZ0tVelZ4V2xXOUlyYzdnd3I4RjV2MXItYmZ5UFRHN1JJIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6IkhtdzBFR19nbEtTVFpNMGlCYkFKWWF4LXVsYXdNOEJWS2NOUVJrTmM3bWcifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJoZm5rcGltbGhoZ2llYWRkZ2ZlbWpob2ZtZmJsbW5pYiIsIml0ZW1fdmVyc2lvbiI6IjkzOTYiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"On1Z_1cH_Wpx5vKeMC_5IwAjdk2z41hGhGnbdG21cqQFz7Y_f5ynycRwcP-mdpBhcJ_ygMDQvj-M_aMOabbG1i2640Atkq4q4TeYvuPG0BCdtaIHJRw-q9AJ85LkBjNokh_xH-lKtdpm7BxGeyQ44XC_V-zyhhy20rr9c9bY0ke-8ni0qyLDX1ct3rqCpefjqzRm0VdVmHgO5aQAs_1vXbX43mfcTijqjKpd2MfgvoZlhaxWwrZQ0RiAxBot5r9xA7h2suV354V86kMObQNPpL7CR9erUShoSJnb9AAngl10ri06GgNBm8SS-efn6GjLJ6yvF7x7tTRcUmPntRA1vA"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"cd9a30C2nbBqK6xtpxVOgDyG4H9czL9KBvmVbN7d13UwKhunNFD0Wdwz2yVaCAf6C1dbmUi6crk6r930tWHQQTwr0Df1yh04qWvKDlFcWcwuRAPMuqFeNP_RrIBlFxZpfOOsGCQ2d1Ci4fZiwlkVB51ZXANLk6Nwnjzw9IA4MgS9hZQFF7avJ3rQXW8nU0ZtNbt4e1PmBrytrdsHUlybHshIGBBSPT9qbRxXDbt_7Rph3nt4B-A7t3A6fnC8vKs8Ary1Q_U-B11QD-iKBMqsgKXEVRHkOWAqPDIfHhE5aoGn8KtLwLduI_zXdCBNj01jzoEdKyOnYwzntm17bHiXkQ"}]}}]
|
||||
|
|
@ -0,0 +1 @@
|
|||
1.960607cee571126866bbd56978629d6f50cdc2c4b3e9acba5cc637802a3bc9d7
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"manifest_version": 2,
|
||||
"name": "crl-set-12138909489476248921.data",
|
||||
"version": "9396"
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
{
|
||||
"blocked-reporting-start": "13375544266327517",
|
||||
"tracking-rules": {
|
||||
"blocked-domain-counters": {
|
||||
},
|
||||
"blocked-for-origin-counters": {
|
||||
},
|
||||
"deleted-presets": [ ],
|
||||
"enabled": true,
|
||||
"exceptions-type": 1,
|
||||
"exempt_list": [ ],
|
||||
"index-checksum": "3741677681",
|
||||
"known-sources": [ ],
|
||||
"process_list": [ ],
|
||||
"rule-sources": [ {
|
||||
"allow-abp-snippets": false,
|
||||
"expires": "43200000000",
|
||||
"group": 0,
|
||||
"has-tracker-infos": true,
|
||||
"homepage": "",
|
||||
"invalid-rules-count": 275,
|
||||
"last-fetch-result": 0,
|
||||
"last-upate": "13378647925176536",
|
||||
"license": "",
|
||||
"next-fetch": "13378692519452487",
|
||||
"redirect": "",
|
||||
"rules-list-checksum": "3021838798",
|
||||
"source-url": "https://shared-whale.pstatic.net/tds/tds-v2-current.json",
|
||||
"title": "DuckDuckGo blocking list",
|
||||
"unsupported-rules-count": 18,
|
||||
"valid-rules-count": 2636,
|
||||
"version": "0"
|
||||
} ]
|
||||
},
|
||||
"version": 6
|
||||
}
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
2024/12/15-13:48:05.885 5efc Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Browser Storage\leveldb/MANIFEST-000001
|
||||
2024/12/15-13:48:05.885 5efc Recovering log #3
|
||||
2024/12/15-13:48:05.885 5efc Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Browser Storage\leveldb/000003.log
|
||||
2024/12/16-15:03:47.542 32fc Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Browser Storage\leveldb/MANIFEST-000001
|
||||
2024/12/16-15:03:47.543 32fc Recovering log #3
|
||||
2024/12/16-15:03:47.543 32fc Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Browser Storage\leveldb/000003.log
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
2024/12/15-07:34:44.854 16c Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Browser Storage\leveldb/MANIFEST-000001
|
||||
2024/12/15-07:34:44.854 16c Recovering log #3
|
||||
2024/12/15-07:34:44.854 16c Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Browser Storage\leveldb/000003.log
|
||||
2024/12/16-14:50:00.043 4adc Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Browser Storage\leveldb/MANIFEST-000001
|
||||
2024/12/16-14:50:00.043 4adc Recovering log #3
|
||||
2024/12/16-14:50:00.043 4adc Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Browser Storage\leveldb/000003.log
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
2024/12/15-13:48:05.478 5efc Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension Rules/MANIFEST-000001
|
||||
2024/12/15-13:48:05.478 5efc Recovering log #3
|
||||
2024/12/15-13:48:05.479 5efc Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension Rules/000003.log
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
2024/12/15-07:34:44.361 4568 Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension Rules/MANIFEST-000001
|
||||
2024/12/15-07:34:44.361 4568 Recovering log #3
|
||||
2024/12/15-07:34:44.361 4568 Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension Rules/000003.log
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
2024/12/15-13:48:05.481 5efc Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension Scripts/MANIFEST-000001
|
||||
2024/12/15-13:48:05.481 5efc Recovering log #3
|
||||
2024/12/15-13:48:05.481 5efc Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension Scripts/000003.log
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
2024/12/15-07:34:44.363 4568 Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension Scripts/MANIFEST-000001
|
||||
2024/12/15-07:34:44.364 4568 Recovering log #3
|
||||
2024/12/15-07:34:44.364 4568 Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension Scripts/000003.log
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
2024/12/15-13:48:05.898 5e38 Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension State/MANIFEST-000001
|
||||
2024/12/15-13:48:05.899 5e38 Recovering log #3
|
||||
2024/12/15-13:48:05.899 5e38 Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension State/000003.log
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
2024/12/15-07:34:44.867 4568 Reusing MANIFEST D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension State/MANIFEST-000001
|
||||
2024/12/15-07:34:44.868 4568 Recovering log #3
|
||||
2024/12/15-07:34:44.868 4568 Reusing old log D:\py\RapidSS\src\browsers\whale\user_data\Default\Extension State/000003.log
|
||||
|
|
@ -1 +0,0 @@
|
|||
1.51e12adf7cf2e17fff4bd703e352af0305cd6f27f99d93e7e7baa4582578c9db
|
||||
|
Before Width: | Height: | Size: 505 B After Width: | Height: | Size: 505 B |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
|
@ -12,7 +12,6 @@
|
|||
} ],
|
||||
"default_locale": "en",
|
||||
"description": "Translate texts from image.",
|
||||
"differential_fingerprint": "1.51e12adf7cf2e17fff4bd703e352af0305cd6f27f99d93e7e7baa4582578c9db",
|
||||
"host_permissions": [ "\u003Call_urls>" ],
|
||||
"icons": {
|
||||
"16": "icons/papago.png"
|
||||
|
|
@ -1 +0,0 @@
|
|||
1.885d395f0608a013fb8a7f34aa3bb9e3ae1586b16ccd9377364556ab1406e539
|
||||
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 507 B After Width: | Height: | Size: 507 B |
|
Before Width: | Height: | Size: 1020 B After Width: | Height: | Size: 1020 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
|
@ -19,7 +19,6 @@
|
|||
} ],
|
||||
"default_locale": "en",
|
||||
"description": "__MSG_APP_DESCRIPTION__",
|
||||
"differential_fingerprint": "1.885d395f0608a013fb8a7f34aa3bb9e3ae1586b16ccd9377364556ab1406e539",
|
||||
"externally_connectable": {
|
||||
"ids": [ "mdppnmkhoflepinhojdkmkanhhlkginn", "mliknopbojighdkjkjbpgpmlpckdjclf", "lckbhcagdfofbmndjcfhnbecneflbhhb" ],
|
||||
"matches": [ "https://papago.naver.com/*", "https://test-papago.naver.com/*", "https://whale.naver.com/*", "https://*.whale.naver.com/*" ]
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
|
@ -1,4 +0,0 @@
|
|||
[jscontroller='o2G9me'],
|
||||
[role='dialog'][aria-labelledby='promo-header'] {
|
||||
display: none !important;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
(()=>{const e="section[jscontroller] button[jsaction] > span[jsname]",t={},n=e=>{if(!e||!e.textContent)return;const{lang:t}=document.documentElement,n="ko"===t?"네이버 웨일":"NAVER Whale";e.textContent=e.textContent.replace("Chrome",n)},o=()=>{t.timer&&(clearTimeout(t.timer),t.timer=void 0),t.timer=setTimeout((()=>{document.querySelectorAll(e).forEach(n)}),50)};document.addEventListener("DOMContentLoaded",(()=>{((e,t={})=>{const n=t.timeout||1e4,o=t.interval||20,r=Date.now();return new Promise(((t,c)=>{const a=setInterval((()=>{const o=e();o&&(clearInterval(a),t(o)),Date.now()-r>n&&(clearInterval(a),c())}),o)}))})((()=>document.querySelector(e))).then((()=>{o(),new MutationObserver(o).observe(document.body,{childList:!0,subtree:!0,characterData:!0})}))}))})();
|
||||
|
|
@ -1 +0,0 @@
|
|||
!function(){"use strict";((e,t={})=>{const n=t.timeout||5e3,r=t.interval||20,c=Date.now();return new Promise(((t,o)=>{const l=setInterval((()=>{const r=e();r&&(clearInterval(l),t(r)),Date.now()-c>n&&(clearInterval(l),o())}),r)}))})((()=>document.querySelector("div.w-MH"))).then((e=>{const t=e&&e.querySelector("#link_ds");t&&t.click()}))}();
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
.og-pdp,
|
||||
div[style*="url(#default#userData)"],
|
||||
#promos .gb_Kd.gb_5c.gb_Dc,
|
||||
#gbw .gb_Kd.gb_5c {
|
||||
display: none !important;
|
||||
visibility: hidden !important;
|
||||
opacity: 0 !important;
|
||||
user-select: none !important;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
!function(){const e=(()=>{const e={},t=document.querySelectorAll("object");for(let n=0,r=t.length;n<r;n+=1){const r=t[n];if(!r||!r.children)continue;const o=Array.from(r.children).find((e=>"string"==typeof e.value&&e.value.startsWith("http")&&e.value.endsWith(".mp3")));if(o){e.object=r,e.url=o.value;break}}return e})();e.object&&(e=>{const{object:t,url:n}=e,r=document.createElement("AUDIO");r.innerHTML=`<source src="${n}" type="audio/mpeg" />`,r.controls=!0,r.autoplay=!0,r.style.cssText=`\n width: ${t.width}px;\n height: 50px;\n filter: invert();\n `,t.parentNode.replaceChild(r,t)})(e)}();
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
@charset "utf-8";
|
||||
|
||||
body,
|
||||
button,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
input,
|
||||
select,
|
||||
table,
|
||||
textarea {
|
||||
font-family: HelveticaNeue-Light, Helvetica, AppleSDGothicNeo-Regular,
|
||||
"나눔고딕", nanumgothic, sans-serif !important;
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
/* Fixed header to install facebook App. */
|
||||
.android #header-notices,
|
||||
/* "Get Facebook for Android and browse faster" link in login form. */
|
||||
.android a[href*="com.facebook.katana"],
|
||||
.android #MChromeHeader #header {
|
||||
display: none !important;
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
[data-useragent*="sidebar"] #nx_input_clear {
|
||||
right: 9px;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] #_rs_show_btn {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .sch_btn:not(.sch_del) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .sch_w .sch_inpw_in .sch_inp_inner {
|
||||
margin-right: 34px;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
window.addEventListener("DOMContentLoaded",(()=>{const e=document.querySelector('input[name="query"]');e&&e.setAttribute("accesskey",e.getAttribute("accesskey")||"s")}));
|
||||
|
|
@ -1 +0,0 @@
|
|||
(()=>{var e={725:e=>{e.exports={isSidebar:()=>navigator.userAgent.includes("sidebar"),isMobileWindow:()=>navigator.userAgent.includes("Build/WHALE")&&navigator.userAgent.includes("Mobile")}},45:e=>{let t;const r=()=>!!t,o=()=>!(!r()||isNaN(t.duration)||t.networkState===t.NETWORK_EMPTY||t.networkState===t.NETWORK_NO_SOURCE);e.exports={isAvailable:o,hasElement:r,setElement:e=>{t=e},togglePlayPause:()=>{o()&&(t.paused?t.play():t.pause())},seekPrev:e=>{o()&&(t.currentTime=Math.max(0,t.currentTime-e))},seekNext:e=>{if(!o())return;const{currentTime:r,duration:a}=t;t.currentTime=Math.min(a,r+e)},volumeUp:e=>{o()&&(t.volume=Math.min(1,t.volume+e))},volumeDown:e=>{o()&&(t.volume=Math.max(0,t.volume-e))}}}},t={};function r(o){var a=t[o];if(void 0!==a)return a.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=r(725),t=r.n(e),o=r(45),a=r.n(o);(t().isSidebar()||t().isMobileWindow())&&(a().setElement(document.querySelector("video")),window.addEventListener("click",(e=>{e.target.closest(".player,#player")?a().setElement(document.querySelector("video")):a().setElement(void 0)}),!0),window.addEventListener("keydown",(e=>{a().isAvailable()&&(["INPUT","TEXTAREA"].includes(e.target.tagName.toUpperCase())||(e.code.startsWith("Arrow")||"Space"===e.code)&&(e.preventDefault(),"ArrowLeft"===e.code?a().seekPrev(5):"ArrowRight"===e.code?a().seekNext(5):"ArrowUp"===e.code?a().volumeUp(.1):"ArrowDown"===e.code?a().volumeDown(.1):"Space"===e.code&&a().togglePlayPause()))}),!0))})()})();
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
video {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
video::-webkit-media-controls {
|
||||
cursor: default;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
(()=>{var e={725:e=>{e.exports={isSidebar:()=>navigator.userAgent.includes("sidebar"),isMobileWindow:()=>navigator.userAgent.includes("Build/WHALE")&&navigator.userAgent.includes("Mobile")}},45:e=>{let t;const r=()=>!!t,o=()=>!(!r()||isNaN(t.duration)||t.networkState===t.NETWORK_EMPTY||t.networkState===t.NETWORK_NO_SOURCE);e.exports={isAvailable:o,hasElement:r,setElement:e=>{t=e},togglePlayPause:()=>{o()&&(t.paused?t.play():t.pause())},seekPrev:e=>{o()&&(t.currentTime=Math.max(0,t.currentTime-e))},seekNext:e=>{if(!o())return;const{currentTime:r,duration:a}=t;t.currentTime=Math.min(a,r+e)},volumeUp:e=>{o()&&(t.volume=Math.min(1,t.volume+e))},volumeDown:e=>{o()&&(t.volume=Math.max(0,t.volume-e))}}}},t={};function r(o){var a=t[o];if(void 0!==a)return a.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=r(725),t=r.n(e),o=r(45),a=r.n(o);(t().isSidebar()||t().isMobileWindow())&&(a().setElement(document.querySelector("video")),window.addEventListener("click",(e=>{"VIDEO"===e.target.tagName.toUpperCase()?(a().setElement(e.target),a().togglePlayPause()):a().setElement(void 0)}),!0),window.addEventListener("keydown",(e=>{a().isAvailable()&&(["INPUT","TEXTAREA"].includes(e.target.tagName.toUpperCase())||(e.code.startsWith("Arrow")||"Space"===e.code)&&(e.preventDefault(),"ArrowLeft"===e.code?a().seekPrev(5):"ArrowRight"===e.code?a().seekNext(5):"ArrowUp"===e.code?a().volumeUp(.1):"ArrowDown"===e.code?a().volumeDown(.1):"Space"===e.code&&a().togglePlayPause()))}),!0),window.addEventListener("player-state-change",(e=>{a().hasElement()||-1===e.detail.state||a().setElement(document.querySelector("video"))}),!0))})()})();
|
||||
|
|
@ -1 +0,0 @@
|
|||
(()=>{var e={725:e=>{e.exports={isSidebar:()=>navigator.userAgent.includes("sidebar"),isMobileWindow:()=>navigator.userAgent.includes("Build/WHALE")&&navigator.userAgent.includes("Mobile")}},45:e=>{let t;const r=()=>!!t,o=()=>!(!r()||isNaN(t.duration)||t.networkState===t.NETWORK_EMPTY||t.networkState===t.NETWORK_NO_SOURCE);e.exports={isAvailable:o,hasElement:r,setElement:e=>{t=e},togglePlayPause:()=>{o()&&(t.paused?t.play():t.pause())},seekPrev:e=>{o()&&(t.currentTime=Math.max(0,t.currentTime-e))},seekNext:e=>{if(!o())return;const{currentTime:r,duration:n}=t;t.currentTime=Math.min(n,r+e)},volumeUp:e=>{o()&&(t.volume=Math.min(1,t.volume+e))},volumeDown:e=>{o()&&(t.volume=Math.max(0,t.volume-e))}}}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=r(725),t=r.n(e),o=r(45),n=r.n(o);(t().isSidebar()||t().isMobileWindow())&&(n().setElement(document.querySelector("video")),window.addEventListener("click",(()=>{n().hasElement()||n().setElement(document.querySelector("video"))}),!0),window.addEventListener("keydown",(e=>{n().isAvailable()&&(["INPUT","TEXTAREA"].includes(e.target.tagName.toUpperCase())||(e.code.startsWith("Arrow")||"Space"===e.code)&&(e.preventDefault(),"ArrowLeft"===e.code?n().seekPrev(5):"ArrowRight"===e.code?n().seekNext(5):"ArrowUp"===e.code?n().volumeUp(.1):"ArrowDown"===e.code?n().volumeDown(.1):"Space"===e.code&&n().togglePlayPause()))}),!0))})()})();
|
||||
|
|
@ -1 +0,0 @@
|
|||
(()=>{const e=e=>{if(e.key&&"Enter"!==e.key)return;const t=(e.target.getAttribute("rel")||"").split(" "),n=e.target.getAttribute("href");if(t.includes("whale-system")){if(!n.startsWith("whale://"))return;whale.runtime.sendMessage("mdppnmkhoflepinhojdkmkanhhlkginn",{namespace:"webui.api",message:{action:"createTab",param:{url:n}}}),e.preventDefault()}};window.addEventListener("click",e,!0),window.addEventListener("keydown",e,!0)})();
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
[data-useragent*="sidebar"] .__whale__extension {
|
||||
background: transparent;
|
||||
border: 0;
|
||||
padding: 35px;
|
||||
letter-spacing: -0.5pt;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .__whale__extension .container {
|
||||
position: relative;
|
||||
background: #fff;
|
||||
border: 0.5px solid rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.15), 0px 12px 24px rgba(0, 0, 0, 0.18);
|
||||
border-radius: 16px;
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .__whale__extension .btn-close {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .__whale__extension .header h1 {
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
line-height: 140%;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .__whale__extension .header svg {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
|
||||
[data-useragent*="sidebar"] .__whale__extension .body {
|
||||
margin: 10px 0 15px;
|
||||
color: #777;
|
||||
font-size: 13px;
|
||||
line-height: 150%;
|
||||
white-space: pre-line;
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .__whale__extension .btn-action {
|
||||
display: flex;
|
||||
height: 34px;
|
||||
white-space: nowrap;
|
||||
color: #fff;
|
||||
background: #05C3A7;
|
||||
border-radius: 3px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
font-size: 13px;
|
||||
line-height: 150%;
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .__whale__extension .btn-action:hover {
|
||||
background: #05AF96;
|
||||
}
|
||||
|
||||
[data-useragent*="sidebar"] .__whale__extension .btn-action:active {
|
||||
background: #049C86;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
(()=>{const e="whale_naver_notice_termiation_noticed";if(!navigator.userAgent.includes("sidebar"))return;if(localStorage.getItem(e))return;const t={ko:{title:"네이버 알림 사이드바 제공 종료 안내",text:"안녕하세요. 네이버 웨일 팀입니다.\n서비스 개편에 따라, 2023년 7월 중 네이버 알림이 사이드바에서 제공 종료될 예정입니다. 계속해서 네이버 알림 서비스를 사용하기 희망하시는 경우, 웨일 스토어에서 네이버 알림 확장앱을 설치하여 주시기 바랍니다.\n웨일을 사랑해주셔서 감사합니다.",button:"네이버 알림 확장앱 설치하기"},en:{title:"Notice of Service Termination",text:"Hello. This is the NAVER Whale Team.\nFollowing the service reorganization, Naver Notice will be terminated from the sidebar in July 2023. If you want to continue using Naver Notice, please add Naver Notice extension to Whale in Whale Store.\nThank you.",button:"Add Naver Notice extension"}},n=navigator.language.startsWith("ko")?"ko":"en",o=e=>t[n][e],i=document.createElement("dialog");i.className="__whale__extension",i.innerHTML=`\n <div class="container">\n <button type="button" class="btn-close">\n <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path fill-rule="evenodd" clip-rule="evenodd" d="M3.85355 3.14645C3.65829 2.95118 3.34171 2.95118 3.14645 3.14645C2.95118 3.34171 2.95118 3.65829 3.14645 3.85355L8.79289 9.5L3.14645 15.1464C2.95118 15.3417 2.95118 15.6583 3.14645 15.8536C3.34171 16.0488 3.65829 16.0488 3.85355 15.8536L9.5 10.2071L15.1464 15.8536C15.3417 16.0488 15.6583 16.0488 15.8536 15.8536C16.0488 15.6583 16.0488 15.3417 15.8536 15.1464L10.2071 9.5L15.8536 3.85355C16.0488 3.65829 16.0488 3.34171 15.8536 3.14645C15.6583 2.95118 15.3417 2.95118 15.1464 3.14645L9.5 8.79289L3.85355 3.14645Z" fill="#222222"/>\n </svg>\n </button>\n <div class="header">\n <h1>${o("title")}</h1>\n </div>\n <div class="body">${o("text")}</div>\n <div class="footer">\n <a href="https://store.whale.naver.com/detail/pmaoolobhideeaadkcjkkejmjkhfhcho" target="_whale_store" class="btn-action">\n ${o("button")}\n </a>\n </div>\n </div>\n `;const a=()=>{i.close(),localStorage.setItem(e,!0)};i.querySelector(".btn-close").addEventListener("click",(()=>{a()})),i.querySelector(".btn-action").addEventListener("click",(()=>{a()})),document.body.append(i),i.showModal()})();
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
[data-videoparty="videoparty"] .html5-endscreen,
|
||||
[data-videoparty="videoparty"] .videowall-endscreen,
|
||||
[data-videoparty="videoparty"] .ytp-chrome-top-buttons,
|
||||
[data-videoparty="videoparty"] .ytp-pause-overlay {
|
||||
display: none !important;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
(()=>{const e=decodeURIComponent(location.search);(navigator.userAgent.includes("videoparty")||e.includes("whaleon")&&e.includes("play/youtube"))&&(document.documentElement.dataset.videoparty="videoparty")})();
|
||||