vlff李飞飞 commited on
Commit
68743ec
1 Parent(s): 83f4493
Files changed (2) hide show
  1. qwen_server/utils.py +48 -0
  2. requirements.txt +2 -1
qwen_server/utils.py CHANGED
@@ -10,6 +10,54 @@ from qwen_agent.log import logger
10
  from qwen_agent.utils.doc_parser import parse_doc, parse_html_bs
11
  from qwen_agent.utils.utils import print_traceback, save_text_to_file
12
  from qwen_server.schema import Record
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
 
15
  def is_local_path(path):
 
10
  from qwen_agent.utils.doc_parser import parse_doc, parse_html_bs
11
  from qwen_agent.utils.utils import print_traceback, save_text_to_file
12
  from qwen_server.schema import Record
13
+ from b2sdk.v2 import B2Api
14
+ from b2sdk.v2 import InMemoryAccountInfo
15
+ import hashlib
16
+ from datetime import datetime
17
+ from io import BytesIO
18
+
19
+
20
+ class B2Manager():
21
+ def __init__(self):
22
+ info = InMemoryAccountInfo()
23
+ b2_api = B2Api(info)
24
+ application_key_id = os.environ.get("b2_key_id")
25
+ application_key = os.environ.get("b2_key")
26
+ b2_api.authorize_account("production", application_key_id, application_key)
27
+ self.b2_bucket = b2_api.get_bucket_by_name(os.environ.get("b2_bucket_name"))
28
+ self.b2_api = b2_api
29
+ self.file_name = None
30
+
31
+ def gen_file_name(self, access_token, url):
32
+ url_md5 = hashlib.md5(b'%s' % url.encode(encoding='UTF-8')).hexdigest()
33
+ self.file_name = f"{access_token}/{url_md5}"
34
+
35
+ def get(self):
36
+ in_memory_file = BytesIO()
37
+ self.b2_bucket.download_file_by_name(self.file_name).save(in_memory_file)
38
+ # export_file = self.b2_bucket.download_file_by_name(self.file_name)
39
+ # export_file.save(in_memory_file)
40
+ in_memory_file.seek(0)
41
+ return in_memory_file.read()
42
+
43
+ def upsert(self, file_path, content):
44
+ with open(file_path, 'rb') as file_data:
45
+ # file_info = {'description': ''}
46
+ self.b2_bucket.upload_bytes(file_data.read(), self.file_name, file_infos=None)
47
+
48
+ def delete(self):
49
+ file_version_info = self.b2_bucket.get_file_info_by_name(self.file_name)
50
+ self.b2_bucket.hide_file(file_version_info.file_name)
51
+ # for version in self.b2_bucket.list_file_versions(self.file_name):
52
+ # self.b2_bucket.delete_file_version(version.id_, version.file_name)
53
+
54
+ def list_files(self, access_token):
55
+ files = []
56
+ for file_version_info, folder_name in self.b2_bucket.ls(folder_to_list="access_token/", show_versions=False):
57
+ # The upload timestamp is in milliseconds, so we divide by 1000 to convert it to seconds
58
+ upload_timestamp = datetime.fromtimestamp(file_version_info.upload_timestamp / 1000.0)
59
+ files.append(f"File Name: {file_version_info.file_name}, \nUpload timestamp: {upload_timestamp}, \nMetadata: {file_version_info.file_info}")
60
+ return files
61
 
62
 
63
  def is_local_path(path):
requirements.txt CHANGED
@@ -35,4 +35,5 @@ torch==2.0.1
35
  transformers_stream_generator
36
  einops
37
  accelerate
38
- itsdangerous
 
 
35
  transformers_stream_generator
36
  einops
37
  accelerate
38
+ itsdangerous
39
+ b2sdk