mrh 10 mēneši atpakaļ
vecāks
revīzija
3b5a2538b7

+ 2 - 1
CONVENTIONS.md

@@ -2,4 +2,5 @@
 - 编写代码遵循模块化,高内聚低耦合原则,符合程序设计的基本原则。
 - 如果我有的任何提示和注意事项要说明在代码中,都应在代码中添加注释。
 - 所有代码兼容 Linux 和 Windows 系统。
-- 必须使用 logger 记录日志。
+- 必须使用 logger 记录日志。
+- 传参必须声明数据类型

+ 1 - 1
brand_add_url_link.py

@@ -48,7 +48,7 @@ def read_and_process_csv(input_file, output_file, need_search_url_columns, asin_
     process_csv(df, need_search_url_columns, use_letters, lambda value: create_hyperlink(value, base_url), start_row)
     
     # 处理ASIN列
-    process_csv(df, asin_columns, use_letters, create_asin_link, start_row + 1)
+    process_csv(df, asin_columns, use_letters, create_asin_link, start_row)
     
     # 将处理后的数据写入新的CSV文件
     df.to_csv(output_file, index=False, encoding='utf-8')

+ 19 - 3
mylib/CONVENTIONS.md

@@ -28,14 +28,30 @@ logger = logging.getLogger('xxx')
 检测文件的编码,正常读取并打印少量内容,然后转换为 utf8 格式文件
 
 
-`new_col_translate` :
+## `new_col_translate` :
 
 自动获取正确的文件编码,读取 Excel 文件,用 pandas 库操作表格。
 
-实现功能:
 
-传参可以选择某一列,例如 B 列,在 B 列的右边插入空列 C。 log 输出用户传入的信息。
 
+### 实现功能:
+示例表格:
+报告范围=["每季度"]	选择年份=["2024"]	选择季度=["3"]	点击最高的品类=["Lawn and Garden"]																	
+搜索频率排名	搜索词	点击量最高的品牌 #1	点击量最高的品牌 #2	点击量最高的品牌 #3	点击量最高的类别 #1	点击量最高的类别 #2	点击量最高的类别 #3	点击量最高的商品 #1:ASIN	点击量最高的商品 #1:商品名称	点击量最高的商品 #1:点击份额	点击量最高的商品 #1:转化份额	点击量最高的商品 #2:ASIN	点击量最高的商品 #2:商品名称	点击量最高的商品 #2:点击份额	点击量最高的商品 #2:转化份额	点击量最高的商品 #3:ASIN	点击量最高的商品 #3:商品名称	点击量最高的商品 #3:点击份额	点击量最高的商品 #3:转化份额	报告日期
+120	プール	Ameer	Intex	INTEX	Toys	Lawn and Garden	Digital_Video_Download	B0CY4B6NKJ	Ameer 【2024新改良 工場直売】 プール 空気入れ不要 大型 ビニールプール 家庭用 子供用 折りたたみ 組み立て不要 非膨張式 簡易 四角いプール 深い 水遊び 避暑 収納便利 日本語説明書付き(内径180*110*55CM,外径210*140*55CM)	8.95	0.71	B004TTDYLA	INTEX(インテックス) プール レクタングラフレームプール 220x150x60cm 28270 [日本正規品]	5.46	0.86	B0D5HP31TW	Ameer [鉄骨構造 非膨張式プール] 大型 プール 空気入れ不要 ビニールプール 空気入れ不要 折りたたみ 四角い プール 家庭用 子供用 水遊び 収納便利 日本語説明書付き (外径181*135*45CM,内径160*110*45CM)	5.45	0.65	2024/9/30
+229	テント	Coleman	Kaitou	PYKES PEAK	Sports	Lawn and Garden	Home	B0978WFR3Y	kaitou ワンタッチタープテント テント タープテント ワンタッチ 日よけ キャンプ アウトドア レジャー用品 紫外線 公園 遠足 運動会 花見 3m×3m グリーン [並行輸入品]	5.58	3.29	B08CBRNL1Y	YACONE ワンタッチテント 2WAY 4人用 設営簡単 コンパクト 軽量 uvカット加工 二重層 防水 ソロ キャンプ アウトドア 防風 防災用 (オリーブグリーン)	2.86	1.74	B086GKS59F	コールマン(Coleman) シェード クイックアップIGシェード+	2.8	2.91	2024/9/30
+
+
+输入信息: B 列
+
+报告范围=["每季度"]	选择年份=["2024"]	选择年份=["2024"]_translated	选择季度=["3"]	点击最高的品类=["Lawn and Garden"]			_translated		_translated		_translated													
+搜索频率排名	搜索词		点击量最高的品牌 #1	点击量最高的品牌 #2	点击量最高的品牌 #3	点击量最高的类别 #1		点击量最高的类别 #2		点击量最高的类别 #3		点击量最高的商品 #1:ASIN	点击量最高的商品 #1:商品名称	点击量最高的商品 #1:点击份额	点击量最高的商品 #1:转化份额	点击量最高的商品 #2:ASIN	点击量最高的商品 #2:商品名称	点击量最高的商品 #2:点击份额	点击量最高的商品 #2:转化份额	点击量最高的商品 #3:ASIN	点击量最高的商品 #3:商品名称	点击量最高的商品 #3:点击份额	点击量最高的商品 #3:转化份额	报告日期
+120	プール	泳池	Ameer	Intex	INTEX	Toys		Lawn and Garden	草坪和花园	Digital_Video_Download		B0CY4B6NKJ	Ameer 【2024新改良 工場直売】 プール 空気入れ不要 大型 ビニールプール 家庭用 子供用 折りたたみ 組み立て不要 非膨張式 簡易 四角いプール 深い 水遊び 避暑 収納便利 日本語説明書付き(内径180*110*55CM,外径210*140*55CM)	8.95	0.71	B004TTDYLA	INTEX(インテックス) プール レクタングラフレームプール 220x150x60cm 28270 [日本正規品]	5.46	0.86	B0D5HP31TW	Ameer [鉄骨構造 非膨張式プール] 大型 プール 空気入れ不要 ビニールプール 空気入れ不要 折りたたみ 四角い プール 家庭用 子供用 水遊び 収納便利 日本語説明書付き (外径181*135*45CM,内径160*110*45CM)	5.45	0.65	2024/9/30
+229	テント	帐篷	Coleman	Kaitou	PYKES PEAK	Sports		Lawn and Garden	草坪和花园	Home		B0978WFR3Y	kaitou ワンタッチタープテント テント タープテント ワンタッチ 日よけ キャンプ アウトドア レジャー用品 紫外線 公園 遠足 運動会 花見 3m×3m グリーン [並行輸入品]	5.58	3.29	B08CBRNL1Y	YACONE ワンタッチテント 2WAY 4人用 設営簡単 コンパクト 軽量 uvカット加工 二重層 防水 ソロ キャンプ アウトドア 防風 防災用 (オリーブグリーン)	2.86	1.74	B086GKS59F	コールマン(Coleman) シェード クイックアップIGシェード+	2.8	2.91	2024/9/30
+370	タープ	塑料布	Kaitou	Unigear	DOD(ディーオーディー)	Sports		Lawn and Garden	草坪和花园	Home		B0978WFR3Y	kaitou ワンタッチタープテント テント タープテント ワンタッチ 日よけ キャンプ アウトドア レジャー用品 紫外線 公園 遠足 運動会 花見 3m×3m グリーン [並行輸入品]	6.11	1.41	B07VK89LFV	DOD(ディーオーディー) いつかのタープ はじめてでも扱いやすい ベーシックな ヘキサタープ waterproof Medium ブラック オールインワン 延長テープ 標準付属 UV加工済 TT5-631-BK	5.76	1.53	B076C7GXNT	Unigear 防水タープ キャンプ タープ テント 軽量 日除け 高耐水加工 紫外線カット 遮熱 サンシェルター ポータブル 天幕 シェード アウトドア 収納ケース付 2-6人用 4サイズ (アーミーグリーン, L(300*300))	3.53	0.96	2024/9/30
+
+</示例>
+-------
 允许从 B 列的哪一行到哪一行开始翻译。默认是从B列第二行到最后一行。
 
 在翻译前,将部分内容先 log 出来看看提取的内容是否正确。

+ 1 - 1
mylib/logging_config.py

@@ -46,7 +46,7 @@ def setup_logging():
     root_logger.setLevel(logging.WARNING)  # 设置根logger为WARNING级别
     
     # 创建项目特定的logger
-    project_logger = logging.getLogger('mylib')
+    project_logger = logging.getLogger('excel_tool')
     project_logger.setLevel(logging.DEBUG)
     project_logger.propagate = False  # 防止日志传播到根logger
     

+ 5 - 4
mylib/new_col_translate.py

@@ -25,10 +25,11 @@ def index_to_column_letter(index: int) -> str:
 
 def read_csv_with_header(
     file_path: str, 
-    encoding: str = 'cp936'
+    encoding: str = 'utf-8'
 ) -> List[List[str]]:
     """读取CSV文件并返回数据和表头"""
     try:
+        logger.debug(f"encoding = {encoding}")
         with open(file_path, 'r', encoding=encoding) as f:
             reader = csv.reader(f)
             header = next(reader)  # 读取表头(第1行)
@@ -133,7 +134,7 @@ def process_csv(
     end_row: Optional[int] = None,
     source_lang: str = 'auto',
     target_lang: str = 'zh-CN',
-    encoding: str = 'cp936'
+    encoding: str = 'utf-8'
 ):
     """处理CSV文件的主函数"""
     try:
@@ -168,11 +169,11 @@ if __name__ == "__main__":
     load_dotenv()
     
     # 示例用法
-    file_path = "/home/mrh/code/excel_tool/temp/测试.csv"
+    file_path = "/home/mrh/code/excel_tool/temp/测试_url_processed.csv"
     output_path = "/home/mrh/code/excel_tool/temp/测试_processed.csv"
     
     # 读取文件并搜索关键词
-    header, data = read_csv_with_header(file_path)
+    header, data = read_csv_with_header(file_path, encoding='utf-8')
     found_columns = search_keywords(data, header, ["搜索词", "类别"])
     
     # 处理文件

+ 1 - 1
mylib/pdfzh_translator.py

@@ -107,7 +107,7 @@ class OpenAITranslator(BaseTranslator):
             return results
 
         response = self.client.chat.completions.create(
-            model=os.getenv('LLM_MODEL', self.model),
+            model=self.model,
             **self.options,
             messages=[
                 {

+ 7 - 2
user_requiement_doc.md

@@ -20,10 +20,15 @@
 1.0
 - 在搜索词列的右边插入一列,在新一列中翻译成中文
 - 在搜索词列点击单元格内容,可以直接跳转到亚马逊链接,网页是搜索词的搜索内容
+```python
+def create_hyperlink(value, base_url):
+    """为给定的值创建亚马逊搜索页面的超链接"""
+    return f'=HYPERLINK("{base_url}{quote(value)}&__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99", "{value}")'
+```
+
 
 2.0
-- 点击品牌相关的列,可以看到该品牌在亚马逊上的所有产品 
-brand_add_url_link.py 已经实现 `create_hyperlink`
+- 点击品牌相关的列,可以看到该品牌在亚马逊上的所有产品,具体是通过创建搜索链接实现的。
 
 3.0 
 - 在“点击量最高的类别”的所有列中,每一列右边插入新列,翻译成中文