|
1 | 1 | import os |
2 | | -from .utils import random_key, build_get_url, get_req_json |
| 2 | +from .utils import random_key, build_get_url, get_req_json, get_req_content, get_req_text |
3 | 3 | from .tiktok_browser import TikTokBrowser |
4 | 4 |
|
5 | 5 |
|
@@ -194,3 +194,25 @@ def getVideoById(self, video_id): |
194 | 194 | for key, val in self.default_params.items(): |
195 | 195 | params[key] = val |
196 | 196 | return self.send_get_request(url, params) |
| 197 | + |
| 198 | + def downloadVideoById(self, video_id, save_path): |
| 199 | + video_info = self.getVideoById(video_id) |
| 200 | + video_url = video_info["itemInfo"]["itemStruct"]["video"]["downloadAddr"] |
| 201 | + headers = {"User-Agent": "okhttp"} |
| 202 | + video_data = get_req_content(video_url, params=None, headers=headers) |
| 203 | + with open(save_path, 'wb') as f: |
| 204 | + f.write(video_data) |
| 205 | + |
| 206 | + def downloadVideoByIdNoWatermark(self, video_id, save_path): |
| 207 | + video_info = self.getVideoById(video_id) |
| 208 | + video_url = video_info["itemInfo"]["itemStruct"]["video"]["downloadAddr"] |
| 209 | + headers = {"User-Agent": "okhttp"} |
| 210 | + video_data = get_req_text(video_url, params=None, headers=headers) |
| 211 | + pos = video_data.find("vid:") |
| 212 | + video_url_no_wm = "https://api2-16-h2.musical.ly/aweme/v1/play/?video_id={" \ |
| 213 | + "}&vr_type=0&is_play_url=1&source=PackSourceEnum_PUBLISH&media_type=4" \ |
| 214 | + .format(video_data[pos+4:pos+36]) |
| 215 | + headers = {"User-Agent": "okhttp"} |
| 216 | + video_data_no_wm = get_req_content(video_url_no_wm, params=None, headers=headers) |
| 217 | + with open(save_path, 'wb') as f: |
| 218 | + f.write(video_data_no_wm) |
0 commit comments