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.
@@ -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
- model = inference.get_model("captcha-2-6ehbe/2")
150
- results = model.infer(image=image_path)
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[0].predictions:
155
- class_names.append(obj.class_name)
156
+ for obj in results['predictions']:
157
+ class_names.append(obj['class'])
156
158
  bounding_boxes.append({
157
- "x": obj.x,
158
- "y": obj.y,
159
- "width": obj.width,
160
- "height": obj.height
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
- model = inference.get_model("tk-3nwi9/2")
176
- results = model.infer(image=image_path)
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[0].predictions:
181
- class_names.append(obj.class_name)
189
+ for obj in results['predictions']:
190
+ class_names.append(obj['class'])
182
191
  bounding_boxes.append({
183
- "x": obj.x,
184
- "y": obj.y,
185
- "width": obj.width,
186
- "height": obj.height
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, classes in enumerate(class_names):
193
- if classes in already_written:
194
- class_to_click.append(classes)
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(classes)
205
+ index = already_written.index(detected_class)
197
206
  bounding_box.append(bounding_boxes[index])
198
207
 
199
- already_written.append(classes)
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
- 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")
519
-
520
- if(sound_name == None):
521
- if copyrightcheck == True:
522
- page.locator(".TUXSwitch-input").nth(0).click()
523
- while copyrightcheck == True:
524
- time.sleep(0.2)
525
- if page.locator("span", has_text="No issues detected.").is_visible():
526
- if suppressprint == False:
527
- print("Copyright check complete")
528
- break
529
- if page.locator("span", has_text="Copyright issues detected.").is_visible():
530
- sys.exit("COPYRIGHT CHECK FAILED: COPYRIGHT AUDIO DETECTED FROM TIKTOK")
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
- page.close()
564
-
565
- else:
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
- page.close()
714
+ page.close()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: tiktokautouploader
3
- Version: 3.14
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,,