tiktokautouploader 3.17__py2.py3-none-any.whl → 3.18__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.
@@ -242,6 +242,7 @@ def upload_tiktok(video, description, accountname, hashtags=None, sound_name=Non
242
242
  ------------------------------------------------------------------------------------------------------------------------------------------------c
243
243
  video (str) -> path to video to upload
244
244
  description (str) -> description for video
245
+ accountname (str) -> account to upload on
245
246
  hashtags (str)(array) -> hashtags for video
246
247
  sound_name (str) -> name of tik tok sound to use for video
247
248
  sound_aud_vol (str) -> volume of tik tok sound, 'main', 'mix' or 'background', check documentation for more info -> https://github.com/haziq-exe/TikTokAutoUploader
@@ -471,13 +472,16 @@ def upload_tiktok(video, description, accountname, hashtags=None, sound_name=Non
471
472
  print("Description and Hashtags added")
472
473
 
473
474
  try:
474
- page.wait_for_function("document.querySelector('.info-progress-num').textContent.trim() === '100%'", timeout=12000000)
475
+ page.wait_for_selector('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Post")[aria-disabled="false"]', timeout=12000000)
475
476
  except:
476
477
  sys.exit("ERROR: TIK TOK TOOK TOO LONG TO UPLOAD YOUR FILE (>20min). Try again, if issue persists then try a lower file size or different wifi connection")
477
478
 
478
479
  time.sleep(0.2)
479
480
  if suppressprint == False:
480
481
  print("Tik tok done loading file onto servers")
482
+
483
+ if (schedule == None) and (day != None):
484
+ 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")
481
485
 
482
486
  if schedule != None:
483
487
  try:
@@ -521,194 +525,258 @@ def upload_tiktok(video, description, accountname, hashtags=None, sound_name=Non
521
525
 
522
526
  except:
523
527
  sys.exit("SCHEDULING ERROR: VIDEO SAVED AS DRAFT")
524
-
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")
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
528
 
529
+ sound_fail = False
609
530
  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
531
  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')")
532
+ page.click("div.TUXButton-label:has-text('Edit video')")
620
533
  except:
621
- sys.exit(f"ERROR: SOUND '{sound_name}' NOT FOUND")
534
+ sound_fail = True
535
+ if sound_fail == False:
536
+ page.wait_for_selector("input.search-bar-input")
537
+ page.fill(f"input.search-bar-input", f"{sound_name}")
538
+ time.sleep(0.2)
539
+ page.click("div.TUXButton-label:has-text('Search')")
540
+ try:
541
+ page.wait_for_selector('div.music-card-container')
542
+ page.click("div.music-card-container")
543
+ page.wait_for_selector("div.TUXButton-label:has-text('Use')")
544
+ page.click("div.TUXButton-label:has-text('Use')")
545
+ except:
546
+ sys.exit(f"ERROR: SOUND '{sound_name}' NOT FOUND")
547
+ try:
548
+ page.wait_for_selector('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgNy41MDE2QzAgNi42NzMxNyAwLjY3MTU3MyA2LjAwMTYgMS41IDYuMDAxNkgzLjU3NzA5QzMuODY4MDUgNi4wMDE2IDQuMTQ0NTggNS44NzQ4OCA0LjMzNDU1IDUuNjU0NDlMOC43NDI1NSAwLjU0MDUyQzkuMzQ3OCAtMC4xNjE2NjggMTAuNSAwLjI2NjM3NCAxMC41IDEuMTkzNDFWMTguOTY3MkMxMC41IDE5Ljg3NDUgOS4zODg5NCAyMC4zMTI5IDguNzY5NDIgMTkuNjVMNC4zMzE3OSAxNC45MDIxQzQuMTQyNjkgMTQuNjk5OCAzLjg3ODE2IDE0LjU4NDkgMy42MDEyMiAxNC41ODQ5SDEuNUMwLjY3MTU3MyAxNC41ODQ5IDAgMTMuOTEzNCAwIDEzLjA4NDlWNy41MDE2Wk01Ljg0OTQ1IDYuOTYwMjdDNS4yNzk1NiA3LjYyMTQzIDQuNDQ5OTcgOC4wMDE2IDMuNTc3MDkgOC4wMDE2SDJWMTIuNTg0OUgzLjYwMTIyQzQuNDMyMDMgMTIuNTg0OSA1LjIyNTY0IDEyLjkyOTUgNS43OTI5NSAxMy41MzY0TDguNSAxNi40MzI4VjMuODg1MjJMNS44NDk0NSA2Ljk2MDI3WiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPHBhdGggZD0iTTEzLjUxNSA3LjE5MTE5QzEzLjM0MjQgNi45NzU1OSAxMy4zMzk5IDYuNjYwNTYgMTMuNTM1MiA2LjQ2NTNMMTQuMjQyMyA1Ljc1ODE5QzE0LjQzNzYgNS41NjI5MyAxNC43NTU4IDUuNTYxNzUgMTQuOTM1NiA1Ljc3MTM2QzE2Ljk5NTkgOC4xNzM2MiAxNi45OTU5IDExLjgyOCAxNC45MzU2IDE0LjIzMDNDMTQuNzU1OCAxNC40Mzk5IDE0LjQzNzYgMTQuNDM4NyAxNC4yNDIzIDE0LjI0MzVMMTMuNTM1MiAxMy41MzY0QzEzLjMzOTkgMTMuMzQxMSAxMy4zNDI0IDEzLjAyNjEgMTMuNTE1IDEyLjgxMDVDMTQuODEzIDExLjE4ODUgMTQuODEzIDguODEzMTIgMTMuNTE1IDcuMTkxMTlaIiBmaWxsPSIjMTYxODIzIiBmaWxsLW9wYWNpdHk9IjAuNiIvPgo8cGF0aCBkPSJNMTYuNzE3MiAxNi43MTgzQzE2LjUyMTkgMTYuNTIzMSAxNi41MjMxIDE2LjIwNzQgMTYuNzA3MiAxNi4wMDE3QzE5LjcyNTcgMTIuNjMgMTkuNzI1NyA3LjM3MTY4IDE2LjcwNzIgNC4wMDAwMUMxNi41MjMxIDMuNzk0MjcgMTYuNTIxOSAzLjQ3ODU4IDE2LjcxNzIgMy4yODMzMkwxNy40MjQzIDIuNTc2MjFDMTcuNjE5NSAyLjM4MDk1IDE3LjkzNyAyLjM4MDIgMTguMTIzMyAyLjU4NDA4QzIxLjkwOTkgNi43MjkyNiAyMS45MDk5IDEzLjI3MjQgMTguMTIzMyAxNy40MTc2QzE3LjkzNyAxNy42MjE1IDE3LjYxOTUgMTcuNjIwNyAxNy40MjQzIDE3LjQyNTVMMTYuNzE3MiAxNi43MTgzWiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPC9zdmc+Cg=="]')
549
+ page.click('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgNy41MDE2QzAgNi42NzMxNyAwLjY3MTU3MyA2LjAwMTYgMS41IDYuMDAxNkgzLjU3NzA5QzMuODY4MDUgNi4wMDE2IDQuMTQ0NTggNS44NzQ4OCA0LjMzNDU1IDUuNjU0NDlMOC43NDI1NSAwLjU0MDUyQzkuMzQ3OCAtMC4xNjE2NjggMTAuNSAwLjI2NjM3NCAxMC41IDEuMTkzNDFWMTguOTY3MkMxMC41IDE5Ljg3NDUgOS4zODg5NCAyMC4zMTI5IDguNzY5NDIgMTkuNjVMNC4zMzE3OSAxNC45MDIxQzQuMTQyNjkgMTQuNjk5OCAzLjg3ODE2IDE0LjU4NDkgMy42MDEyMiAxNC41ODQ5SDEuNUMwLjY3MTU3MyAxNC41ODQ5IDAgMTMuOTEzNCAwIDEzLjA4NDlWNy41MDE2Wk01Ljg0OTQ1IDYuOTYwMjdDNS4yNzk1NiA3LjYyMTQzIDQuNDQ5OTcgOC4wMDE2IDMuNTc3MDkgOC4wMDE2SDJWMTIuNTg0OUgzLjYwMTIyQzQuNDMyMDMgMTIuNTg0OSA1LjIyNTY0IDEyLjkyOTUgNS43OTI5NSAxMy41MzY0TDguNSAxNi40MzI4VjMuODg1MjJMNS44NDk0NSA2Ljk2MDI3WiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPHBhdGggZD0iTTEzLjUxNSA3LjE5MTE5QzEzLjM0MjQgNi45NzU1OSAxMy4zMzk5IDYuNjYwNTYgMTMuNTM1MiA2LjQ2NTNMMTQuMjQyMyA1Ljc1ODE5QzE0LjQzNzYgNS41NjI5MyAxNC43NTU4IDUuNTYxNzUgMTQuOTM1NiA1Ljc3MTM2QzE2Ljk5NTkgOC4xNzM2MiAxNi45OTU5IDExLjgyOCAxNC45MzU2IDE0LjIzMDNDMTQuNzU1OCAxNC40Mzk5IDE0LjQzNzYgMTQuNDM4NyAxNC4yNDIzIDE0LjI0MzVMMTMuNTM1MiAxMy41MzY0QzEzLjMzOTkgMTMuMzQxMSAxMy4zNDI0IDEzLjAyNjEgMTMuNTE1IDEyLjgxMDVDMTQuODEzIDExLjE4ODUgMTQuODEzIDguODEzMTIgMTMuNTE1IDcuMTkxMTlaIiBmaWxsPSIjMTYxODIzIiBmaWxsLW9wYWNpdHk9IjAuNiIvPgo8cGF0aCBkPSJNMTYuNzE3MiAxNi43MTgzQzE2LjUyMTkgMTYuNTIzMSAxNi41MjMxIDE2LjIwNzQgMTYuNzA3MiAxNi4wMDE3QzE5LjcyNTcgMTIuNjMgMTkuNzI1NyA3LjM3MTY4IDE2LjcwNzIgNC4wMDAwMUMxNi41MjMxIDMuNzk0MjcgMTYuNTIxOSAzLjQ3ODU4IDE2LjcxNzIgMy4yODMzMkwxNy40MjQzIDIuNTc2MjFDMTcuNjE5NSAyLjM4MDk1IDE3LjkzNyAyLjM4MDIgMTguMTIzMyAyLjU4NDA4QzIxLjkwOTkgNi43MjkyNiAyMS45MDk5IDEzLjI3MjQgMTguMTIzMyAxNy40MTc2QzE3LjkzNyAxNy42MjE1IDE3LjYxOTUgMTcuNjIwNyAxNy40MjQzIDE3LjQyNTVMMTYuNzE3MiAxNi43MTgzWiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPC9zdmc+Cg=="]')
550
+ time.sleep(0.5)
551
+ sliders = page.locator("input.scaleInput")
552
+
553
+ if sound_aud_vol == 'background':
554
+ slider1 = sliders.nth(0)
555
+ bounding_box1 = slider1.bounding_box()
556
+ if bounding_box1:
557
+ x1 = bounding_box1["x"] + (bounding_box1["width"] * 0.92)
558
+ y1 = bounding_box1["y"] + bounding_box1["height"] / 2
559
+ page.mouse.click(x1, y1)
560
+
561
+ slider2 = sliders.nth(1)
562
+ bounding_box2 = slider2.bounding_box()
563
+ if bounding_box2:
564
+ x2 = bounding_box2["x"] + (bounding_box2["width"] * 0.097)
565
+ y2 = bounding_box2["y"] + bounding_box2["height"] / 2
566
+ page.mouse.click(x2, y2)
567
+
568
+ if sound_aud_vol == 'main':
569
+ slider1 = sliders.nth(0)
570
+ bounding_box1 = slider1.bounding_box()
571
+ if bounding_box1:
572
+ x1 = bounding_box1["x"] + (bounding_box1["width"] * 0.092)
573
+ y1 = bounding_box1["y"] + bounding_box1["height"] / 2
574
+ page.mouse.click(x1, y1)
575
+ slider2 = sliders.nth(1)
576
+ bounding_box2 = slider2.bounding_box()
577
+ if bounding_box2:
578
+ x2 = bounding_box2["x"] + (bounding_box2["width"] * 0.92)
579
+ y2 = bounding_box2["y"] + bounding_box2["height"] / 2
580
+ page.mouse.click(x2, y2)
581
+ except:
582
+ sys.exit("ERROR ADJUSTING SOUND VOLUME: please try again.")
583
+
584
+ page.wait_for_selector("div.TUXButton-label:has-text('Save edit')")
585
+ page.click("div.TUXButton-label:has-text('Save edit')")
586
+ if suppressprint == False:
587
+ print("Added sound")
588
+
589
+ if sound_fail == False:
590
+ page.wait_for_selector('div[data-contents="true"]')
591
+
592
+ if copyrightcheck == True:
593
+ page.click('div.TUXSwitch:has(label.TUXSwitch-label:has-text("Run a copyright check")) input.TUXSwitch-input')
594
+ while copyrightcheck == True:
595
+ time.sleep(0.2)
596
+ if page.locator("span", has_text="No issues detected.").is_visible():
597
+ if suppressprint == False:
598
+ print("Copyright check complete")
599
+ break
600
+ if page.locator("span", has_text="Copyright issues detected.").is_visible():
601
+ sys.exit("COPYRIGHT CHECK FAILED: VIDEO SAVED AS DRAFT, COPYRIGHT AUDIO DETECTED FROM TIKTOK")
602
+
603
+
622
604
  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)
605
+ if schedule == None:
606
+ page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Post")', timeout=10000)
607
+ uploaded = False
608
+ checks = 0
609
+ while uploaded == False:
610
+ if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
611
+ time.sleep(0.2)
612
+ break
613
+ time.sleep(0.2)
614
+ checks += 1
615
+ if checks > 100:
616
+ time.sleep(10)
617
+ if checks == 150:
618
+ break
619
+ else:
620
+ page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Schedule")', timeout=10000)
621
+ uploaded = False
622
+ checks = 0
623
+ while uploaded == False:
624
+ if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
625
+ time.sleep(0.2)
626
+ break
627
+ time.sleep(0.2)
628
+ checks += 1
629
+ if checks > 100:
630
+ time.sleep(10)
631
+ if checks == 150:
632
+ break
633
+ if suppressprint == False:
634
+ print("Done uploading video, NOTE: it may take a minute or two to show on TikTok")
656
635
  except:
657
- sys.exit("ERROR ADJUSTING SOUND VOLUME: please try again.")
636
+ time.sleep(5)
637
+ sys.exit("ERROR UPLOADING: VIDEO HAS SAVED AS DRAFT BUT CANT UPLOAD")
638
+ time.sleep(1)
658
639
 
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")
640
+ page.close()
641
+ else:
642
+ try:
643
+ page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--secondary:has-text("Save draft")', timeout=10000)
644
+ except:
645
+ sys.exit("SAVE AS DRAFT BUTTON NOT FOUND; Please try account that has ability to save as draft")
663
646
 
664
- page.wait_for_selector('div[data-contents="true"]')
647
+ time.sleep(0.5)
648
+ page.close()
649
+
650
+ browser = p.chromium.launch(headless=True)
665
651
 
666
- if copyrightcheck == True:
667
- page.locator(".TUXSwitch-input").nth(0).click()
668
- while copyrightcheck == True:
652
+ context = browser.new_context()
653
+ context.add_cookies(cookies)
654
+ page = context.new_page()
655
+ url2 = 'https://www.tiktok.com/tiktokstudio/content?tab=draft'
656
+
657
+ while retries < 2:
658
+ try:
659
+ page.goto(url2, timeout=30000)
660
+ except:
661
+ retries +=1
662
+ time.sleep(5)
663
+ if retries == 2:
664
+ sys.exit("ERROR: TIK TOK PAGE FAILED TO LOAD, try again.")
665
+ else:
666
+ break
667
+
668
+ try:
669
+ 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']")
670
+ 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']")
671
+ page.wait_for_selector('div[data-contents="true"]')
669
672
  time.sleep(0.2)
670
- if page.locator("span", has_text="No issues detected.").is_visible():
673
+ except:
674
+ sys.exit("ERROR ADDING SOUND: Video saved as draft")
675
+
676
+ if sound_name != None:
677
+ page.click("div.TUXButton-label:has-text('Edit video')")
678
+ page.wait_for_selector("input.search-bar-input")
679
+ page.fill(f"input.search-bar-input", f"{sound_name}")
680
+ time.sleep(0.2)
681
+ page.click("div.TUXButton-label:has-text('Search')")
682
+ try:
683
+ page.wait_for_selector('div.music-card-container')
684
+ page.click("div.music-card-container")
685
+ page.wait_for_selector("div.TUXButton-label:has-text('Use')")
686
+ page.click("div.TUXButton-label:has-text('Use')")
687
+ except:
688
+ sys.exit(f"ERROR: SOUND '{sound_name}' NOT FOUND")
689
+ try:
690
+ page.wait_for_selector('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgNy41MDE2QzAgNi42NzMxNyAwLjY3MTU3MyA2LjAwMTYgMS41IDYuMDAxNkgzLjU3NzA5QzMuODY4MDUgNi4wMDE2IDQuMTQ0NTggNS44NzQ4OCA0LjMzNDU1IDUuNjU0NDlMOC43NDI1NSAwLjU0MDUyQzkuMzQ3OCAtMC4xNjE2NjggMTAuNSAwLjI2NjM3NCAxMC41IDEuMTkzNDFWMTguOTY3MkMxMC41IDE5Ljg3NDUgOS4zODg5NCAyMC4zMTI5IDguNzY5NDIgMTkuNjVMNC4zMzE3OSAxNC45MDIxQzQuMTQyNjkgMTQuNjk5OCAzLjg3ODE2IDE0LjU4NDkgMy42MDEyMiAxNC41ODQ5SDEuNUMwLjY3MTU3MyAxNC41ODQ5IDAgMTMuOTEzNCAwIDEzLjA4NDlWNy41MDE2Wk01Ljg0OTQ1IDYuOTYwMjdDNS4yNzk1NiA3LjYyMTQzIDQuNDQ5OTcgOC4wMDE2IDMuNTc3MDkgOC4wMDE2SDJWMTIuNTg0OUgzLjYwMTIyQzQuNDMyMDMgMTIuNTg0OSA1LjIyNTY0IDEyLjkyOTUgNS43OTI5NSAxMy41MzY0TDguNSAxNi40MzI4VjMuODg1MjJMNS44NDk0NSA2Ljk2MDI3WiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPHBhdGggZD0iTTEzLjUxNSA3LjE5MTE5QzEzLjM0MjQgNi45NzU1OSAxMy4zMzk5IDYuNjYwNTYgMTMuNTM1MiA2LjQ2NTNMMTQuMjQyMyA1Ljc1ODE5QzE0LjQzNzYgNS41NjI5MyAxNC43NTU4IDUuNTYxNzUgMTQuOTM1NiA1Ljc3MTM2QzE2Ljk5NTkgOC4xNzM2MiAxNi45OTU5IDExLjgyOCAxNC45MzU2IDE0LjIzMDNDMTQuNzU1OCAxNC40Mzk5IDE0LjQzNzYgMTQuNDM4NyAxNC4yNDIzIDE0LjI0MzVMMTMuNTM1MiAxMy41MzY0QzEzLjMzOTkgMTMuMzQxMSAxMy4zNDI0IDEzLjAyNjEgMTMuNTE1IDEyLjgxMDVDMTQuODEzIDExLjE4ODUgMTQuODEzIDguODEzMTIgMTMuNTE1IDcuMTkxMTlaIiBmaWxsPSIjMTYxODIzIiBmaWxsLW9wYWNpdHk9IjAuNiIvPgo8cGF0aCBkPSJNMTYuNzE3MiAxNi43MTgzQzE2LjUyMTkgMTYuNTIzMSAxNi41MjMxIDE2LjIwNzQgMTYuNzA3MiAxNi4wMDE3QzE5LjcyNTcgMTIuNjMgMTkuNzI1NyA3LjM3MTY4IDE2LjcwNzIgNC4wMDAwMUMxNi41MjMxIDMuNzk0MjcgMTYuNTIxOSAzLjQ3ODU4IDE2LjcxNzIgMy4yODMzMkwxNy40MjQzIDIuNTc2MjFDMTcuNjE5NSAyLjM4MDk1IDE3LjkzNyAyLjM4MDIgMTguMTIzMyAyLjU4NDA4QzIxLjkwOTkgNi43MjkyNiAyMS45MDk5IDEzLjI3MjQgMTguMTIzMyAxNy40MTc2QzE3LjkzNyAxNy42MjE1IDE3LjYxOTUgMTcuNjIwNyAxNy40MjQzIDE3LjQyNTVMMTYuNzE3MiAxNi43MTgzWiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPC9zdmc+Cg=="]')
691
+ page.click('img[src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMSAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAgNy41MDE2QzAgNi42NzMxNyAwLjY3MTU3MyA2LjAwMTYgMS41IDYuMDAxNkgzLjU3NzA5QzMuODY4MDUgNi4wMDE2IDQuMTQ0NTggNS44NzQ4OCA0LjMzNDU1IDUuNjU0NDlMOC43NDI1NSAwLjU0MDUyQzkuMzQ3OCAtMC4xNjE2NjggMTAuNSAwLjI2NjM3NCAxMC41IDEuMTkzNDFWMTguOTY3MkMxMC41IDE5Ljg3NDUgOS4zODg5NCAyMC4zMTI5IDguNzY5NDIgMTkuNjVMNC4zMzE3OSAxNC45MDIxQzQuMTQyNjkgMTQuNjk5OCAzLjg3ODE2IDE0LjU4NDkgMy42MDEyMiAxNC41ODQ5SDEuNUMwLjY3MTU3MyAxNC41ODQ5IDAgMTMuOTEzNCAwIDEzLjA4NDlWNy41MDE2Wk01Ljg0OTQ1IDYuOTYwMjdDNS4yNzk1NiA3LjYyMTQzIDQuNDQ5OTcgOC4wMDE2IDMuNTc3MDkgOC4wMDE2SDJWMTIuNTg0OUgzLjYwMTIyQzQuNDMyMDMgMTIuNTg0OSA1LjIyNTY0IDEyLjkyOTUgNS43OTI5NSAxMy41MzY0TDguNSAxNi40MzI4VjMuODg1MjJMNS44NDk0NSA2Ljk2MDI3WiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPHBhdGggZD0iTTEzLjUxNSA3LjE5MTE5QzEzLjM0MjQgNi45NzU1OSAxMy4zMzk5IDYuNjYwNTYgMTMuNTM1MiA2LjQ2NTNMMTQuMjQyMyA1Ljc1ODE5QzE0LjQzNzYgNS41NjI5MyAxNC43NTU4IDUuNTYxNzUgMTQuOTM1NiA1Ljc3MTM2QzE2Ljk5NTkgOC4xNzM2MiAxNi45OTU5IDExLjgyOCAxNC45MzU2IDE0LjIzMDNDMTQuNzU1OCAxNC40Mzk5IDE0LjQzNzYgMTQuNDM4NyAxNC4yNDIzIDE0LjI0MzVMMTMuNTM1MiAxMy41MzY0QzEzLjMzOTkgMTMuMzQxMSAxMy4zNDI0IDEzLjAyNjEgMTMuNTE1IDEyLjgxMDVDMTQuODEzIDExLjE4ODUgMTQuODEzIDguODEzMTIgMTMuNTE1IDcuMTkxMTlaIiBmaWxsPSIjMTYxODIzIiBmaWxsLW9wYWNpdHk9IjAuNiIvPgo8cGF0aCBkPSJNMTYuNzE3MiAxNi43MTgzQzE2LjUyMTkgMTYuNTIzMSAxNi41MjMxIDE2LjIwNzQgMTYuNzA3MiAxNi4wMDE3QzE5LjcyNTcgMTIuNjMgMTkuNzI1NyA3LjM3MTY4IDE2LjcwNzIgNC4wMDAwMUMxNi41MjMxIDMuNzk0MjcgMTYuNTIxOSAzLjQ3ODU4IDE2LjcxNzIgMy4yODMzMkwxNy40MjQzIDIuNTc2MjFDMTcuNjE5NSAyLjM4MDk1IDE3LjkzNyAyLjM4MDIgMTguMTIzMyAyLjU4NDA4QzIxLjkwOTkgNi43MjkyNiAyMS45MDk5IDEzLjI3MjQgMTguMTIzMyAxNy40MTc2QzE3LjkzNyAxNy42MjE1IDE3LjYxOTUgMTcuNjIwNyAxNy40MjQzIDE3LjQyNTVMMTYuNzE3MiAxNi43MTgzWiIgZmlsbD0iIzE2MTgyMyIgZmlsbC1vcGFjaXR5PSIwLjYiLz4KPC9zdmc+Cg=="]')
692
+ time.sleep(0.5)
693
+ sliders = page.locator("input.scaleInput")
694
+
695
+ if sound_aud_vol == 'background':
696
+ slider1 = sliders.nth(0)
697
+ bounding_box1 = slider1.bounding_box()
698
+ if bounding_box1:
699
+ x1 = bounding_box1["x"] + (bounding_box1["width"] * 0.92)
700
+ y1 = bounding_box1["y"] + bounding_box1["height"] / 2
701
+ page.mouse.click(x1, y1)
702
+
703
+ slider2 = sliders.nth(1)
704
+ bounding_box2 = slider2.bounding_box()
705
+ if bounding_box2:
706
+ x2 = bounding_box2["x"] + (bounding_box2["width"] * 0.097)
707
+ y2 = bounding_box2["y"] + bounding_box2["height"] / 2
708
+ page.mouse.click(x2, y2)
709
+
710
+ if sound_aud_vol == 'main':
711
+ slider1 = sliders.nth(0)
712
+ bounding_box1 = slider1.bounding_box()
713
+ if bounding_box1:
714
+ x1 = bounding_box1["x"] + (bounding_box1["width"] * 0.092)
715
+ y1 = bounding_box1["y"] + bounding_box1["height"] / 2
716
+ page.mouse.click(x1, y1)
717
+ slider2 = sliders.nth(1)
718
+ bounding_box2 = slider2.bounding_box()
719
+ if bounding_box2:
720
+ x2 = bounding_box2["x"] + (bounding_box2["width"] * 0.92)
721
+ y2 = bounding_box2["y"] + bounding_box2["height"] / 2
722
+ page.mouse.click(x2, y2)
723
+ except:
724
+ sys.exit("ERROR ADJUSTING SOUND VOLUME: please try again.")
725
+
726
+ page.wait_for_selector("div.TUXButton-label:has-text('Save edit')")
727
+ page.click("div.TUXButton-label:has-text('Save edit')")
671
728
  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")
729
+ print("Added sound")
676
730
 
677
731
 
678
- try:
679
- if schedule == None:
680
- page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Post")', timeout=10000)
681
- uploaded = False
682
- checks = 0
683
- while uploaded == False:
684
- if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
685
- time.sleep(0.2)
686
- break
732
+ page.wait_for_selector('div[data-contents="true"]')
733
+
734
+ if copyrightcheck == True:
735
+ page.click('div.TUXSwitch:has(label.TUXSwitch-label:has-text("Run a copyright check")) input.TUXSwitch-input')
736
+ while copyrightcheck == True:
687
737
  time.sleep(0.2)
688
- checks += 1
689
- if checks > 100:
690
- time.sleep(10)
691
- if checks == 150:
738
+ if page.locator("span", has_text="No issues detected.").is_visible():
739
+ if suppressprint == False:
740
+ print("Copyright check complete")
692
741
  break
693
- else:
694
- page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Schedule")', timeout=10000)
695
- uploaded = False
696
- checks = 0
697
- while uploaded == False:
698
- if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
742
+ if page.locator("span", has_text="Copyright issues detected.").is_visible():
743
+ sys.exit("COPYRIGHT CHECK FAILED: VIDEO SAVED AS DRAFT, COPYRIGHT AUDIO DETECTED FROM TIKTOK")
744
+
745
+
746
+ try:
747
+ if schedule == None:
748
+ page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Post")', timeout=10000)
749
+ uploaded = False
750
+ checks = 0
751
+ while uploaded == False:
752
+ if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
753
+ time.sleep(0.2)
754
+ break
699
755
  time.sleep(0.2)
700
- break
701
- time.sleep(0.2)
702
- checks += 1
703
- if checks > 100:
704
- time.sleep(10)
705
- if checks == 150:
706
- break
707
- if suppressprint == False:
708
- print("Done uploading video, NOTE: it may take a minute or two to show on TikTok")
709
- except:
710
- time.sleep(5)
711
- sys.exit("ERROR UPLOADING: VIDEO HAS SAVED AS DRAFT BUT CANT UPLOAD")
712
- time.sleep(1)
756
+ checks += 1
757
+ if checks > 100:
758
+ time.sleep(10)
759
+ if checks == 150:
760
+ break
761
+ else:
762
+ page.click('button.TUXButton.TUXButton--default.TUXButton--large.TUXButton--primary:has-text("Schedule")', timeout=10000)
763
+ uploaded = False
764
+ checks = 0
765
+ while uploaded == False:
766
+ if page.locator(':has-text("Leaving the page does not interrupt")').nth(0).is_visible():
767
+ time.sleep(0.2)
768
+ break
769
+ time.sleep(0.2)
770
+ checks += 1
771
+ if checks > 100:
772
+ time.sleep(10)
773
+ if checks == 150:
774
+ break
775
+ if suppressprint == False:
776
+ print("Done uploading video, NOTE: it may take a minute or two to show on TikTok")
777
+ except:
778
+ time.sleep(5)
779
+ sys.exit("ERROR UPLOADING: VIDEO HAS SAVED AS DRAFT BUT CANT UPLOAD")
780
+ time.sleep(1)
713
781
 
714
- page.close()
782
+ page.close()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: tiktokautouploader
3
- Version: 3.17
3
+ Version: 3.18
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>
@@ -29,9 +29,8 @@ Description-Content-Type: text/markdown
29
29
 
30
30
  [![PyPI version](https://img.shields.io/pypi/v/tiktokautouploader.svg)](https://pypi.org/project/tiktokautouploader/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
31
31
 
32
-
33
32
  <p align="center">
34
- <img src="READMEimage/READMEvid.gif" alt="" width="900"/>
33
+ <img src="READMEimage/READMEGIF.gif" alt="" width="900"/>
35
34
  </p>
36
35
 
37
36
  ## 🚀 Features
@@ -44,6 +43,8 @@ Description-Content-Type: text/markdown
44
43
  - **⏰ Cutdown on upload time:** Upload to TikTok with way less hassle and much more speed using our library.
45
44
  - **📝 Upload to different accounts:** Stay organized and on top of multiple different accounts with our multi-account functionality.
46
45
 
46
+ ⭐️ If you like this project please feel free to star it, Thank you.
47
+
47
48
  ## 📦 Installation
48
49
 
49
50
  1. **Python Installation:** Install the package using `pip`:
@@ -143,4 +144,10 @@ Created by **Haziq**. Feel free to reach out at [haziqmk123@gmail.com](mailto:ha
143
144
  ## 📄 License
144
145
 
145
146
  This project is licensed under the MIT License. See the [LICENSE](LICENSE.md) file for details.
146
- ```
147
+
148
+ ## 📮 Related Projects
149
+
150
+ If you liked this project please check out my use case showcase project that generates TikToks and uploads them using 'tiktokautouploader'
151
+
152
+ [TikTokGenerator](https://github.com/haziq-exe/TikTokGenerator)
153
+
@@ -0,0 +1,7 @@
1
+ tiktokautouploader/__init__.py,sha256=u7OWCK_u68ST8dfrkSF4Yw44CJOzV9NXI6ASRuoDfmE,64
2
+ tiktokautouploader/function.py,sha256=nSkkKC2BgnpYKGPiQmYki_J7lbSjnRtXH9nqCpAeGeY,43146
3
+ tiktokautouploader/Js_assets/login.js,sha256=SLhtPYo8ZfTRUnbR7Xqp084lSuAOqIWUxi75FlFH3vs,966
4
+ tiktokautouploader-3.18.dist-info/METADATA,sha256=ufyQiEuanGdI58GfxxryWDXaF-W0JYuiMMI6_Lx3Ack,6162
5
+ tiktokautouploader-3.18.dist-info/WHEEL,sha256=fl6v0VwpzfGBVsGtkAkhILUlJxROXbA3HvRL6Fe3140,105
6
+ tiktokautouploader-3.18.dist-info/licenses/LICENSE.md,sha256=hYds_VJIpnS5gC73WhuWk2IY_e9BWjuEJthQCb9ThyU,1073
7
+ tiktokautouploader-3.18.dist-info/RECORD,,
@@ -1,7 +0,0 @@
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,,