tiktokautouploader 3.14__py2.py3-none-any.whl → 3.17__py2.py3-none-any.whl
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.
- tiktokautouploader/function.py +194 -186
- {tiktokautouploader-3.14.dist-info → tiktokautouploader-3.17.dist-info}/METADATA +1 -1
- tiktokautouploader-3.17.dist-info/RECORD +7 -0
- tiktokautouploader-3.14.dist-info/RECORD +0 -7
- {tiktokautouploader-3.14.dist-info → tiktokautouploader-3.17.dist-info}/WHEEL +0 -0
- {tiktokautouploader-3.14.dist-info → tiktokautouploader-3.17.dist-info}/licenses/LICENSE.md +0 -0
tiktokautouploader/function.py
CHANGED
@@ -1,17 +1,14 @@
|
|
1
1
|
from playwright.sync_api import sync_playwright
|
2
2
|
import json
|
3
3
|
import time
|
4
|
-
import inference
|
5
4
|
import subprocess
|
5
|
+
from inference_sdk import InferenceHTTPClient
|
6
6
|
import pkg_resources
|
7
7
|
import requests
|
8
8
|
from PIL import Image
|
9
9
|
import sys
|
10
|
-
import base64
|
11
10
|
import os
|
12
|
-
from dotenv import load_dotenv
|
13
11
|
import warnings
|
14
|
-
load_dotenv()
|
15
12
|
warnings.simplefilter("ignore")
|
16
13
|
|
17
14
|
|
@@ -135,8 +132,6 @@ def get_image_src(page):
|
|
135
132
|
image_url = page.get_attribute("img#captcha-verify-image", "src")
|
136
133
|
return image_url
|
137
134
|
|
138
|
-
os.getenv('ROBOFLOW_API_KEY')
|
139
|
-
|
140
135
|
def download_image(image_url):
|
141
136
|
response = requests.get(image_url)
|
142
137
|
image_path = "captcha_image.jpg"
|
@@ -146,18 +141,25 @@ def download_image(image_url):
|
|
146
141
|
|
147
142
|
def run_inference_on_image_tougher(image_path, object):
|
148
143
|
|
149
|
-
|
150
|
-
|
144
|
+
k = 'n|KIeDZnRZiJ};iVHz;R'
|
145
|
+
rk = ''.join(chr((ord(c) - 3) % 256) for c in k)
|
146
|
+
|
147
|
+
CLIENT = InferenceHTTPClient(
|
148
|
+
api_url="https://detect.roboflow.com",
|
149
|
+
api_key=f"{rk}"
|
150
|
+
)
|
151
|
+
|
152
|
+
results = CLIENT.infer(image_path, model_id="captcha-2-6ehbe/2")
|
151
153
|
|
152
154
|
class_names = []
|
153
155
|
bounding_boxes = []
|
154
|
-
for obj in results[
|
155
|
-
class_names.append(obj
|
156
|
+
for obj in results['predictions']:
|
157
|
+
class_names.append(obj['class'])
|
156
158
|
bounding_boxes.append({
|
157
|
-
"x": obj
|
158
|
-
"y": obj
|
159
|
-
"width": obj
|
160
|
-
"height": obj
|
159
|
+
"x": obj['x'],
|
160
|
+
"y": obj['y'],
|
161
|
+
"width": obj['width'],
|
162
|
+
"height": obj['height']
|
161
163
|
})
|
162
164
|
|
163
165
|
bounding_box = []
|
@@ -172,34 +174,40 @@ def run_inference_on_image_tougher(image_path, object):
|
|
172
174
|
|
173
175
|
def run_inference_on_image(image_path):
|
174
176
|
|
175
|
-
|
176
|
-
|
177
|
+
k = 'n|KIeDZnRZiJ};iVHz;R'
|
178
|
+
rk = ''.join(chr((ord(c) - 3) % 256) for c in k)
|
179
|
+
|
180
|
+
CLIENT = InferenceHTTPClient(
|
181
|
+
api_url="https://detect.roboflow.com",
|
182
|
+
api_key=f"{rk}"
|
183
|
+
)
|
184
|
+
|
185
|
+
results = CLIENT.infer(image_path, model_id="tk-3nwi9/2")
|
177
186
|
|
178
187
|
class_names = []
|
179
188
|
bounding_boxes = []
|
180
|
-
for obj in results[
|
181
|
-
class_names.append(obj
|
189
|
+
for obj in results['predictions']:
|
190
|
+
class_names.append(obj['class'])
|
182
191
|
bounding_boxes.append({
|
183
|
-
"x": obj
|
184
|
-
"y": obj
|
185
|
-
"width": obj
|
186
|
-
"height": obj
|
192
|
+
"x": obj['x'],
|
193
|
+
"y": obj['y'],
|
194
|
+
"width": obj['width'],
|
195
|
+
"height": obj['height']
|
187
196
|
})
|
188
197
|
|
189
198
|
already_written = []
|
190
199
|
bounding_box = []
|
191
200
|
class_to_click = []
|
192
|
-
for i,
|
193
|
-
if
|
194
|
-
class_to_click.append(
|
201
|
+
for i, detected_class in enumerate(class_names):
|
202
|
+
if detected_class in already_written:
|
203
|
+
class_to_click.append(detected_class)
|
195
204
|
bounding_box.append(bounding_boxes[i])
|
196
|
-
index = already_written.index(
|
205
|
+
index = already_written.index(detected_class)
|
197
206
|
bounding_box.append(bounding_boxes[index])
|
198
207
|
|
199
|
-
already_written.append(
|
208
|
+
already_written.append(detected_class)
|
200
209
|
|
201
210
|
found = False
|
202
|
-
|
203
211
|
if len(class_to_click) == 1:
|
204
212
|
found = True
|
205
213
|
|
@@ -514,21 +522,160 @@ def upload_tiktok(video, description, accountname, hashtags=None, sound_name=Non
|
|
514
522
|
except:
|
515
523
|
sys.exit("SCHEDULING ERROR: VIDEO SAVED AS DRAFT")
|
516
524
|
|
517
|
-
if (schedule == None) and (day != None):
|
518
|
-
|
519
|
-
|
520
|
-
if(sound_name == None):
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
525
|
+
# if (schedule == None) and (day != None):
|
526
|
+
# sys.exit("ERROR: CANT SCHEDULE FOR ANOTHER DAY USING 'day' WITHOUT ALSO INCLUDING TIME OF UPLOAD WITH 'schedule'; PLEASE ALSO INCLUDE TIME WITH 'schedule' PARAMETER")
|
527
|
+
|
528
|
+
# if(sound_name == None):
|
529
|
+
# if copyrightcheck == True:
|
530
|
+
# page.locator(".TUXSwitch-input").nth(0).click()
|
531
|
+
# while copyrightcheck == True:
|
532
|
+
# time.sleep(0.2)
|
533
|
+
# if page.locator("span", has_text="No issues detected.").is_visible():
|
534
|
+
# if suppressprint == False:
|
535
|
+
# print("Copyright check complete")
|
536
|
+
# break
|
537
|
+
# if page.locator("span", has_text="Copyright issues detected.").is_visible():
|
538
|
+
# sys.exit("COPYRIGHT CHECK FAILED: COPYRIGHT AUDIO DETECTED FROM TIKTOK")
|
531
539
|
|
540
|
+
# if schedule == None:
|
541
|
+
# page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Post")', timeout=10000)
|
542
|
+
# uploaded = False
|
543
|
+
# checks = 0
|
544
|
+
# while uploaded == False:
|
545
|
+
# if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
|
546
|
+
# time.sleep(0.2)
|
547
|
+
# break
|
548
|
+
# time.sleep(0.2)
|
549
|
+
# checks += 1
|
550
|
+
# if checks > 100:
|
551
|
+
# time.sleep(10)
|
552
|
+
# if checks == 150:
|
553
|
+
# break
|
554
|
+
# else:
|
555
|
+
# page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Schedule")', timeout=10000)
|
556
|
+
# uploaded = False
|
557
|
+
# checks = 0
|
558
|
+
# while uploaded == False:
|
559
|
+
# if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
|
560
|
+
# time.sleep(0.2)
|
561
|
+
# break
|
562
|
+
# time.sleep(0.2)
|
563
|
+
# checks += 1
|
564
|
+
# if checks > 100:
|
565
|
+
# time.sleep(10)
|
566
|
+
# if checks == 150:
|
567
|
+
# break
|
568
|
+
# if suppressprint == False:
|
569
|
+
# print("Done uploading video, NOTE: it may take a minute or two to show on TikTok")
|
570
|
+
|
571
|
+
# page.close()
|
572
|
+
|
573
|
+
# else:
|
574
|
+
# try:
|
575
|
+
# page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--secondary:has-text("Save draft")', timeout=10000)
|
576
|
+
# except:
|
577
|
+
# sys.exit("SAVE AS DRAFT BUTTON NOT FOUND; CANNOT ADD SOUND WITHOUT ABILITY TO SAVE DRAFTS")
|
578
|
+
|
579
|
+
# time.sleep(0.5)
|
580
|
+
# page.close()
|
581
|
+
|
582
|
+
# browser = p.chromium.launch(headless=False)
|
583
|
+
|
584
|
+
# context = browser.new_context()
|
585
|
+
# context.add_cookies(cookies)
|
586
|
+
# page = context.new_page()
|
587
|
+
# url2 = 'https://www.tiktok.com/tiktokstudio/content?tab=draft'
|
588
|
+
|
589
|
+
# while retries < 2:
|
590
|
+
# try:
|
591
|
+
# page.goto(url2, timeout=30000)
|
592
|
+
# except:
|
593
|
+
# retries +=1
|
594
|
+
# time.sleep(5)
|
595
|
+
# if retries == 2:
|
596
|
+
# sys.exit("ERROR: TIK TOK PAGE FAILED TO LOAD, try again.")
|
597
|
+
# else:
|
598
|
+
# break
|
599
|
+
|
600
|
+
# try:
|
601
|
+
# page.wait_for_selector("path[d='M37.37 4.85a4.01 4.01 0 0 0-.99-.79 3 3 0 0 0-2.72 0c-.45.23-.81.6-1 .79a9 9 0 0 1-.04.05l-19.3 19.3c-1.64 1.63-2.53 2.52-3.35 3.47a36 36 0 0 0-4.32 6.16c-.6 1.1-1.14 2.24-2.11 4.33l-.3.6c-.4.75-.84 1.61-.8 2.43a2.5 2.5 0 0 0 2.37 2.36c.82.05 1.68-.4 2.44-.79l.59-.3c2.09-.97 3.23-1.5 4.33-2.11a36 36 0 0 0 6.16-4.32c.95-.82 1.84-1.71 3.47-3.34l19.3-19.3.05-.06a3 3 0 0 0 .78-3.71c-.22-.45-.6-.81-.78-1l-.02-.02-.03-.03-3.67-3.67a8.7 8.7 0 0 1-.06-.05ZM16.2 26.97 35.02 8.15l2.83 2.83L19.03 29.8c-1.7 1.7-2.5 2.5-3.33 3.21a32 32 0 0 1-7.65 4.93 32 32 0 0 1 4.93-7.65c.73-.82 1.51-1.61 3.22-3.32Z']")
|
602
|
+
# page.click("path[d='M37.37 4.85a4.01 4.01 0 0 0-.99-.79 3 3 0 0 0-2.72 0c-.45.23-.81.6-1 .79a9 9 0 0 1-.04.05l-19.3 19.3c-1.64 1.63-2.53 2.52-3.35 3.47a36 36 0 0 0-4.32 6.16c-.6 1.1-1.14 2.24-2.11 4.33l-.3.6c-.4.75-.84 1.61-.8 2.43a2.5 2.5 0 0 0 2.37 2.36c.82.05 1.68-.4 2.44-.79l.59-.3c2.09-.97 3.23-1.5 4.33-2.11a36 36 0 0 0 6.16-4.32c.95-.82 1.84-1.71 3.47-3.34l19.3-19.3.05-.06a3 3 0 0 0 .78-3.71c-.22-.45-.6-.81-.78-1l-.02-.02-.03-.03-3.67-3.67a8.7 8.7 0 0 1-.06-.05ZM16.2 26.97 35.02 8.15l2.83 2.83L19.03 29.8c-1.7 1.7-2.5 2.5-3.33 3.21a32 32 0 0 1-7.65 4.93 32 32 0 0 1 4.93-7.65c.73-.82 1.51-1.61 3.22-3.32Z']")
|
603
|
+
# page.wait_for_selector('div[data-contents="true"]')
|
604
|
+
# page.wait_for_function("document.querySelector('.info-progress-num').textContent.trim() === '100%'", timeout=3000000)
|
605
|
+
# time.sleep(0.2)
|
606
|
+
# except:
|
607
|
+
# sys.exit("ERROR ADDING SOUND: Video saved as draft")
|
608
|
+
|
609
|
+
if sound_name != None:
|
610
|
+
page.click("div.TUXButton-label:has-text('Edit video')")
|
611
|
+
page.wait_for_selector("input.search-bar-input")
|
612
|
+
page.fill(f"input.search-bar-input", f"{sound_name}")
|
613
|
+
time.sleep(0.2)
|
614
|
+
page.click("div.TUXButton-label:has-text('Search')")
|
615
|
+
try:
|
616
|
+
page.wait_for_selector('div.music-card-container')
|
617
|
+
page.click("div.music-card-container")
|
618
|
+
page.wait_for_selector("div.TUXButton-label:has-text('Use')")
|
619
|
+
page.click("div.TUXButton-label:has-text('Use')")
|
620
|
+
except:
|
621
|
+
sys.exit(f"ERROR: SOUND '{sound_name}' NOT FOUND")
|
622
|
+
try:
|
623
|
+
page.wait_for_selector('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgNy41MDE2QzAgNi42NzMxNyAwLjY3MTU3MyA2LjAwMTYgMS41IDYuMDAxNkgzLjU3NzA5QzMuODY4MDUgNi4wMDE2IDQuMTQ0NTggNS44NzQ4OCA0LjMzNDU1IDUuNjU0NDlMOC43NDI1NSAwLjU0MDUyQzkuMzQ3OCAtMC4xNjE2NjggMTAuNSAwLjI2NjM3NCAxMC41IDEuMTkzNDFWMTguOTY3MkMxMC41IDE5Ljg3NDUgOS4zODg5NCAyMC4zMTI5IDguNzY5NDIgMTkuNjVMNC4zMzE3OSAxNC45MDIxQzQuMTQyNjkgMTQuNjk5OCAzLjg3ODE2IDE0LjU4NDkgMy42MDEyMiAxNC41ODQ5SDEuNUMwLjY3MTU3MyAxNC41ODQ5IDAgMTMuOTEzNCAwIDEzLjA4NDlWNy41MDE2Wk01Ljg0OTQ1IDYuOTYwMjdDNS4yNzk1NiA3LjYyMTQzIDQuNDQ5OTcgOC4wMDE2IDMuNTc3MDkgOC4wMDE2SDJWMTIuNTg0OUgzLjYwMTIyQzQuNDMyMDMgMTIuNTg0OSA1LjIyNTY0IDEyLjkyOTUgNS43OTI5NSAxMy41MzY0TDguNSAxNi40MzI4VjMuODg1MjJMNS44NDk0NSA2Ljk2MDI3WiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPHBhdGggZD0iTTEzLjUxNSA3LjE5MTE5QzEzLjM0MjQgNi45NzU1OSAxMy4zMzk5IDYuNjYwNTYgMTMuNTM1MiA2LjQ2NTNMMTQuMjQyMyA1Ljc1ODE5QzE0LjQzNzYgNS41NjI5MyAxNC43NTU4IDUuNTYxNzUgMTQuOTM1NiA1Ljc3MTM2QzE2Ljk5NTkgOC4xNzM2MiAxNi45OTU5IDExLjgyOCAxNC45MzU2IDE0LjIzMDNDMTQuNzU1OCAxNC40Mzk5IDE0LjQzNzYgMTQuNDM4NyAxNC4yNDIzIDE0LjI0MzVMMTMuNTM1MiAxMy41MzY0QzEzLjMzOTkgMTMuMzQxMSAxMy4zNDI0IDEzLjAyNjEgMTMuNTE1IDEyLjgxMDVDMTQuODEzIDExLjE4ODUgMTQuODEzIDguODEzMTIgMTMuNTE1IDcuMTkxMTlaIiBmaWxsPSIjMTYxODIzIiBmaWxsLW9wYWNpdHk9IjAuNiIvPgo8cGF0aCBkPSJNMTYuNzE3MiAxNi43MTgzQzE2LjUyMTkgMTYuNTIzMSAxNi41MjMxIDE2LjIwNzQgMTYuNzA3MiAxNi4wMDE3QzE5LjcyNTcgMTIuNjMgMTkuNzI1NyA3LjM3MTY4IDE2LjcwNzIgNC4wMDAwMUMxNi41MjMxIDMuNzk0MjcgMTYuNTIxOSAzLjQ3ODU4IDE2LjcxNzIgMy4yODMzMkwxNy40MjQzIDIuNTc2MjFDMTcuNjE5NSAyLjM4MDk1IDE3LjkzNyAyLjM4MDIgMTguMTIzMyAyLjU4NDA4QzIxLjkwOTkgNi43MjkyNiAyMS45MDk5IDEzLjI3MjQgMTguMTIzMyAxNy40MTc2QzE3LjkzNyAxNy42MjE1IDE3LjYxOTUgMTcuNjIwNyAxNy40MjQzIDE3LjQyNTVMMTYuNzE3MiAxNi43MTgzWiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPC9zdmc+Cg=="]')
|
624
|
+
page.click('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgNy41MDE2QzAgNi42NzMxNyAwLjY3MTU3MyA2LjAwMTYgMS41IDYuMDAxNkgzLjU3NzA5QzMuODY4MDUgNi4wMDE2IDQuMTQ0NTggNS44NzQ4OCA0LjMzNDU1IDUuNjU0NDlMOC43NDI1NSAwLjU0MDUyQzkuMzQ3OCAtMC4xNjE2NjggMTAuNSAwLjI2NjM3NCAxMC41IDEuMTkzNDFWMTguOTY3MkMxMC41IDE5Ljg3NDUgOS4zODg5NCAyMC4zMTI5IDguNzY5NDIgMTkuNjVMNC4zMzE3OSAxNC45MDIxQzQuMTQyNjkgMTQuNjk5OCAzLjg3ODE2IDE0LjU4NDkgMy42MDEyMiAxNC41ODQ5SDEuNUMwLjY3MTU3MyAxNC41ODQ5IDAgMTMuOTEzNCAwIDEzLjA4NDlWNy41MDE2Wk01Ljg0OTQ1IDYuOTYwMjdDNS4yNzk1NiA3LjYyMTQzIDQuNDQ5OTcgOC4wMDE2IDMuNTc3MDkgOC4wMDE2SDJWMTIuNTg0OUgzLjYwMTIyQzQuNDMyMDMgMTIuNTg0OSA1LjIyNTY0IDEyLjkyOTUgNS43OTI5NSAxMy41MzY0TDguNSAxNi40MzI4VjMuODg1MjJMNS44NDk0NSA2Ljk2MDI3WiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPHBhdGggZD0iTTEzLjUxNSA3LjE5MTE5QzEzLjM0MjQgNi45NzU1OSAxMy4zMzk5IDYuNjYwNTYgMTMuNTM1MiA2LjQ2NTNMMTQuMjQyMyA1Ljc1ODE5QzE0LjQzNzYgNS41NjI5MyAxNC43NTU4IDUuNTYxNzUgMTQuOTM1NiA1Ljc3MTM2QzE2Ljk5NTkgOC4xNzM2MiAxNi45OTU5IDExLjgyOCAxNC45MzU2IDE0LjIzMDNDMTQuNzU1OCAxNC40Mzk5IDE0LjQzNzYgMTQuNDM4NyAxNC4yNDIzIDE0LjI0MzVMMTMuNTM1MiAxMy41MzY0QzEzLjMzOTkgMTMuMzQxMSAxMy4zNDI0IDEzLjAyNjEgMTMuNTE1IDEyLjgxMDVDMTQuODEzIDExLjE4ODUgMTQuODEzIDguODEzMTIgMTMuNTE1IDcuMTkxMTlaIiBmaWxsPSIjMTYxODIzIiBmaWxsLW9wYWNpdHk9IjAuNiIvPgo8cGF0aCBkPSJNMTYuNzE3MiAxNi43MTgzQzE2LjUyMTkgMTYuNTIzMSAxNi41MjMxIDE2LjIwNzQgMTYuNzA3MiAxNi4wMDE3QzE5LjcyNTcgMTIuNjMgMTkuNzI1NyA3LjM3MTY4IDE2LjcwNzIgNC4wMDAwMUMxNi41MjMxIDMuNzk0MjcgMTYuNTIxOSAzLjQ3ODU4IDE2LjcxNzIgMy4yODMzMkwxNy40MjQzIDIuNTc2MjFDMTcuNjE5NSAyLjM4MDk1IDE3LjkzNyAyLjM4MDIgMTguMTIzMyAyLjU4NDA4QzIxLjkwOTkgNi43MjkyNiAyMS45MDk5IDEzLjI3MjQgMTguMTIzMyAxNy40MTc2QzE3LjkzNyAxNy42MjE1IDE3LjYxOTUgMTcuNjIwNyAxNy40MjQzIDE3LjQyNTVMMTYuNzE3MiAxNi43MTgzWiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPC9zdmc+Cg=="]')
|
625
|
+
time.sleep(0.5)
|
626
|
+
sliders = page.locator("input.scaleInput")
|
627
|
+
|
628
|
+
if sound_aud_vol == 'background':
|
629
|
+
slider1 = sliders.nth(0)
|
630
|
+
bounding_box1 = slider1.bounding_box()
|
631
|
+
if bounding_box1:
|
632
|
+
x1 = bounding_box1["x"] + (bounding_box1["width"] * 0.92)
|
633
|
+
y1 = bounding_box1["y"] + bounding_box1["height"] / 2
|
634
|
+
page.mouse.click(x1, y1)
|
635
|
+
|
636
|
+
slider2 = sliders.nth(1)
|
637
|
+
bounding_box2 = slider2.bounding_box()
|
638
|
+
if bounding_box2:
|
639
|
+
x2 = bounding_box2["x"] + (bounding_box2["width"] * 0.097)
|
640
|
+
y2 = bounding_box2["y"] + bounding_box2["height"] / 2
|
641
|
+
page.mouse.click(x2, y2)
|
642
|
+
|
643
|
+
if sound_aud_vol == 'main':
|
644
|
+
slider1 = sliders.nth(0)
|
645
|
+
bounding_box1 = slider1.bounding_box()
|
646
|
+
if bounding_box1:
|
647
|
+
x1 = bounding_box1["x"] + (bounding_box1["width"] * 0.092)
|
648
|
+
y1 = bounding_box1["y"] + bounding_box1["height"] / 2
|
649
|
+
page.mouse.click(x1, y1)
|
650
|
+
slider2 = sliders.nth(1)
|
651
|
+
bounding_box2 = slider2.bounding_box()
|
652
|
+
if bounding_box2:
|
653
|
+
x2 = bounding_box2["x"] + (bounding_box2["width"] * 0.92)
|
654
|
+
y2 = bounding_box2["y"] + bounding_box2["height"] / 2
|
655
|
+
page.mouse.click(x2, y2)
|
656
|
+
except:
|
657
|
+
sys.exit("ERROR ADJUSTING SOUND VOLUME: please try again.")
|
658
|
+
|
659
|
+
page.wait_for_selector("div.TUXButton-label:has-text('Save edit')")
|
660
|
+
page.click("div.TUXButton-label:has-text('Save edit')")
|
661
|
+
if suppressprint == False:
|
662
|
+
print("Added sound")
|
663
|
+
|
664
|
+
page.wait_for_selector('div[data-contents="true"]')
|
665
|
+
|
666
|
+
if copyrightcheck == True:
|
667
|
+
page.locator(".TUXSwitch-input").nth(0).click()
|
668
|
+
while copyrightcheck == True:
|
669
|
+
time.sleep(0.2)
|
670
|
+
if page.locator("span", has_text="No issues detected.").is_visible():
|
671
|
+
if suppressprint == False:
|
672
|
+
print("Copyright check complete")
|
673
|
+
break
|
674
|
+
if page.locator("span", has_text="Copyright issues detected.").is_visible():
|
675
|
+
sys.exit("COPYRIGHT CHECK FAILED: VIDEO SAVED AS DRAFT, COPYRIGHT AUDIO DETECTED FROM TIKTOK")
|
676
|
+
|
677
|
+
|
678
|
+
try:
|
532
679
|
if schedule == None:
|
533
680
|
page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Post")', timeout=10000)
|
534
681
|
uploaded = False
|
@@ -559,148 +706,9 @@ def upload_tiktok(video, description, accountname, hashtags=None, sound_name=Non
|
|
559
706
|
break
|
560
707
|
if suppressprint == False:
|
561
708
|
print("Done uploading video, NOTE: it may take a minute or two to show on TikTok")
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
try:
|
567
|
-
page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--secondary:has-text("Save draft")', timeout=10000)
|
568
|
-
except:
|
569
|
-
sys.exit("SAVE AS DRAFT BUTTON NOT FOUND; CANNOT ADD SOUND WITHOUT ABILITY TO SAVE DRAFTS")
|
570
|
-
|
571
|
-
time.sleep(0.5)
|
572
|
-
page.close()
|
573
|
-
|
574
|
-
browser = p.chromium.launch(headless=True)
|
575
|
-
|
576
|
-
context = browser.new_context()
|
577
|
-
context.add_cookies(cookies)
|
578
|
-
page = context.new_page()
|
579
|
-
url2 = 'https://www.tiktok.com/tiktokstudio/content?tab=draft'
|
580
|
-
|
581
|
-
while retries < 2:
|
582
|
-
try:
|
583
|
-
page.goto(url2, timeout=30000)
|
584
|
-
except:
|
585
|
-
retries +=1
|
586
|
-
time.sleep(5)
|
587
|
-
if retries == 2:
|
588
|
-
sys.exit("ERROR: TIK TOK PAGE FAILED TO LOAD, try again.")
|
589
|
-
else:
|
590
|
-
break
|
591
|
-
|
592
|
-
try:
|
593
|
-
page.wait_for_selector("path[d='M37.37 4.85a4.01 4.01 0 0 0-.99-.79 3 3 0 0 0-2.72 0c-.45.23-.81.6-1 .79a9 9 0 0 1-.04.05l-19.3 19.3c-1.64 1.63-2.53 2.52-3.35 3.47a36 36 0 0 0-4.32 6.16c-.6 1.1-1.14 2.24-2.11 4.33l-.3.6c-.4.75-.84 1.61-.8 2.43a2.5 2.5 0 0 0 2.37 2.36c.82.05 1.68-.4 2.44-.79l.59-.3c2.09-.97 3.23-1.5 4.33-2.11a36 36 0 0 0 6.16-4.32c.95-.82 1.84-1.71 3.47-3.34l19.3-19.3.05-.06a3 3 0 0 0 .78-3.71c-.22-.45-.6-.81-.78-1l-.02-.02-.03-.03-3.67-3.67a8.7 8.7 0 0 1-.06-.05ZM16.2 26.97 35.02 8.15l2.83 2.83L19.03 29.8c-1.7 1.7-2.5 2.5-3.33 3.21a32 32 0 0 1-7.65 4.93 32 32 0 0 1 4.93-7.65c.73-.82 1.51-1.61 3.22-3.32Z']")
|
594
|
-
page.click("path[d='M37.37 4.85a4.01 4.01 0 0 0-.99-.79 3 3 0 0 0-2.72 0c-.45.23-.81.6-1 .79a9 9 0 0 1-.04.05l-19.3 19.3c-1.64 1.63-2.53 2.52-3.35 3.47a36 36 0 0 0-4.32 6.16c-.6 1.1-1.14 2.24-2.11 4.33l-.3.6c-.4.75-.84 1.61-.8 2.43a2.5 2.5 0 0 0 2.37 2.36c.82.05 1.68-.4 2.44-.79l.59-.3c2.09-.97 3.23-1.5 4.33-2.11a36 36 0 0 0 6.16-4.32c.95-.82 1.84-1.71 3.47-3.34l19.3-19.3.05-.06a3 3 0 0 0 .78-3.71c-.22-.45-.6-.81-.78-1l-.02-.02-.03-.03-3.67-3.67a8.7 8.7 0 0 1-.06-.05ZM16.2 26.97 35.02 8.15l2.83 2.83L19.03 29.8c-1.7 1.7-2.5 2.5-3.33 3.21a32 32 0 0 1-7.65 4.93 32 32 0 0 1 4.93-7.65c.73-.82 1.51-1.61 3.22-3.32Z']")
|
595
|
-
page.wait_for_selector('div[data-contents="true"]')
|
596
|
-
page.wait_for_function("document.querySelector('.info-progress-num').textContent.trim() === '100%'", timeout=3000000)
|
597
|
-
time.sleep(0.2)
|
598
|
-
except:
|
599
|
-
sys.exit("ERROR ADDING SOUND: Video saved as draft")
|
600
|
-
|
601
|
-
if sound_name != None:
|
602
|
-
page.click("div.TUXButton-label:has-text('Edit video')")
|
603
|
-
page.wait_for_selector("input.search-bar-input")
|
604
|
-
page.fill(f"input.search-bar-input", f"{sound_name}")
|
605
|
-
time.sleep(0.2)
|
606
|
-
page.click("div.TUXButton-label:has-text('Search')")
|
607
|
-
try:
|
608
|
-
page.wait_for_selector('div.music-card-container')
|
609
|
-
page.click("div.music-card-container")
|
610
|
-
page.wait_for_selector("div.TUXButton-label:has-text('Use')")
|
611
|
-
page.click("div.TUXButton-label:has-text('Use')")
|
612
|
-
except:
|
613
|
-
sys.exit(f"ERROR: SOUND '{sound_name}' NOT FOUND")
|
614
|
-
try:
|
615
|
-
page.wait_for_selector('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgNy41MDE2QzAgNi42NzMxNyAwLjY3MTU3MyA2LjAwMTYgMS41IDYuMDAxNkgzLjU3NzA5QzMuODY4MDUgNi4wMDE2IDQuMTQ0NTggNS44NzQ4OCA0LjMzNDU1IDUuNjU0NDlMOC43NDI1NSAwLjU0MDUyQzkuMzQ3OCAtMC4xNjE2NjggMTAuNSAwLjI2NjM3NCAxMC41IDEuMTkzNDFWMTguOTY3MkMxMC41IDE5Ljg3NDUgOS4zODg5NCAyMC4zMTI5IDguNzY5NDIgMTkuNjVMNC4zMzE3OSAxNC45MDIxQzQuMTQyNjkgMTQuNjk5OCAzLjg3ODE2IDE0LjU4NDkgMy42MDEyMiAxNC41ODQ5SDEuNUMwLjY3MTU3MyAxNC41ODQ5IDAgMTMuOTEzNCAwIDEzLjA4NDlWNy41MDE2Wk01Ljg0OTQ1IDYuOTYwMjdDNS4yNzk1NiA3LjYyMTQzIDQuNDQ5OTcgOC4wMDE2IDMuNTc3MDkgOC4wMDE2SDJWMTIuNTg0OUgzLjYwMTIyQzQuNDMyMDMgMTIuNTg0OSA1LjIyNTY0IDEyLjkyOTUgNS43OTI5NSAxMy41MzY0TDguNSAxNi40MzI4VjMuODg1MjJMNS44NDk0NSA2Ljk2MDI3WiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPHBhdGggZD0iTTEzLjUxNSA3LjE5MTE5QzEzLjM0MjQgNi45NzU1OSAxMy4zMzk5IDYuNjYwNTYgMTMuNTM1MiA2LjQ2NTNMMTQuMjQyMyA1Ljc1ODE5QzE0LjQzNzYgNS41NjI5MyAxNC43NTU4IDUuNTYxNzUgMTQuOTM1NiA1Ljc3MTM2QzE2Ljk5NTkgOC4xNzM2MiAxNi45OTU5IDExLjgyOCAxNC45MzU2IDE0LjIzMDNDMTQuNzU1OCAxNC40Mzk5IDE0LjQzNzYgMTQuNDM4NyAxNC4yNDIzIDE0LjI0MzVMMTMuNTM1MiAxMy41MzY0QzEzLjMzOTkgMTMuMzQxMSAxMy4zNDI0IDEzLjAyNjEgMTMuNTE1IDEyLjgxMDVDMTQuODEzIDExLjE4ODUgMTQuODEzIDguODEzMTIgMTMuNTE1IDcuMTkxMTlaIiBmaWxsPSIjMTYxODIzIiBmaWxsLW9wYWNpdHk9IjAuNiIvPgo8cGF0aCBkPSJNMTYuNzE3MiAxNi43MTgzQzE2LjUyMTkgMTYuNTIzMSAxNi41MjMxIDE2LjIwNzQgMTYuNzA3MiAxNi4wMDE3QzE5LjcyNTcgMTIuNjMgMTkuNzI1NyA3LjM3MTY4IDE2LjcwNzIgNC4wMDAwMUMxNi41MjMxIDMuNzk0MjcgMTYuNTIxOSAzLjQ3ODU4IDE2LjcxNzIgMy4yODMzMkwxNy40MjQzIDIuNTc2MjFDMTcuNjE5NSAyLjM4MDk1IDE3LjkzNyAyLjM4MDIgMTguMTIzMyAyLjU4NDA4QzIxLjkwOTkgNi43MjkyNiAyMS45MDk5IDEzLjI3MjQgMTguMTIzMyAxNy40MTc2QzE3LjkzNyAxNy42MjE1IDE3LjYxOTUgMTcuNjIwNyAxNy40MjQzIDE3LjQyNTVMMTYuNzE3MiAxNi43MTgzWiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPC9zdmc+Cg=="]')
|
616
|
-
page.click('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgNy41MDE2QzAgNi42NzMxNyAwLjY3MTU3MyA2LjAwMTYgMS41IDYuMDAxNkgzLjU3NzA5QzMuODY4MDUgNi4wMDE2IDQuMTQ0NTggNS44NzQ4OCA0LjMzNDU1IDUuNjU0NDlMOC43NDI1NSAwLjU0MDUyQzkuMzQ3OCAtMC4xNjE2NjggMTAuNSAwLjI2NjM3NCAxMC41IDEuMTkzNDFWMTguOTY3MkMxMC41IDE5Ljg3NDUgOS4zODg5NCAyMC4zMTI5IDguNzY5NDIgMTkuNjVMNC4zMzE3OSAxNC45MDIxQzQuMTQyNjkgMTQuNjk5OCAzLjg3ODE2IDE0LjU4NDkgMy42MDEyMiAxNC41ODQ5SDEuNUMwLjY3MTU3MyAxNC41ODQ5IDAgMTMuOTEzNCAwIDEzLjA4NDlWNy41MDE2Wk01Ljg0OTQ1IDYuOTYwMjdDNS4yNzk1NiA3LjYyMTQzIDQuNDQ5OTcgOC4wMDE2IDMuNTc3MDkgOC4wMDE2SDJWMTIuNTg0OUgzLjYwMTIyQzQuNDMyMDMgMTIuNTg0OSA1LjIyNTY0IDEyLjkyOTUgNS43OTI5NSAxMy41MzY0TDguNSAxNi40MzI4VjMuODg1MjJMNS44NDk0NSA2Ljk2MDI3WiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPHBhdGggZD0iTTEzLjUxNSA3LjE5MTE5QzEzLjM0MjQgNi45NzU1OSAxMy4zMzk5IDYuNjYwNTYgMTMuNTM1MiA2LjQ2NTNMMTQuMjQyMyA1Ljc1ODE5QzE0LjQzNzYgNS41NjI5MyAxNC43NTU4IDUuNTYxNzUgMTQuOTM1NiA1Ljc3MTM2QzE2Ljk5NTkgOC4xNzM2MiAxNi45OTU5IDExLjgyOCAxNC45MzU2IDE0LjIzMDNDMTQuNzU1OCAxNC40Mzk5IDE0LjQzNzYgMTQuNDM4NyAxNC4yNDIzIDE0LjI0MzVMMTMuNTM1MiAxMy41MzY0QzEzLjMzOTkgMTMuMzQxMSAxMy4zNDI0IDEzLjAyNjEgMTMuNTE1IDEyLjgxMDVDMTQuODEzIDExLjE4ODUgMTQuODEzIDguODEzMTIgMTMuNTE1IDcuMTkxMTlaIiBmaWxsPSIjMTYxODIzIiBmaWxsLW9wYWNpdHk9IjAuNiIvPgo8cGF0aCBkPSJNMTYuNzE3MiAxNi43MTgzQzE2LjUyMTkgMTYuNTIzMSAxNi41MjMxIDE2LjIwNzQgMTYuNzA3MiAxNi4wMDE3QzE5LjcyNTcgMTIuNjMgMTkuNzI1NyA3LjM3MTY4IDE2LjcwNzIgNC4wMDAwMUMxNi41MjMxIDMuNzk0MjcgMTYuNTIxOSAzLjQ3ODU4IDE2LjcxNzIgMy4yODMzMkwxNy40MjQzIDIuNTc2MjFDMTcuNjE5NSAyLjM4MDk1IDE3LjkzNyAyLjM4MDIgMTguMTIzMyAyLjU4NDA4QzIxLjkwOTkgNi43MjkyNiAyMS45MDk5IDEzLjI3MjQgMTguMTIzMyAxNy40MTc2QzE3LjkzNyAxNy42MjE1IDE3LjYxOTUgMTcuNjIwNyAxNy40MjQzIDE3LjQyNTVMMTYuNzE3MiAxNi43MTgzWiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPC9zdmc+Cg=="]')
|
617
|
-
time.sleep(0.5)
|
618
|
-
sliders = page.locator("input.scaleInput")
|
619
|
-
|
620
|
-
if sound_aud_vol == 'background':
|
621
|
-
slider1 = sliders.nth(0)
|
622
|
-
bounding_box1 = slider1.bounding_box()
|
623
|
-
if bounding_box1:
|
624
|
-
x1 = bounding_box1["x"] + (bounding_box1["width"] * 0.92)
|
625
|
-
y1 = bounding_box1["y"] + bounding_box1["height"] / 2
|
626
|
-
page.mouse.click(x1, y1)
|
627
|
-
|
628
|
-
slider2 = sliders.nth(1)
|
629
|
-
bounding_box2 = slider2.bounding_box()
|
630
|
-
if bounding_box2:
|
631
|
-
x2 = bounding_box2["x"] + (bounding_box2["width"] * 0.097)
|
632
|
-
y2 = bounding_box2["y"] + bounding_box2["height"] / 2
|
633
|
-
page.mouse.click(x2, y2)
|
634
|
-
|
635
|
-
if sound_aud_vol == 'main':
|
636
|
-
slider1 = sliders.nth(0)
|
637
|
-
bounding_box1 = slider1.bounding_box()
|
638
|
-
if bounding_box1:
|
639
|
-
x1 = bounding_box1["x"] + (bounding_box1["width"] * 0.092)
|
640
|
-
y1 = bounding_box1["y"] + bounding_box1["height"] / 2
|
641
|
-
page.mouse.click(x1, y1)
|
642
|
-
slider2 = sliders.nth(1)
|
643
|
-
bounding_box2 = slider2.bounding_box()
|
644
|
-
if bounding_box2:
|
645
|
-
x2 = bounding_box2["x"] + (bounding_box2["width"] * 0.92)
|
646
|
-
y2 = bounding_box2["y"] + bounding_box2["height"] / 2
|
647
|
-
page.mouse.click(x2, y2)
|
648
|
-
except:
|
649
|
-
sys.exit("ERROR ADJUSTING SOUND VOLUME: please try again.")
|
650
|
-
|
651
|
-
page.wait_for_selector("div.TUXButton-label:has-text('Save edit')")
|
652
|
-
page.click("div.TUXButton-label:has-text('Save edit')")
|
653
|
-
if suppressprint == False:
|
654
|
-
print("Added sound")
|
655
|
-
|
656
|
-
page.wait_for_selector('div[data-contents="true"]')
|
657
|
-
|
658
|
-
if copyrightcheck == True:
|
659
|
-
page.locator(".TUXSwitch-input").nth(0).click()
|
660
|
-
while copyrightcheck == True:
|
661
|
-
time.sleep(0.2)
|
662
|
-
if page.locator("span", has_text="No issues detected.").is_visible():
|
663
|
-
if suppressprint == False:
|
664
|
-
print("Copyright check complete")
|
665
|
-
break
|
666
|
-
if page.locator("span", has_text="Copyright issues detected.").is_visible():
|
667
|
-
sys.exit("COPYRIGHT CHECK FAILED: VIDEO SAVED AS DRAFT, COPYRIGHT AUDIO DETECTED FROM TIKTOK")
|
668
|
-
|
669
|
-
|
670
|
-
try:
|
671
|
-
if schedule == None:
|
672
|
-
page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Post")', timeout=10000)
|
673
|
-
uploaded = False
|
674
|
-
checks = 0
|
675
|
-
while uploaded == False:
|
676
|
-
if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
|
677
|
-
time.sleep(0.2)
|
678
|
-
break
|
679
|
-
time.sleep(0.2)
|
680
|
-
checks += 1
|
681
|
-
if checks > 100:
|
682
|
-
time.sleep(10)
|
683
|
-
if checks == 150:
|
684
|
-
break
|
685
|
-
else:
|
686
|
-
page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Schedule")', timeout=10000)
|
687
|
-
uploaded = False
|
688
|
-
checks = 0
|
689
|
-
while uploaded == False:
|
690
|
-
if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
|
691
|
-
time.sleep(0.2)
|
692
|
-
break
|
693
|
-
time.sleep(0.2)
|
694
|
-
checks += 1
|
695
|
-
if checks > 100:
|
696
|
-
time.sleep(10)
|
697
|
-
if checks == 150:
|
698
|
-
break
|
699
|
-
if suppressprint == False:
|
700
|
-
print("Done uploading video, NOTE: it may take a minute or two to show on TikTok")
|
701
|
-
except:
|
702
|
-
time.sleep(5)
|
703
|
-
sys.exit("ERROR UPLOADING: VIDEO HAS SAVED AS DRAFT BUT CANT UPLOAD")
|
704
|
-
time.sleep(1)
|
709
|
+
except:
|
710
|
+
time.sleep(5)
|
711
|
+
sys.exit("ERROR UPLOADING: VIDEO HAS SAVED AS DRAFT BUT CANT UPLOAD")
|
712
|
+
time.sleep(1)
|
705
713
|
|
706
|
-
|
714
|
+
page.close()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: tiktokautouploader
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.17
|
4
4
|
Summary: Upload or schedule videos to TikTok with viral TikTok sounds and hashtags.
|
5
5
|
Project-URL: Homepage, https://github.com/haziq-exe/TikTokAutoUploader
|
6
6
|
Author-email: HAZIQ <haziqmk123@gmail.com>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
tiktokautouploader/__init__.py,sha256=u7OWCK_u68ST8dfrkSF4Yw44CJOzV9NXI6ASRuoDfmE,64
|
2
|
+
tiktokautouploader/function.py,sha256=1C1X7OSyw5PQssWWXB9gQn5LJj09CkwwJqapNWMOpX0,35248
|
3
|
+
tiktokautouploader/Js_assets/login.js,sha256=SLhtPYo8ZfTRUnbR7Xqp084lSuAOqIWUxi75FlFH3vs,966
|
4
|
+
tiktokautouploader-3.17.dist-info/METADATA,sha256=72o7oAEvD2wWGBebQMF5J0KNeZ_b-k2G2memIlDocK0,5862
|
5
|
+
tiktokautouploader-3.17.dist-info/WHEEL,sha256=fl6v0VwpzfGBVsGtkAkhILUlJxROXbA3HvRL6Fe3140,105
|
6
|
+
tiktokautouploader-3.17.dist-info/licenses/LICENSE.md,sha256=hYds_VJIpnS5gC73WhuWk2IY_e9BWjuEJthQCb9ThyU,1073
|
7
|
+
tiktokautouploader-3.17.dist-info/RECORD,,
|
@@ -1,7 +0,0 @@
|
|
1
|
-
tiktokautouploader/__init__.py,sha256=u7OWCK_u68ST8dfrkSF4Yw44CJOzV9NXI6ASRuoDfmE,64
|
2
|
-
tiktokautouploader/function.py,sha256=vR2ELk1ydps0K9nhA1bxIc2Cf3d5qbvfRm3wUxkDEyk,35292
|
3
|
-
tiktokautouploader/Js_assets/login.js,sha256=SLhtPYo8ZfTRUnbR7Xqp084lSuAOqIWUxi75FlFH3vs,966
|
4
|
-
tiktokautouploader-3.14.dist-info/METADATA,sha256=9AoqNXOcgyMZyvhgx2bB06uj5uq4caZxge7JyWJbloU,5862
|
5
|
-
tiktokautouploader-3.14.dist-info/WHEEL,sha256=fl6v0VwpzfGBVsGtkAkhILUlJxROXbA3HvRL6Fe3140,105
|
6
|
-
tiktokautouploader-3.14.dist-info/licenses/LICENSE.md,sha256=hYds_VJIpnS5gC73WhuWk2IY_e9BWjuEJthQCb9ThyU,1073
|
7
|
-
tiktokautouploader-3.14.dist-info/RECORD,,
|
File without changes
|
File without changes
|