You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
359 lines
13 KiB
Plaintext
359 lines
13 KiB
Plaintext
DailyMotionUpload:
|
|
;------------------------------------------------
|
|
|
|
CurrentSite := "DailyMotion"
|
|
SaveOrPostProgress(Message:="Starting Upload",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
IniRead, DailyMotionParnerUploadPage, %SettingsIniFilepath%, General, DailyMotionPostPageURL, %A_Space%
|
|
if(DailyMotionParnerUploadPage = ""){
|
|
Message = Please add your DailyMotion Upload URL to settings.ini file under:`n`n[General]`nDailyMotionPostPageURL=https://www.dailymotion.com/partner/[YOURIDNUMBER]/media/video/upload
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
Return
|
|
}
|
|
|
|
Status := NavigateFromBaseURLTo(DailyMotionParnerUploadPage,"Partner HQ - Dailymotion")
|
|
if(Status)
|
|
Return
|
|
|
|
Message = Waiting for Page to Finish Fully Loading
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
|
|
try driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
|
sleep, 1500
|
|
|
|
Message = Checking Log In Status
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
LoggedOutStatus := CheckURLForSubstring("/sign-in")
|
|
if(LoggedOutStatus){
|
|
|
|
if(AutoLogin){
|
|
Message = Trying to Log Back in Automatically
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|
|
|
; have to click into username and password field for page to register that there's input
|
|
; clicking with JS doesn't make it register, but with xpath selenium it does
|
|
Xpath = //input[@placeholder='Email address']
|
|
try driver.FindElementByXPath(Xpath).click()
|
|
|
|
Xpath = //input[@placeholder='Enter password']
|
|
try driver.FindElementByXPath(Xpath).click()
|
|
|
|
js = document.querySelector("button[type='submit']").click();
|
|
try driver.executeScript(js)
|
|
|
|
try driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
|
sleep, 1000
|
|
|
|
; Do a double check to make sure that login worked
|
|
Message = Checking Login Status
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
LoggedOutStatus := CheckURLForSubstring("/sign-in")
|
|
if(LoggedOutStatus){
|
|
Message = Failed to log back in. Please Log Back In Manually
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
SaveDriverURLOFErrorPage()
|
|
Return
|
|
}
|
|
|
|
}
|
|
else, { ; notify user and return
|
|
Message = Login Expired. Please Log Back in
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
SaveDriverURLOFErrorPage()
|
|
Return
|
|
}
|
|
|
|
Message = Waiting 5 seconds for page to fully load
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|
sleep, 5000
|
|
}
|
|
|
|
|
|
status := CheckForAlerts()
|
|
if(Status){
|
|
Message = Waiting for page to fully load
|
|
try, driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
|
sleep, 2000
|
|
}
|
|
|
|
|
|
Message = Uploading Video
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
|
|
|
|
Xpath = //input[@type='file']
|
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=1,SleepLength:=2000,StringTextContent:=VideoFilepath)
|
|
if(Status){
|
|
|
|
Message = Failed to Upload Video. Please Check Login Status
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
SaveDriverURLOFErrorPage()
|
|
Return
|
|
|
|
}
|
|
sleep, 2000
|
|
|
|
|
|
Message = Uploading Thumbnail
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Xpath = //input[@type='file']
|
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=VideoThumbFilepath)
|
|
if(Status){
|
|
Message = Failed to Upload Thumbnail: Check Login Status
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
}
|
|
|
|
|
|
Message = Inputting Title
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|
|
|
loop, 5 { ; sometimes the pre-inserted title doesn't get cleaned out when inputting title
|
|
|
|
if(A_index = 5){
|
|
Message = Failed to input title after 5 attempts.
|
|
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
; Return
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
SaveDriverURLOFErrorPage()
|
|
Return
|
|
}
|
|
|
|
Xpath = (//input[@placeholder='Enter text'])[1]
|
|
try, driver.FindElementByXPath(Xpath).click()
|
|
|
|
js = document.querySelector("input[placeholder='Enter text']").value = "%JSVideoTitle%";
|
|
try driver.executeScript(js)
|
|
|
|
Xpath = (//input[@placeholder='Enter text'])[1]
|
|
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.SPACE)
|
|
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.BackSpace)
|
|
|
|
; get text in title box and see if it matches video title
|
|
js = return document.querySelector("input[placeholder='Enter text']").value;
|
|
try CurrentTitle := driver.executeScript(js)
|
|
; Msgbox % "CurrentTitle: " CurrentTitle
|
|
|
|
if(CurrentTitle != VideoTitle){
|
|
Message = Failed to input title on attempt %A_index%
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
sleep, 1000
|
|
}
|
|
else,
|
|
Break
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Message = Inputting Video Description
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
|
|
if(strLen(VideoDescription) > 2900){
|
|
DailyMotionDescription := SubStr(VideoDescription, 1, 2900) . "..."
|
|
}
|
|
else,
|
|
DailyMotionDescription := VideoDescription
|
|
|
|
|
|
DailyMotionJSDescription := FormatTextToJSText(DailyMotionDescription)
|
|
|
|
Message := "DailyMotionJSDescription String Length: " . StrLen(DailyMotionJSDescription)
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
|
|
Message = Inputting Video Description
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|
Loop, 5 { ; make a couple attempts to input description
|
|
if(A_index = 5){
|
|
Message = Failed to input Description after %A_index% attempts.
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
SaveDriverURLOFErrorPage()
|
|
Return
|
|
}
|
|
|
|
|
|
; click into element
|
|
Xpath = //textarea[@placeholder='Enter a description']
|
|
try driver.FindElementByXPath(Xpath).click()
|
|
|
|
; send a space and then backspace so element registers the input
|
|
Xpath = //textarea[@placeholder='Enter a description']
|
|
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.SPACE)
|
|
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.BackSpace)
|
|
|
|
|
|
; inut description with javascript
|
|
js = document.querySelector("textarea[placeholder='Enter a description']").value = "%JSVideoDescription%";
|
|
try driver.executeScript(js)
|
|
|
|
; send a space and then backspace so element registers the input
|
|
Xpath = //textarea[@placeholder='Enter a description']
|
|
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.SPACE)
|
|
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.BackSpace)
|
|
|
|
sleep, 1000
|
|
|
|
js = return document.querySelector("textarea[placeholder='Enter a description']").textContent;
|
|
try, InputDescription := driver.executeScript(js)
|
|
|
|
message = InputDescription: %InputDescription%
|
|
DevModeMsgBox(InputDescription)
|
|
|
|
; if input description is less than 15 chars, try again
|
|
if(StrLen(InputDescription) < 15)
|
|
Continue
|
|
else,
|
|
Break
|
|
|
|
}
|
|
|
|
|
|
|
|
; Make a couple attempts to Click on Drop down menu and select the "Education" Category
|
|
Message = Selecting Education Category
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Loop, 3 {
|
|
if(A_index = 3){
|
|
Message = Failed to Select Education Category after %A_index% attempts
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
SaveDriverURLOFErrorPage()
|
|
Return
|
|
}
|
|
|
|
Xpath = //div[@name='channel']
|
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
|
|
|
js = document.querySelector("div[title='Education'] div[class='ant-select-item-option-content']").click()
|
|
try status := driver.executeScript(js)
|
|
|
|
js = return document.querySelector("div[name='channel']").textContent;
|
|
try, status := driver.executeScript(js)
|
|
|
|
if(instr(status, "Education"))
|
|
break
|
|
|
|
}
|
|
|
|
|
|
Message = Inputting Tags
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
; Append comma to end of tags
|
|
; DailyMotion page automtically splits the tags into individual tags when they're seperated by commas
|
|
|
|
; Iterate from one end of the array to another:
|
|
Loop % ArrayOfVideoTags.Length(){
|
|
; ArrayItem := ARRAY[A_Index]
|
|
; MsgBox %
|
|
DailyMotionVideoTags .= ArrayOfVideoTags[A_Index] . ","
|
|
}
|
|
|
|
|
|
; DailyMotionVideoTags := VideoTags . ","
|
|
|
|
Message = Video Tags: %DailyMotionVideoTags%
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Xpath = (//input[@id='tags'])[1]
|
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=DailyMotionVideoTags)
|
|
|
|
; double check the input
|
|
js = return document.querySelector("div[name='tags']").textContent;
|
|
try, inputTags := driver.executeScript(js)
|
|
Message = Tags that got input: %inputTags% (Will be doubled b/c of js)
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
|
|
Message = Clicking Next Button to Move on to next input screen
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Xpath = //button[@type='button']//span[contains(text(),'Next')]
|
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
|
|
|
|
|
Message = Selecting "Not For Kids" checkbox
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
try driver.findElementsByName("is_created_for_kids").item[2].click()
|
|
catch e {
|
|
sleep, 2000
|
|
try driver.findElementsByName("is_created_for_kids").item[2].click()
|
|
catch e {
|
|
Message = Failed to Click on the "Not Made For Kids" checkbox. Please switch to tab and finalize upload.
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
SaveDriverURLOFErrorPage()
|
|
Return
|
|
}
|
|
}
|
|
|
|
|
|
; Disable Monetization Checkbox
|
|
Message = Disabling Monetization Checkbox
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Xpath = //*[@id="advertising_instream_blocked"]
|
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
|
if(Status){
|
|
Message = Failed to click on Monetization slider with xpath, trying with full xpath
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Xpath = /html/body/div/div[2]/div/div[3]/div/div/div[2]/div[2]/div/div/div/div[4]/div/button
|
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
|
if(Status){
|
|
Message = Failed to click on Monetization slider with full xpath, sleeping for 5 seconds so user can manually uncheck it.
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
}
|
|
}
|
|
|
|
|
|
Message = Clicking Next Button to Move on to third video settings screen
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Xpath = //button[@type='button']//span[contains(text(),'Next')]
|
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
|
|
|
|
|
Message = Clicking Save Button to Finalize Upload
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Xpath = //span[normalize-space()='Save']
|
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
|
if(Status){
|
|
Message = Upload was ALMOST successfuly. Failed to Click Final Save button
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
}
|
|
|
|
|
|
; Grab the Share URL and pull out the Video Link from it and save it to the Video links ini file, so double uploads are not tried if fialure occurs
|
|
Message = Waiting 30 seconds before grabbing Video URL
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|
|
|
sleep, 30000
|
|
|
|
|
|
Xpath = //ul[@data-test-id='videos-media-list']//li//div//div//div//div//h3//a
|
|
try, DailyMotionInternalURL := driver.findelementbyxpath(Xpath).Attribute("href")
|
|
if(DailyMotionInternalURL = ""){
|
|
Message = Failed to Grab Video URL. Upload Most likely Failed.
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
SaveDriverURLOFErrorPage()
|
|
Return
|
|
}
|
|
|
|
|
|
; Pull out URL slug from internal video URL and create dailymotion share URL from it
|
|
DailyMotionURL := StrSplit(DailyMotionInternalURL, "/video/details/")[2]
|
|
DailyMotionURL := "https://www.dailymotion.com/video/" . DailyMotionURL
|
|
|
|
|
|
Message = Upload Complete: %DailyMotionURL%
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
IniWrite, %DailyMotionURL%, %VideoLinksIniFile%, URLs, DailyMotionURL
|
|
SaveDriverURL()
|
|
AddToTotalVideosUploadedCount()
|
|
|
|
Return |