mdbq 2.3.3__tar.gz → 2.3.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. {mdbq-2.3.3 → mdbq-2.3.5}/PKG-INFO +1 -1
  2. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/aggregation/aggregation.py +8 -8
  3. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/aggregation/query_data.py +64 -0
  4. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/clean/data_clean.py +14 -2
  5. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/spider/aikucun.py +19 -17
  6. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq.egg-info/PKG-INFO +1 -1
  7. {mdbq-2.3.3 → mdbq-2.3.5}/setup.py +1 -1
  8. {mdbq-2.3.3 → mdbq-2.3.5}/README.txt +0 -0
  9. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/__init__.py +0 -0
  10. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/__version__.py +0 -0
  11. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/aggregation/__init__.py +0 -0
  12. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/aggregation/df_types.py +0 -0
  13. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/aggregation/mysql_types.py +0 -0
  14. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/aggregation/optimize_data.py +0 -0
  15. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/bdup/__init__.py +0 -0
  16. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/bdup/bdup.py +0 -0
  17. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/clean/__init__.py +0 -0
  18. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/company/__init__.py +0 -0
  19. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/company/copysh.py +0 -0
  20. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/company/home_sh.py +0 -0
  21. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/config/__init__.py +0 -0
  22. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/config/get_myconf.py +0 -0
  23. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/config/products.py +0 -0
  24. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/config/set_support.py +0 -0
  25. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/config/update_conf.py +0 -0
  26. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/dataframe/__init__.py +0 -0
  27. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/dataframe/converter.py +0 -0
  28. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/log/__init__.py +0 -0
  29. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/log/mylogger.py +0 -0
  30. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/mongo/__init__.py +0 -0
  31. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/mongo/mongo.py +0 -0
  32. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/mysql/__init__.py +0 -0
  33. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/mysql/mysql.py +0 -0
  34. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/mysql/s_query.py +0 -0
  35. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/mysql/year_month_day.py +0 -0
  36. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/other/__init__.py +0 -0
  37. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/other/porxy.py +0 -0
  38. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/other/pov_city.py +0 -0
  39. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/other/sku_picture.py +0 -0
  40. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/other/ua_sj.py +0 -0
  41. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/pbix/__init__.py +0 -0
  42. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/pbix/pbix_refresh.py +0 -0
  43. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/pbix/refresh_all.py +0 -0
  44. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/pbix/refresh_all_old.py +0 -0
  45. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/req_post/__init__.py +0 -0
  46. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/req_post/req_tb.py +0 -0
  47. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq/spider/__init__.py +0 -0
  48. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq.egg-info/SOURCES.txt +0 -0
  49. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq.egg-info/dependency_links.txt +0 -0
  50. {mdbq-2.3.3 → mdbq-2.3.5}/mdbq.egg-info/top_level.txt +0 -0
  51. {mdbq-2.3.3 → mdbq-2.3.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 2.3.3
3
+ Version: 2.3.5
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -526,7 +526,7 @@ class DatabaseUpdate:
526
526
  elif name.endswith('.csv') and '竞店分析-来源分析-入店搜索词' in name:
527
527
  df = pd.read_csv(os.path.join(root, name), encoding='utf-8_sig', header=0, na_filter=False)
528
528
  check_remove_file = True
529
- elif name.endswith('.csv') and '爱库存_商品榜单' in name:
529
+ elif name.endswith('.csv') and '爱库存_商品榜单_spu_' in name:
530
530
  df = pd.read_csv(os.path.join(root, name), encoding='utf-8_sig', header=0, na_filter=False)
531
531
  check_remove_file = True
532
532
  # ----------------------- 京东数据处理分界线 -----------------------
@@ -1299,13 +1299,13 @@ if __name__ == '__main__':
1299
1299
  username, password, host, port = get_myconf.select_config_values(target_service='nas', database='mysql')
1300
1300
  print(username, password, host, port)
1301
1301
  # file_dir(one_file=False, target_service='company')
1302
- one_file_to_mysql(
1303
- file='/Users/xigua/Downloads/爱库存_商品榜单_spu_2024-10-17_2024-10-17.csv',
1304
- db_name='爱库存2',
1305
- table_name='商品spu榜单',
1306
- target_service='company',
1307
- database='mysql'
1308
- )
1302
+ # one_file_to_mysql(
1303
+ # file='/Users/xigua/Downloads/爱库存_商品榜单_spu_2024-10-17_2024-10-17.csv',
1304
+ # db_name='爱库存2',
1305
+ # table_name='商品spu榜单',
1306
+ # target_service='company',
1307
+ # database='mysql'
1308
+ # )
1309
1309
 
1310
1310
  # db_name = '推广数据2'
1311
1311
  # table_name = '权益报表'
@@ -688,6 +688,53 @@ class MysqlDatasQuery:
688
688
  df = pd.concat(_datas, axis=0, ignore_index=True)
689
689
  return df
690
690
 
691
+ def aikucun_bd_spu(self):
692
+ start_date, end_date = self.months_data(num=self.months)
693
+ projection = {
694
+ '日期': 1,
695
+ 'spi_id': 1,
696
+ '商品名称': 1,
697
+ '品牌名称': 1,
698
+ '商品款号': 1,
699
+ '一级类目名称': 1,
700
+ '二级类目名称': 1,
701
+ '三级类目名称': 1,
702
+ '转发次数': 1,
703
+ '转发爱豆人数': 1,
704
+ '访客量': 1,
705
+ '浏览量': 1,
706
+ '下单gmv': 1,
707
+ '成交gmv': 1,
708
+ '供货额': 1,
709
+ '供货价': 1,
710
+ '销售爱豆人数_成交': 1,
711
+ '支付人数_交易': 1,
712
+ '支付人数_成交': 1,
713
+ '销售量_成交': 1,
714
+ '销售量_交易': 1,
715
+ '订单数_成交': 1,
716
+ '订单数_交易': 1,
717
+ '成交率_交易': 1,
718
+ '成交率_成交': 1,
719
+ '可售库存数': 1,
720
+ '售罄率': 1,
721
+ '在架sku数': 1,
722
+ '可售sku数': 1,
723
+ 'sku数_交易': 1,
724
+ 'sku数_成交': 1,
725
+ '营销后供货额': 1,
726
+ '营销后供货价': 1,
727
+ }
728
+ projection = {}
729
+ df = self.download.data_to_df(
730
+ db_name='爱库存2',
731
+ table_name='商品spu榜单',
732
+ start_date=start_date,
733
+ end_date=end_date,
734
+ projection=projection,
735
+ )
736
+ return df
737
+
691
738
 
692
739
  class GroupBy:
693
740
  """
@@ -822,6 +869,17 @@ class GroupBy:
822
869
  return df
823
870
  elif '商品索引表' in table_name:
824
871
  return df
872
+ elif '爱库存_商品spu榜单' in table_name:
873
+ df.drop_duplicates(
874
+ subset=[
875
+ '日期',
876
+ 'spu_id',
877
+ '访客量',
878
+ '浏览量',
879
+ '下单gmv',
880
+ '成交gmv',
881
+ ], keep='last', inplace=True, ignore_index=True)
882
+ return df
825
883
  elif '人群报表' in table_name:
826
884
  df.rename(columns={
827
885
  '场景名字': '营销场景',
@@ -1713,6 +1771,12 @@ def data_aggregation(service_databases=[{}], months=1):
1713
1771
  '唯一主键': [],
1714
1772
  '数据主体': sdq.tg_by_day(),
1715
1773
  },
1774
+ {
1775
+ '数据库名': '聚合数据',
1776
+ '集合名': '爱库存_商品spu榜单',
1777
+ '唯一主键': [],
1778
+ '数据主体': sdq.aikucun_bd_spu(),
1779
+ },
1716
1780
  ]
1717
1781
  for items in data_dict: # 遍历返回结果
1718
1782
  db_name, table_name, unique_key_list, df = items['数据库名'], items['集合名'], items['唯一主键'], items['数据主体']
@@ -1142,11 +1142,23 @@ class DataClean:
1142
1142
  shutil.move(os.path.join(path, _name), t2) # 将文件从下载文件夹移到目标位置
1143
1143
 
1144
1144
  # @try_except
1145
- def move_all(self, path=None):
1145
+ def move_all(self, path=None, is_except=[]):
1146
1146
  if not path:
1147
1147
  path = self.path
1148
1148
  for root, dirs, files in os.walk(path, topdown=False):
1149
1149
  for name in files:
1150
+ # print(name)
1151
+ is_continue = False
1152
+ if is_except:
1153
+ for item in is_except:
1154
+ print(item, f'-----', os.path.join(root, name))
1155
+ if item in os.path.join(root, name):
1156
+ # print(name)
1157
+ is_continue = True
1158
+ break
1159
+ if is_continue: # 需要排除不做处理的文件或文件夹
1160
+ continue
1161
+ # print(is_except, is_continue)
1150
1162
  def bib(paths, _as_month=None):
1151
1163
  """闭包函数"""
1152
1164
  self.move_files(path=path, _name=name, target_path=paths, _as_month=_as_month)
@@ -1336,7 +1348,7 @@ class DataClean:
1336
1348
  elif name.endswith('.csv') and '京东推广关键词点击成交报表' in name:
1337
1349
  t_path = str(pathlib.Path(self.source_path, '京东报表/JD推广_关键词报表'))
1338
1350
  bib(t_path, _as_month=True)
1339
- elif name.endswith('.csv') and '爱库存' in name and '商品榜单' in name:
1351
+ elif name.endswith('.csv') and '爱库存_商品榜单_spu_' in name:
1340
1352
  t_path = str(pathlib.Path(self.source_path, '爱库存/商品榜单'))
1341
1353
  bib(t_path, _as_month=True)
1342
1354
  # 京东分界线 ------- 结束标记
@@ -43,11 +43,12 @@ else:
43
43
  Source_Path = str(pathlib.Path(Data_Path, '原始文件2'))
44
44
 
45
45
 
46
- def test():
46
+ def get_cookie_aikucun():
47
47
  """
48
48
  """
49
49
  _url = 'https://gray-merc.aikucun.com/index.html'
50
- cookie_path = '/Users/xigua/Downloads'
50
+ cookie_path = os.path.join(set_support.SetSupport(dirname='support').dirname, 'cookies')
51
+ filename_aikucun = 'cookie_aikucun.txt'
51
52
  print(_url)
52
53
 
53
54
  option = webdriver.ChromeOptions() # 浏览器启动选项
@@ -79,7 +80,6 @@ def test():
79
80
  service = Service(chromedriver_path)
80
81
  _driver = webdriver.Chrome(service=service, options=option) # 创建Chrome驱动程序实例
81
82
 
82
- print('yes')
83
83
  # 登录
84
84
  _driver.get(_url)
85
85
  time.sleep(0.1)
@@ -91,16 +91,16 @@ def test():
91
91
  time.sleep(0.1)
92
92
 
93
93
 
94
- _file = os.path.join(cookie_path, f'cookie_.txt')
94
+ _file = os.path.join(cookie_path, filename_aikucun)
95
95
  with open(_file, 'w') as f:
96
96
  # 将cookies保存为json格式
97
97
  cookies_list = _driver.get_cookies()
98
- for cookie in cookies_list:
99
- # 该字段有问题所以删除就可以
100
- if 'expiry' in cookie:
101
- del cookie['expiry']
102
- # if 'domain' in cookie:
103
- # cookie['domain'] = '.taobao.com'
98
+ # for cookie in cookies_list:
99
+ # # 该字段有问题所以删除就可以
100
+ # if 'expiry' in cookie:
101
+ # del cookie['expiry']
102
+ # # if 'domain' in cookie:
103
+ # # cookie['domain'] = '.taobao.com'
104
104
  cookies_list = json.dumps(cookies_list)
105
105
  f.write(cookies_list)
106
106
  print(f'cookie已保存: {_file}')
@@ -109,7 +109,8 @@ def test():
109
109
 
110
110
  class AikuCun:
111
111
  def __init__(self):
112
- self.url = 'https://gray-merc.aikucun.com/index.html'
112
+ # self.url = 'https://gray-merc.aikucun.com/index.html'
113
+ self.sp_url = 'https://treasurebox.aikucun.com/dashboard/commodity/ranking/merchant?LS=true&shopId=1814114991487782914&from=menu&v=0.1936043279838604'
113
114
  self.cookie_path = os.path.join(set_support.SetSupport(dirname='support').dirname, 'cookies')
114
115
 
115
116
  def login(self, shop_name='aikucun'):
@@ -173,7 +174,7 @@ class AikuCun:
173
174
  _driver.maximize_window() # 窗口最大化 方便后续加载数据
174
175
 
175
176
  # 登录
176
- _driver.get(self.url)
177
+ _driver.get(self.sp_url)
177
178
  _driver.delete_all_cookies() # 首先清除浏览器打开已有的cookies
178
179
  name_lists = os.listdir(self.cookie_path) # cookie 放在主目录下的 cookies 文件夹
179
180
  for name in name_lists:
@@ -193,9 +194,10 @@ class AikuCun:
193
194
  """
194
195
 
195
196
  _driver = self.login(shop_name=shop_name)
196
- _url = 'https://treasurebox.aikucun.com/dashboard/commodity/ranking/merchant?LS=true&shopId=1814114991487782914&from=menu&v=0.1936043279838604'
197
- _driver.get(_url)
197
+
198
+ _driver.get(self.sp_url)
198
199
  time.sleep(3)
200
+ # breakpoint()
199
201
 
200
202
  today = datetime.date.today()
201
203
  for date_s in range(date_num):
@@ -271,7 +273,7 @@ class AikuCun:
271
273
 
272
274
  def akucun():
273
275
  akc = AikuCun()
274
- akc.get_data(shop_name='aikucun', date_num=3)
276
+ akc.get_data(shop_name='aikucun', date_num=2)
275
277
  # akc.clean_data()
276
278
 
277
279
  # 新版 数据分类
@@ -291,10 +293,10 @@ def akucun():
291
293
  c.set_up_to_mysql = False # 不再使用 data_clean 更新数据库,改为 aggregation.py
292
294
  c.new_unzip(is_move=True, ) # 解压文件
293
295
  c.change_and_sort(is_except=['临时文件'])
294
- c.move_all() # 移到文件到原始文件夹
296
+ c.move_all(is_except=['临时文件']) # 移到文件到原始文件夹
295
297
 
296
298
 
297
299
  if __name__ == '__main__':
298
300
  pass
299
- # test()
301
+ # get_cookie_aikucun()
300
302
  akucun()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 2.3.3
3
+ Version: 2.3.5
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -3,7 +3,7 @@
3
3
  from setuptools import setup, find_packages
4
4
 
5
5
  setup(name='mdbq',
6
- version='2.3.3',
6
+ version='2.3.5',
7
7
  author='xigua, ',
8
8
  author_email="2587125111@qq.com",
9
9
  url='https://pypi.org/project/mdbsql',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes