30 Commits

Author SHA1 Message Date
5b2e8970bf code cleanup, save gui positions between runs 2024-05-17 19:56:24 -04:00
3a439e7300 added workaround to paste formatting bug, added confirmation setting and implemented check on all selenium sites 2024-05-17 19:37:41 -04:00
64c03c9f65 Added Window position saving between runs 2024-05-17 01:00:21 -04:00
Yuriy
845af386c0 fixed locals.com posting, added ability to use custom chrome.exe filepath 2024-01-16 18:59:30 -05:00
d5edbc058c Update 'Modules/Post-To-Bastyon.ahk'
Added error handling to failed tag input
2024-01-15 00:19:08 +00:00
f70498afce add newline after fdrpodcasts URL for post body 2024-01-15 00:18:13 +00:00
Yuriy
a3f16aa6f2 changed back mewe always being unchecked by default 2024-01-12 22:25:59 -05:00
982f857640 add newline after fdrpodcasts URL for post body 2024-01-02 12:33:04 -07:00
Yuriy
0597c90144 Added error handling if freedomain.dev or chrome-for-testing API is not reachable 2023-12-18 23:33:35 -05:00
Yuriy
5703a896ff added automatic version bump when script is compiled, moved version number outside of main script 2023-12-18 23:04:46 -05:00
9b506a8f73 Update 'Modules/Post-To-Bastyon.ahk'
Added error handling to failed tag input
2023-12-19 03:37:20 +00:00
Yuriy
1880170b07 added settings.ini 2023-12-17 22:19:38 -05:00
Yuriy
09c9dbd485 fixed settings.ini 2023-12-17 22:19:17 -05:00
Yuriy
5492130564 removed empty lines from settings.ini 2023-12-17 21:25:28 -05:00
Yuriy
5ba8412f18 added template settings file 2023-12-17 21:24:20 -05:00
Yuriy
7fd46a9913 added template settings.ini 2023-12-17 15:34:42 -05:00
Yuriy
9c93a35b37 version bump, submodules URL update, replaced all URLs to point to freedomain.dev 2023-12-17 14:34:35 -05:00
17cc313f83 fix link to releases in README 2023-12-17 12:13:21 -07:00
Yuriy
bde745f6e2 updates 2023-12-11 13:25:52 -05:00
Yuriy
108baea92e replaced API calls to point to freedomain.dev 2023-12-11 13:17:17 -05:00
Yuriy
6be4fac939 unchecked gettr and twetch by default 2023-12-07 22:48:11 -05:00
5ed47d281c added title input for Locals Posts 2023-11-05 16:44:36 -05:00
e67b80a2d8 reworked Minds check for submit success/fail 2023-11-05 16:32:49 -05:00
600481a517 fixed Subscribestar title and body having same formatting 2023-11-05 16:21:21 -05:00
038bbdf9fa removed thinkspot and GUI reworks 2023-11-05 15:59:17 -05:00
4215cc71ae added podcast URL if post is podcast 2023-11-05 15:44:32 -05:00
181044be9a Fixed errors when gitea not available 2023-10-22 02:20:30 -04:00
de310d8f14 added more error logging to subscribestar submit 2023-10-22 01:58:14 -04:00
1e10349d56 fixed twetch posting, unchecked thinkspot by default for now, added functionality to update chrome/driver 2023-10-22 01:51:15 -04:00
c4eef942e5 updated Subscribestar posting to use javascript instead of xpath, added extra error logging 2023-09-28 22:49:32 -04:00
20 changed files with 511 additions and 689 deletions

1
.gitignore vendored
View File

@@ -27,3 +27,4 @@ Compile Scripts to EXE.ahk
Freedomain Video Uploader.exe
Lib/LBRY Process Killer.exe
Lib/chrome-win64
Lib/Version.ini

2
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "Lib/Freedomain-Posters-Shared-Functions"]
path = Lib/Freedomain-Posters-Shared-Functions
url = https://git.freedomainplaylists.com/yuriy/Freedomain-Posters-Shared-Functions.git
url = https://freedomain.dev/yuriy/posters-shared-functions.git

View File

@@ -14,29 +14,24 @@ CoordMode, Mouse, Screen
;---Notes/Extra Info/#Includes------------------------------------------------------
; msgbox
;---VARIABLES-----------------------------------------------------------------------
/*ScriptToCompile = %1%
CompileType = %2% ; Testing OR Production
if(CompileType = "")
CompileType = Testing
; Msgbox % "CompileType: " CompileType
if(ScriptToCompile = "")
ExitApp
*/
; Msgbox % "ScriptToCompile: " ScriptToCompile
ScriptToCompile = SocialMediaPoster
; ScriptToCompile = ScriptUpdater
;---MAIN SCRIPT---------------------------------------------------------------------
AHKFilepath = %A_ScriptDir%\Freedomain Social Media Poster.ahk
Exefilepath = %A_ScriptDir%\Freedomain Social Media Poster.exe
icopath = %A_ScriptDir%\Assets\FreedomainSMP.ico
VersionIniFP = %A_ScriptDir%\Version.ini
; Bump the version number in the version.ini file
IniRead, VersionNumber, %VersionIniFP%, Social-Media-Poster, Version, 0.0 ; , Filename, Section, Key [, Default]
VersionNumber += .01
VersionNumber := SubStr(VersionNumber, 1, 4)
; Msgbox % "VersionNumber: " VersionNumber
IniWrite, %VersionNumber%, %VersionIniFP%,Social-Media-Poster, Version
; Kill any active intances of the uploaders so the .exe file can be overwriten by the compilation
process, close, Freedomain Social Media Poster.exe
@@ -68,8 +63,6 @@ if(!FileExist(icopath)){
run, %comspec% /c ""C:\Program Files\AutoHotkey\Compiler\Ahk2Exe.exe" /in "%AHKFilepath%" /out "%exefilepath%" /icon "%icopath%""
; OldNotify(ScriptToCompile,"Compiled Successfully",5)
; sleep, 5000
ExitApp

View File

@@ -11,6 +11,7 @@ if(InStr(A_ScriptName, ".ahk")){
}
ErrorLoggingDirectory = %1%
PassedInArgument = %1%
; Add menus to the toolbar icon
Menu, tray, NoStandard ; remove standard tray
@@ -39,11 +40,9 @@ global UpdateVersionNumber
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\JSON.ahk
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\RunCMD.ahk
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Zip.ahk
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\URLDownloadToVar.ahk
ScriptName = Freedomain Social Media Poster
ScriptVersion = 2.83
FullScriptName := ScriptName . " " . ScriptVersion
;---ToDo---
;------------------------------------------------
@@ -98,7 +97,7 @@ global Locals
global LinkedIn
global MeWe
global Twetch
global ThinkSpot
; global ThinkSpot
; global Flote
global PocketNet
; global parler
@@ -122,6 +121,15 @@ ChangelogIniFilepath := A_ScriptDir . "\Lib\FreedomScriptsChangelogINI"
global ScriptSettingsSection
ScriptSettingsSection := "SocialMediaPoster"
FileInstall, Version.ini, %A_ScriptDir%\Lib\Version.ini, 1
IniRead, ScriptVersion, %A_ScriptDir%\Lib\Version.ini,Social-Media-Poster, Version, 0.0
ScriptName = Freedomain Social Media Poster
ScriptAbbreviatedName := "FSMP"
FullScriptName := ScriptName . " " . ScriptVersion
;---General Info---
;------------------------------------------------
IniRead, TestingMode, %SettingsIniFilepath%, General, TestingMode, 0
@@ -130,7 +138,9 @@ IniRead, TelegramBotToken, %SettingsIniFilepath%, SocialMediaPoster, TelegramBot
IniRead, TelegramBotChatID, %SettingsIniFilepath%, SocialMediaPoster, TelegramBotChatID, %A_Space%
IniRead, DiscordErrorLoggingWebhookBotURL, %SettingsIniFilepath%, SocialMediaPoster, DiscordErrorLoggingWebhookBotURL, %A_Space%
IniRead, DiscordParlerWebhookURL, %SettingsIniFilepath%, SocialMediaPoster, DiscordParlerWebhookURL, %A_Space%
; IniRead, ChromeFilepath, %SettingsIniFilepath%, SocialMediaPoster, ChromeFilepath, %A_Space%
IniRead, ChromeFilepath, %SettingsIniFilepath%, SocialMediaPoster, ChromeFilepath, %A_Space%
IniRead, ConfirmBeforeSubmit, %SettingsIniFilepath%, %ScriptSettingsSection%, ConfirmBeforeSubmit, 1
; IniRead, SaveGUIPosition, %SettingsIniFilepath%, %ScriptSettingsSection%, SaveGUIPosition, 1
@@ -175,7 +185,7 @@ IniRead, TotalRunTime, %SettingsIniFilepath%, %ScriptSettingsSection%, TotalRunT
;------------------------------------------------
global GitReleasesAPIURL
GitReleasesAPIURL =https://git.freedomainplaylists.com/api/v1/repos/yuriy/Freedomain-Social-Media-Poster/releases
GitReleasesAPIURL = https://freedomain.dev/api/v1/repos/yuriy/Freedomain-Social-Media-Poster/releases
; Save filepath of the current script to %SettingsIniFilepath% so it can be read and used by the script updater
; Append informatio to ini files for Freedomain Program Updater
@@ -216,7 +226,8 @@ if(InStr(ErrorLoggingDirectory,ScriptName) and InStr(ErrorLoggingDirectory,".exe
}
if(StrLen(ErrorLoggingDirectory) > 5 and !InStr(ErrorLoggingDirectory, ".exe")){ ; if argument was passed in, read contents from that directory
; if argument was passed in, read contents from that directory and grab video info for social media post
if(StrLen(ErrorLoggingDirectory) > 5 and !InStr(ErrorLoggingDirectory, ".exe")){
; SaveOrPostProgress(Message:="Starting Up: Reading Information from Files",PostType:="Tooltip")
SkipUpdateCheckThisRun := 1
@@ -251,23 +262,25 @@ if(StrLen(ErrorLoggingDirectory) > 5 and !InStr(ErrorLoggingDirectory, ".exe")){
; Read video links from video links file
IniRead, BitChuteURL, %ErrorLoggingDirectory%,URLs, BitChuteURL, %A_Space%
IniRead, RumbleURL, %ErrorLoggingDirectory%,URLs, RumbleURL, %A_Space%
IniRead, StreamanityURL, %ErrorLoggingDirectory%,URLs, StreamanityURL, %A_Space%
; IniRead, BitChuteURL, %ErrorLoggingDirectory%,URLs, BitChuteURL, %A_Space%
IniRead, BrighteonURL, %ErrorLoggingDirectory%,URLs, BrighteonURL, %A_Space%
IniRead, BitChuteURL, %ErrorLoggingDirectory%,URLs, BitChuteURL, %A_Space%
IniRead, PodcastNumber, %ErrorLoggingDirectory%,Misc, PodcastNumber, %A_Space%
if(BitChuteURL = ""){
if(RumbleURL != "")
VideoURL := RumbleURL
else,
VideoURL := StreamanityURL
VideoURL := BrighteonURL
}
else,
VideoURL := BitChuteURL
if(PodcastNumber != ""){
PodcastURL := "https://fdrpodcasts.com/" . PodcastNumber . "`n`n"
}
; Append bitchute url to bottom of description
PostBody := PostBody . "`n`n" . VideoURL
; Msgbox % "PostTitle: " PostTitle
; Msgbox % "PostBody: " PostBody
PostBody := PostBody . "`n`n" . PodcastURL . VideoURL
Discord := 0
Telegram := 0
@@ -293,18 +306,13 @@ if(StrLen(ErrorLoggingDirectory) > 5 and !InStr(ErrorLoggingDirectory, ".exe")){
(Telegram != "")?(TelegramCheckStatus := 0) : (TelegramCheckStatus := 1)
(Minds != "")?(MindsCheckStatus := 0) : (MindsCheckStatus := 1)
(Gab != "")?(GabCheckStatus := 0) : (GabCheckStatus := 1)
(MeWe != "")?(MeWeCheckStatus := 0) : (MeWeCheckStatus := 1) ; UNCHECKED ALWAYS as of 2022/04/08
(Gettr != "")?(GettrCheckStatus := 0) : (GettrCheckStatus := 1)
(MeWe != "")?(MeWeCheckStatus := 0) : (MeWeCheckStatus := 1)
(Gettr != "")?(GettrCheckStatus := 0) : (GettrCheckStatus := 0)
(Steemit != "")?(SteemitCheckStatus := 0) : (SteemitCheckStatus := 1)
(Locals != "")?(LocalsCheckStatus := 0) : (LocalsCheckStatus := 1)
(LinkedIN != "")?(LinkedINCheckStatus := 0) : (LinkedINCheckStatus := 1)
(Twetch != "")?(TwetchCheckStatus := 0) : (TwetchCheckStatus := 1)
(ThinkSpot != "")?(ThinkSpotCheckStatus := 0) : (ThinkSpotCheckStatus := 1)
; (Flote != "")?(FloteCheckStatus := 0) : (FloteCheckStatus := 0)
; (Pintrest != "")?(PintrestCheckStatus := 0) : (PintrestCheckStatus := 1)
; (Parler != "")?(ParlerCheckStatus := 0) : (ParlerCheckStatus := 0)
(Twetch != "")?(TwetchCheckStatus := 0) : (TwetchCheckStatus := 0)
(PocketNet != "")?(PocketNetCheckStatus := 0) : (PocketNetCheckStatus := 1)
; (Tumblr != "")?(TumblrCheckStatus := 0) : (TumblrCheckStatus := 1)
@@ -320,13 +328,15 @@ if(TestingMode){ ; Easy testing for Yuriy
LinkedINCheckStatus := 0
MeWeCheckStatus := 0
TwetchCheckStatus := 0
ThinkSpotCheckStatus := 0
PocketNetCheckStatus := 0
}
;---GUI Variables---
;------------------------------------------------
IniRead, XPosition, %SettingsIniFilepath%, %ScriptSettingsSection%, XPosition, 0
IniRead, YPosition, %SettingsIniFilepath%, %ScriptSettingsSection%, YPosition, 0
TooltipXPosition := Round((A_ScreenWidth / 2) - (A_ScreenWidth / 10)) ; Center Tooltip on the screen and a bit to the left
GuiWidth := 1366
@@ -356,6 +366,11 @@ Gui, Margin, %MarginSpace%, %MarginSpace%
GUINormalFontSize := 15
; Create GUI Elements
; ------------------------------------------------
Gui, Font, s10
; Gui, Font, s8
if(TestingMode){
@@ -368,21 +383,25 @@ if(DevMode){
Gui, Font, s%GUINormalFontSize%
Gui, Font, Bold
Gui, Add, Text, x%Marginspace% y+5 w%EditBoxWidth%, Post Title
Gui, Add, Text, x%Marginspace% y+5, Post Title
Gui, Font, s8
Gui, Add, Checkbox, xp+120 yp+10 vBoldTitleWAPI Checked%BoldTitleCheckStatus% gUpdateVars,Bold Title on Discord/Telegram
Gui, Add, Checkbox, xp+220 yp+0 vNewLineBetweenTitle Checked%SpaceBetweenTitleBodyCheckStatus% gUpdateVars,Blank Line Between Title+Body
Gui, Font, Normal
Gui, Font, s8
Gui, Add, Button, x+%MarginSpace% gPasteClipboardToEditBox vPasteClipboardToSMPTitle, Paste Clipboard
Gui, Add, Checkbox, xp+120 vBoldTitleWAPI Checked%BoldTitleCheckStatus% gUpdateVars,Bold Title on Discord/Telegram
Gui, Add, Checkbox, xp+220 vNewLineBetweenTitle Checked%SpaceBetweenTitleBodyCheckStatus% gUpdateVars,Blank Line Between Title+Body
Gui, Font, Normal
Gui, Font, s%GUINormalFontSize%
Gui, Add, Edit, x%MarginSpace% y+3 w%EditBoxWidth% vPostTitle gUpdateCharCount h75, %PostTitle%
Gui, Add, Edit, x%MarginSpace% y+%marginspace% w%EditBoxWidth% vPostTitle gUpdateCharCount h50, %PostTitle%
Gui, Font, Bold
Gui, Add, Text,w%EditBoxWidth%, Post Body
Gui, Add, Text,, Post Body
Gui, Font, Normal
Gui, Font, s8
Gui, Add, Button, x+%MarginSpace% gPasteClipboardToEditBox vPasteClipboardToSMPBody, Paste Clipboard
Gui, Font, s%GUINormalFontSize%
Gui, Add, Edit, x%MarginSpace% y+2 w%EditBoxWidth% h150 vPostBody gUpdateCharCount, %PostBody%
Gui, Add, Edit, x%MarginSpace% y+2 w%EditBoxWidth% h200 vPostBody gUpdateCharCount, %PostBody%
; Gui, font, color, cblack
@@ -452,19 +471,16 @@ Gui, Add, GroupBox,r4 x%PlatformsGroupBoxXLocation% y20 w300, Settings
Gui, Font, s11
Gui, Font, Normal
Gui, Add, Checkbox, xp+10 yp+25 vAutoUpdateCheck Checked%AutoUpdateCheckCheckStatus% gUpdateVars, Auto Update Check
Gui, Add, Checkbox, vReuseTabs Checked%ReuseTabsCheckStatus% gUpdateVars, Try to Re-Use Tabs
; Gui, Add, Checkbox, vNewChromeWindow Checked%AutoUpdateCheckCheckStatus% gUpdateVars, Create New Chrome Window (WIP)
; Gui, Add, Checkbox, vReuseTabs Checked%ReuseTabsCheckStatus% gUpdateVars, Try to Re-Use Tabs
Gui, Add, Checkbox,vShowTooltipProgress Checked%ShowTooltipProgressCheckStatus% gUpdateVars, Show Tooltip of Progress
; Gui, Add, Checkbox, vAutoUpdateCheck Checked%AutoUpdateCheckCheckStatus% gUpdateVars, Auto Update Check
Gui, Add, Checkbox, vSaveTagsBetweenPosts Checked%SaveTagsBetweenPostsCheckStatus% gUpdateVars, Save Tags Between Posts
Gui, Add, Checkbox, vPauseBetweenPosts Checked%PauseBetweenPostsCheckCheckStatus% gUpdateVars, Pause Briefly Between Posts
Gui, Add, Checkbox, vConfirmBeforeSubmit checked%ConfirmBeforeSubmit%, Confirm Before Submit
; Gui, Add, Checkbox, vSaveGUIPosition checked%SaveGUIPosition%, Save GUI Position
; Gui, Add, Checkbox, vPauseBetweenPosts Checked%PauseBetweenPostsCheckCheckStatus% gUpdateVars, Pause Briefly Between Posts
; Gui, Add, Checkbox, vAutoRestartChromeDebug Checked%PauseBetweenPostsCheckCheckStatus% gUpdateVars, Auto Restart Chrome in Debug Mode
Gui, Font, s%GUINormalFontSize%
Gui, Font, Bold
Gui, Add, GroupBox,r6.4 x%PlatformsGroupBoxXLocation% y210 w300, Platforms
Gui, Font, Normal
@@ -476,26 +492,16 @@ Gui, Add, Checkbox, y+7 vGab Checked%GabCheckStatus% gUpdateVars, Gab
Gui, Add, Checkbox, y+7 vLocals Checked%LocalsCheckStatus% gUpdateVars, Locals
Gui, Add, Checkbox, y+7 vTwetch Checked%TwetchCheckStatus% gUpdateVars, Twetch
; Second Row
; Gui, Add, Checkbox, vLinkedIn Checked%LinkedINCheckStatus% gUpdateVars, LinkedIn
Gui, Add, Checkbox, x+75 yp-180 vLinkedIn Checked%LinkedINCheckStatus% gUpdateVars, LinkedIn
; Gui, Add, Checkbox, y+7 vLinkedIn Checked%LinkedINCheckStatus% gUpdateVars, LinkedIn
Gui, Add, Checkbox, y+7 vThinkspot Checked%ThinkSpotCheckStatus% gUpdateVars, Thinkspot
; Gui, Add, Checkbox, y+7 vFlote Checked%FloteCheckStatus% gUpdateVars, Flote
; Gui, Add, Checkbox, y+7 vParler Checked%ParlerCheckStatus% gUpdateVars, Parler
Gui, Add, Checkbox, x+75 yp-190 vLinkedIn Checked%LinkedINCheckStatus% gUpdateVars, LinkedIn
Gui, Add, Checkbox, y+7 vSteemit Checked%SteemitCheckStatus% gUpdateVars, Steemit
; Gui, Add, Checkbox, y+7 vPintrest Checked%PintrestCheckStatus% gUpdateVars, Pintrest
Gui, Add, Checkbox, y+7 vPocketNet Checked%PocketNetCheckStatus% , Bastyon
; Gui, Add, Checkbox, y+7 vTumblr Checked%TumblrCheckStatus% , Tumblr
Gui, Add, Checkbox, y+7 vGettr Checked%GettrCheckStatus% gUpdateVars, Gettr
Gui, Add, Checkbox, y+7 vMeWe Checked%MeWeCheckStatus% gUpdateVars, MeWe
Gui, Font, Bold
gui, Font, s15
; : Gui, Add, Text, , My Text.
; Gui, Font, Color, Red
Gui, Add, Button, x%PlatformsGroupBoxXLocation% y485 w300 h113 gPostPost, Publish
; Gui, Add, Button, x%PlatformsGroupBoxXLocation% y+20 w300 h30 gSchedulePost, Schedule Post
@@ -507,23 +513,19 @@ gui, font, normal
Gui, Add, StatusBar,, Total Posts Posted: %TotalPostsPosted% | Total Run Time: %TotalRunTime% Seconds |
; easier to just let the gui size be as needed instead of trying to recalculate the size each time an element is added
Gui, Show,,%FullScriptName% ; , w%GuiWidth%, %ScriptName%
; if(SaveGUIPosition)
Gui, Show, x%XPosition% y%YPosition% ,%FullScriptName% ; , w%GuiWidth%, %ScriptName%
; else,
; Gui, Show,,%FullScriptName% ; , w%GuiWidth%, %ScriptName%
; Activate the Post Title input box so user can start instantly typing in their new message
ControlFocus, Edit1, %FullScriptName%
; check for updates if the setting is enabled
if(AutoUpdateCheck AND !SkipUpdateCheckThisRun){
CheckForUpdates(GitReleasesAPIURL)
GuiControl,,UpdateAvailable, Uploader Update Available!
; if(CheckForChromeUpdates(ChromeFilepath))
; GuiControl,,ChromeUpdateAvailable, Chrome Update Available!
if(AutoUpdateCheck AND !UpdateAvailable){
SetTimer, CheckForUpdates, -1000
}
;---Check for Update---
;------------------------------------------------
Return
@@ -532,6 +534,9 @@ Return
;---Misc GoSubs---
;------------------------------------------------
SaveAsTemplate:
TemplateDirectory = %A_ScriptDir%\Lib\Templates
if(!FileExist(TemplateDirectory)){
@@ -615,7 +620,9 @@ if(!status){
}
DownloadLatestChromium()
Status := DownloadLatestChromium()
if(Status)
GuiControl,,ChromeUpdateAvailable, Chrome Up-to-Dat
Return
@@ -649,7 +656,7 @@ run, "%A_ScriptFullPath%" "LastPost"
Return
OpenGiteaPage:
run, https://git.freedomainplaylists.com/yuriy/Freedomain_Social_Media_Poster
run, https://freedomain.dev/yuriy/social-media-poster
Return
CompileScript:
@@ -679,19 +686,12 @@ UpdateCharCount:
Gui, Submit, NoHide
Count := StrLen(PostBody)
/*if(Count > 256){
GuiControl,, Twetch, 0
}
*/
GuiControl,, CharCount, %Count%
Return
TryFailedAgain:
; msgbox %ErrorLoggingDirectory%
run, %A_ScriptFullPath% "LastPost"
ExitApp
; Return
@@ -703,7 +703,6 @@ Gui, Submit
Gui, Destroy
Gui, Font, Normal
Gui, Font, s20
Gui, Add, Text, Center w350 x%marginspace%,Time to Post At
@@ -718,9 +717,10 @@ Return
PostPost:
Gui, Submit
Gui, Submit, NoHide
; Msgbox % "PostTags: " PostTags
; Get GUI window position for saving to settings file
WinGetPos, XPosition, YPosition, , , A
if(InStr(PostTags, "http")){
Message = Post Tags contain "http". Please edit and remove the url and try again.
@@ -732,7 +732,6 @@ if(InStr(PostTags, "http")){
Gui, Destroy
; 20211023061711
ScheduledTime := SubStr(ScheduledTime, 1, 12) ; pull out time date up to the minute and exclude seconds
; Msgbox % "ScheduledTime: " ScheduledTime
; clipboard := ScheduledTime
@@ -745,7 +744,6 @@ ScheduledTime := SubStr(ScheduledTime, 1, 12) ; pull out time date up to the min
; if the argument is an error logging post, we want to continue where it left off and log to the same place
; Msgbox % "ErrorLoggingDirectory: " ErrorLoggingDirectory
if(InStr(ErrorLoggingDirectory, "\Templates\") OR ErrorLoggingDirectory = "" OR InStr(ErrorLoggingDirectory, "VideoLinks.ini")){
; msgbox, creating new error logging files
CreateErrorLoggingFiles()
@@ -753,6 +751,11 @@ if(InStr(ErrorLoggingDirectory, "\Templates\") OR ErrorLoggingDirectory = "" OR
} ;
; Save Script Settings to File
; ------------------------------------------------
IniWrite, %XPosition%, %SettingsIniFilepath%, %ScriptSettingsSection%, XPosition
IniWrite, %YPosition%, %SettingsIniFilepath%, %ScriptSettingsSection%, YPosition
IniWrite, %BoldTitleWAPI%, %SettingsIniFilepath%, SocialMediaPoster, BoldTitleWAPI
IniWrite, %NewLineBetweenTitle%, %SettingsIniFilepath%, SocialMediaPoster, NewLineBetweenTitle
@@ -763,6 +766,14 @@ IniWrite, %SaveTagsBetweenPosts%, %SettingsIniFilepath%, SocialMediaPoster, Save
IniWrite, %PauseBetweenPosts%, %SettingsIniFilepath%, SocialMediaPoster, PauseBetweenPosts
IniWrite, %ErrorLoggingDirectory%, %SettingsIniFilepath%, %ScriptSettingsSection%, LastPost
IniWrite, %ConfirmBeforeSubmit%, %SettingsIniFilepath%, %ScriptSettingsSection%, ConfirmBeforeSubmit
; IniWrite, %SaveGUIPosition%, %SettingsIniFilepath%, %ScriptSettingsSection%, SaveGUIPosition
; Used by Post Scheduler, filepath changes between script updates
IniWrite, %A_ScriptFullPath%, %SettingsIniFilepath%, Filepaths, SocialMediaPosterFilepath
; Combines two variables together so they can be used as needed later
@@ -808,7 +819,7 @@ IniWrite, %ShowTooltipProgress%, %SettingsIniFilepath%, SocialMediaPoster, ShowT
(Locals = 1)?(PostedWebsites .= "Locals|") : ()
(LinkedIn = 1)?(PostedWebsites .= "LinkedIn|") : ()
(Twetch = 1)?(PostedWebsites .= "Twetch|") : ()
(ThinkSpot = 1)?(PostedWebsites .= "ThinkSpot|") : ()
; (ThinkSpot = 0)?(PostedWebsites .= "ThinkSpot|") : ()
; (Flote = 1)?(PostedWebsites .= "Flote|") : ()
(PocketNet = 1)?(PostedWebsites .= "PocketNet|") : ()
(Gettr = 1)?(PostedWebsites .= "Gettr|") : ()
@@ -883,8 +894,8 @@ Gosub, PostToMeWe
if(Twetch)
Gosub, PostToTwetch
if(Thinkspot)
Gosub, PostToThinkSpot
; if(Thinkspot)
; Gosub, PostToThinkSpot
if(Locals)
Gosub, PostToLocals
@@ -976,20 +987,14 @@ Gui, Add, Button,x%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center,
Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %MeWe%
Gui, Font, s9
Gui, Add, Button, x%MarginSpace% y+20 w165 h50 gCancelPost, Close
Gui, Add, Button, x+%Marginspace% w215 h50 gSendErrorLoggingThroughTelegram, Telegram Detailed Errorlog
Gui, Add, Button, x+%Marginspace% h50 w165 gTryFailedAgain, Try Failed Again
Gui, Font, s%GUINormalFontSize%
gui, font, s8
Gui, Add, Button,x%StatusTextSecondRowXPos% y40 w%WebsiteButtonWidths%Center h%ButtonHeights%, ThinkSpot
Gui, Font, s%GUINormalFontSize%
Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %ThinkSpot%
; gui, font, s8
; Gui, Add, Button,x%StatusTextSecondRowXPos% y40 w%WebsiteButtonWidths%Center h%ButtonHeights%, ThinkSpot
; Gui, Font, s%GUINormalFontSize%
; Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %ThinkSpot%
Gui, Font, s%GUINormalFontSize%
; Gui, Font, s%GUINormalFontSize%
; Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Flote
; Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %Flote%
@@ -997,21 +1002,31 @@ Gui, Font, s%GUINormalFontSize%
; Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% gActivateParlerTab Center, Parler
; Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %Parler%
Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Steemit
Gui, Add, Button,x%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Steemit
Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %Steemit%
; Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Pintrest
; Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %Pintrest%
Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Bastyon
Gui, Add, Button,x%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Bastyon
Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %PocketNet%
; Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Tumblr
; Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %Tumblr%
; Gui, Font, s9
/*
Gui, Add, Button, x%MarginSpace% y+20 w165 h50 gCancelPost, Close
Gui, Add, Button, x+%Marginspace% w215 h50 gSendErrorLoggingThroughTelegram, Telegram Detailed Errorlog
*/
Gui, Font, s8
Gui, Add, Button, x%StatusTextSecondRowXPos% y+40 w270 h40 Center gCopyPostToClipboard, Copy Post To Clipboard `nFor Easy Pasting to Other Sites
Gui, Add, Button, x%StatusTextSecondRowXPos% y+%MarginSpace% w270 h40 Center gCopyImageFilepathToClipboard, Copy Image Filepath To Clipboard
Gui, Add, Button, x%StatusTextSecondRowXPos% y40 w270 h40 Center gCopyPostToClipboard, Copy Post To Clipboard `nFor Easy Pasting to Other Sites
Gui, Add, Button, x%StatusTextSecondRowXPos% y+%marginspace% w270 h40 Center gCopyImageFilepathToClipboard, Copy Image Filepath To Clipboard
Gui, Add, Button, x%StatusTextSecondRowXPos% y+%marginspace% h50 w270 h80 gTryFailedAgain, Try Failed Again
/*Gui, Add, Button,x%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, PocketNet
@@ -1031,7 +1046,10 @@ Gui, Font, s%GUINormalFontSize%
gui, font, s6
Gui, Add, StatusBar,, Total Posts Posted: %TotalPostsPosted% | Run Time: %ScriptRunTime% Seconds
Gui, Show,, %FullScriptName% - Post Results
; if(SaveGUIPosition)
Gui, Show, x%XPosition% y%YPosition%, %FullScriptName% - Post Results
; else,
; Gui, Show,, %FullScriptName% - Post Results
SaveCurrentChromeVersionToIniFile()
@@ -1169,8 +1187,11 @@ Return
; Thinkspot
;------------------------------------------------
#include %A_ScriptDir%\Modules\Post-To-Thinkspot.ahk
; #include %A_ScriptDir%\Modules\Post-To-Thinkspot.ahk
; Misc Functions
;------------------------------------------------
#include %A_ScriptDir%\Modules\Miscellaneous-Functions.ahk
; used by update checker and paste from clipboard
#include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Shared-GoTos.ahk

View File

@@ -30,34 +30,6 @@ ReadWebsiteStatuses(){
; IniRead, Tumblr, %StatusFileFilePath%, Status, Tumblr, %A_Space%
}
; -------------------------------CreateErrorLoggingFiles-------------------------------
CreateErrorLoggingFiles(Path := ""){
FormatTime, TodayDate, YYYYMMDDHH24MISS, yyyyMMdd_hhmmss
ErrorLoggingDirectory := Path
if(Path = ""){
ErrorLoggingDirectory := A_ScriptDir . "\Lib\ErrorLogging"
; If directory for error logging doesn't exist, create it
if(!FileExist(ErrorLoggingDirectory))
FileCreateDir, %ErrorLoggingDirectory%
ErrorLoggingDirectory := ErrorLoggingDirectory . "\" . TodayDate . "_FSMP"
}
; Msgbox % "ErrorLoggingDirectory: " ErrorLoggingDirectory
FileCreateDir, %ErrorLoggingDirectory%
; Create variables with filepaths that content will be saved to.
ErrorLoggingFilePath := ErrorLoggingDirectory . "\" . "ErrorLogging.txt"
StatusFileFilePath := ErrorLoggingDirectory . "\" . "PostStatus.ini"
PostTitleFilePath := ErrorLoggingDirectory . "\" . "PostTitle.txt"
PostBodyFilePath := ErrorLoggingDirectory . "\" . "PostBody.txt"
; Msgbox % "ErrorLoggingDirectory: " ErrorLoggingDirectory
Return
}
; -------------------------------/CreateErrorLoggingFiles-------------------------------
AddToTotalPostsPostedCount(){
IniRead, TotalPostsPosted, %SettingsIniFilepath%, SocialMediaPoster, TotalPostsPosted, 0
TotalPostsPosted += 1

View File

@@ -100,107 +100,70 @@ if(Status = ""){
sleep, 2000
/*
*/
if(ImageAttachmentFilepath != ""){
; Message = Attaching Image
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
if(ImageAttachmentFilepath != ""){
; Message = Attaching Image
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
; Click the "Image" button
SaveOrPostProgress(Message:="Attaching Image",PostType:="Tooltip,ErrorLoggingTextFile")
; Click the "Image" button
SaveOrPostProgress(Message:="Attaching Image",PostType:="Tooltip,ErrorLoggingTextFile")
/* Xpath = //div[@title='Add Images to Post']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
if(Status){
Message = Failed to Click "Attach Image" Button
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
*/
; sleep, 5000
Xpath = //input[@type='file']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=3,SleepLength:=5000,StringTextContent:=ImageAttachmentFilepath)
if(Status){
Message = Failed to Attach Image
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
SaveOrPostProgress(Message:="Waiting 10 Seconds For Image to Upload",PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 10000
}
; Input Tags
Xpath = //div[@class='search fastSearchShow']//input[@id='text']
TagsArray := StrSplit(PostTags, ",")
TagsArrayLength := TagsArray.Length() ; Save total number of items in the array
loop, %TagsArrayLength% {
Tag := TagsArray[A_Index]
Tag := StrReplace(Tag, " ", "")
DevModeMsgBox(Tag)
; Tag = %Tag%
Xpath = //input[@placeholder='Categories and tags']
driver.FindElementByXPath(Xpath).SendKeys(Tag)
driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.ENTER)
; driver.findElementsByClass("sminput").item[2].click()
; JsToExecute = document.querySelector("#text[placeholder='Add Categories/Tags']").value = "#%Tag%"
; Status := JS_TryToExecute(JsToExecute)
;
; driver.SendKeys(driver.Keys.SPACE)
;
; JsToExecute = return document.querySelector("#text[placeholder='Add Categories/Tags']").value
; Status := JS_TryToExecute(JsToExecute)
if(A_index = 5)
Break
/*Tag := TagsArray[A_Index]
Tag := StrReplace(Tag, " ", "")
; Tag = %Tag%
Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,SendKeysContent:=Tag)
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.Space)
*/
; if(A_index = 8) ; Steemit only allows 8 tags
; Break
}
; msgbox
/* Xpath = //div[@class='emojionearea-editor pastable']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=3,SleepLength:=1000,StringTextContent:=PostTitleAndBody)
Xpath = //input[@type='file']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=3,SleepLength:=5000,StringTextContent:=ImageAttachmentFilepath)
if(Status){
SaveOrPostProgress(Message:="Failed to Input Post",PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Message = Failed to Attach Image
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
; Send,
}
*/
; Msgbox,4096,Pause!!,asdf
SaveOrPostProgress(Message:="Waiting 10 Seconds For Image to Upload",PostType:="Tooltip,ErrorLoggingTextFile")
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 10000
; CLick the post button
Xpath = //button[normalize-space()='Post']
loop, 3 {
try driver.FindElementByXPath(Xpath).click()
sleep, 1500
}
; Input Tags
Xpath = //div[@class='search fastSearchShow']//input[@id='text']
TagsArray := StrSplit(PostTags, ",")
TagsArrayLength := TagsArray.Length() ; Save total number of items in the array
loop, %TagsArrayLength% {
Tag := TagsArray[A_Index]
Tag := StrReplace(Tag, " ", "")
DevModeMsgBox(Tag)
; Tag = %Tag%
Xpath = //input[@placeholder='Categories and tags']
try driver.FindElementByXPath(Xpath).SendKeys(Tag)
catch e {
Message = Failed to input tag: %tag%
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
}
; Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=2000)
; sleep, 2000
; Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=2000)
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.ENTER)
if(A_index = 5)
Break
}
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
; CLick the post button
Xpath = //button[normalize-space()='Post']
loop, 3 {
try driver.FindElementByXPath(Xpath).click()
sleep, 1500
}
; Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=2000)
; sleep, 2000
; Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=2000)
/* if(Status){
Message = Failed to Submit Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")

View File

@@ -88,6 +88,13 @@ if(Status){
; Click the final "post" button
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
Xpath = //*[@id="gabsocial"]/div/div[2]/div[2]/main/div/div[3]/div/div
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=2000)
if(Status){

View File

@@ -106,6 +106,13 @@ sleep, 500
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 2000
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
; Click post button
Xpath = //span[normalize-space()='Post']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=10,SleepLength:=1000)

View File

@@ -168,7 +168,7 @@ if(ImageAttachmentFilepath != ""){
SaveOrPostProgress(Message:="Waiting 5 seconds for Image to finish uploading",PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 5000
*/
*/
}
@@ -200,42 +200,38 @@ loop, 3 {
; Continue
}
/* if(!Status){ ; if BLANK
Message = Post Failed: Failed to input Post for some reason
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
*/
; sleep, 2000
if(InStr(PostTitleAndBody, "http") OR InStr(PostTitleAndBody, "www")){
Message = Waiting 10 seconds for Preview to Get Fetched
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 10000
}
else, {
sleep, 2000
}
if(InStr(PostTitleAndBody, "http") OR InStr(PostTitleAndBody, "www")){
Message = Waiting 10 seconds for Preview to Get Fetched
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 10000
}
else, {
sleep, 2000
}
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
Xpath = //span[normalize-space()='Post'] ; Click the final "post" button
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
Jscheck = return document.querySelector("div[aria-label='Text editor for creating content']").textContent ; Grabb innertext
try TextContent := driver.executeScript(Jscheck)
Xpath = //span[normalize-space()='Post'] ; Click the final "post" button
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
Jscheck = return document.querySelector("div[aria-label='Text editor for creating content']").textContent ; Grabb innertext
try TextContent := driver.executeScript(Jscheck)
Message = Failed to Submit Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Message = Failed to Submit Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Message = Failed to Submit Post: Text Content that got input: %TextContent%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
Message = Failed to Submit Post: Text Content that got input: %TextContent%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
/* ; Keep trying to click the home button until able to and then move on to next site because sometimes it takes a while for a post to upload
Xpath = //span[normalize-space()='Home']

View File

@@ -2,35 +2,21 @@
; -------------------------------Locals-------------------------------
PostToLocals:
CurrentSite := "Locals"
; DevModeMsgBox("clik ok to continue")
; @todo: Add auto-login to locals
SaveOrPostProgress(Message:="Navigating to Post Creation Page",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
IniRead, LocalsURL, %SettingsIniFilepath%, %ScriptSettingsSection%, LocalsURL, %A_Space%
if(LocalsURL = ""){
Message = Please add your Locals Profile URL to the settings.ini file under`n`n[General]`nLocalsURL=
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
Message = LocalsURL from Ini File: %LocalsURL%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
if(!InStr(LocalsURL, "/share/post")){
LocalsURL = https://freedomain.locals.com/share/post
Message = LocalsURL from ini file was incorrect. New URL set to %LocalsURL% and saved to settings.ini
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
IniWrite, %LocalsURL%, %SettingsIniFilepath%, %ScriptSettingsSection%, LocalsURL
}
; LocalsURL := StrReplace(Localsurl, "/share/post", "")
; LocalsURL := Localsurl . "/login"
; Message = Localsurl: %LocalsURL%
; SaveOrPostProgress(Message:=Message,PostType:=",DiscordErrorLogging")
; /share/post is the legacy new post page.
; Starting in 2024 all posts are published through the home page now.
LocalsURL := StrReplace(LocalsURL, "/share/post")
Status := NavigateFromBaseURLTo(LocalsURL)
if(Status = "Failed")
@@ -58,12 +44,22 @@ if(InStr(CurrentTabURL, "/login") OR InStr(CurrentTabURL, "/register")){
Message = Inputting Post Content
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
Xpath = //input[@id='title']
try driver.FindElementByXPath(Xpath).click()
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=PostTitle)
if(Status){
Message = Failed to input Title
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
Xpath = //*[@id="body"]
try driver.FindElementByXPath(Xpath).click()
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=PostTitleAndBody)
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=PostBody)
if(Status){
Message = Failed to input Title
Message = Failed to input Body
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
@@ -95,68 +91,45 @@ if(ImageAttachmentFilepath != ""){
}
Message = Submitting Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
; Click Publish post
js = document.getElementsByName('submitPost')[0].click(); ; Send content through javascript (Great for getting around emoji chrome limitaitons)
try driver.executeScript(js)
Message = Double checking that post got submitted
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 5000
/* ; Click the final "post" button
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
Status := Selenium_LoopToClickName(ElementName:="submitPost",NumOfLoops:=5,SleepLength:=1000)
if(Status){
Message = Failed to Submit Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
*/
; msgbox
; @todo: add error check into here to check the current page url and after page url
; Click Publish post
js = document.getElementsByName('submitPost')[0].click(); ; Send content through javascript (Great for getting around emoji chrome limitaitons)
try driver.executeScript(js)
Message = Double checking that post got submitted
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 5000
try CurrentTabURL := driver.Url
if(InStr(CurrentTabURL, "share/post")) { ; post failed to submit if it's still on the create new post page
Message = Error: Post Was Input but Failed to Submit.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
try CurrentTabURL := driver.Url
if(InStr(CurrentTabURL, "share/post")) { ; post failed to submit if it's still on the create new post page
Message = Error: Post Was Input but Failed to Submit.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
/* ; Double check that post got submitted
js = return document.querySelector("#body").value
Status := driver.executeScript(js)
if(Status != ""){
Message = Error: Post Failed to Submit for some reason
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
*/
IniWrite, Successful, %StatusFileFilePath%, Status, Locals
AddToTotalPostsPostedCount()
IniWrite, Successful, %StatusFileFilePath%, Status, Locals
AddToTotalPostsPostedCount()
SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
PauseBetweenPosts()
DevModeMsgBox("done!")
SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
PauseBetweenPosts()
DevModeMsgBox("done!")
Message = Post Publish Successful
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Message = Post Publish Successful
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Return
; -------------------------------/Locals-------------------------------
Return
; -------------------------------/Locals-------------------------------

View File

@@ -35,15 +35,6 @@ if(Status){
Return
}
; DevModeMsgBox("popup activated?")
; click into popup box to make sure it's activated
/*xpath = //div[@class='ql-editor ql-blank']//div
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
DevModeMsgBox(Status)
*/
; DevModeMsgBox("inputting post now after clickng")
; input post title and body with javascript
JsToExecute = document.querySelector(".ql-editor").innerText = '%JSPostTitleAndBody%';
@@ -103,6 +94,11 @@ if(ImageAttachmentFilepath != ""){
sleep, 10000
}
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
; Click the "Post" button
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
@@ -119,11 +115,6 @@ IniWrite, Successful, %StatusFileFilePath%, Status, MeWe
AddToTotalPostsPostedCount()
PauseBetweenPosts()
DevModeMsgBox("done!")
Message = Post Publish Successful
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")

View File

@@ -173,6 +173,11 @@ else, { ; otherwise, input just text
; sleep, 2000
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
loop, 3 {
@@ -194,30 +199,32 @@ loop, 3 {
}
; msgbox, ork?
; click submit button
js = document.querySelector("button[class='m-button m-button--blue m-button--small m-button--dropdown'] span[class='ng-star-inserted']").click();
try status := driver.executeScript(js)
catch e {
Message = Clicking submit button with JS resulted in status: %status%
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Message = Trying to click the Post button using Xpath
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Xpath = (//span[@class='ng-star-inserted'][normalize-space()='Post'])[2]
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
if(Status){
Message = Failed to Submit Post after 2 different attempts
Loop, 5 {
if(A_index = 5){
Message = Failed to submit after 5 attempts.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
}
js = document.querySelector("button[class='m-button m-button--blue m-button--small m-button--dropdown'] span[class='ng-star-inserted']").click();
try status := driver.executeScript(js)
sleep, 500
; check if Post button still exists
js = return document.querySelector("m-composer__base[ismodal='true'] m-button[data-ref='post-button'] div").innerText
try, Status := driver.executeScript(js) ;Executes a Javascript on the webpage, mostly used for buttons.
if(!Status){
; msgbox, successfully submitted after %A_index% attempts
break
}
sleep, 1000
}
SaveOrPostProgress(Message:="Waiting 5 seconds to confirm post got submitted",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")

View File

@@ -65,59 +65,47 @@ else, {
try, driver.switchToalert().accept() ; if text exists Steemit will pop up menu asking for confirmation for clearing
}
/*
*/
Message = Inputting Post Content
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
; Input title
Xpath = //input[@placeholder='Title']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,StringTextContent:=PostTitle)
if(Status){
Message = Login Expired. Please log back in
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
Xpath = //textarea[@placeholder='Write your story...']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=PostBody)
if(Status){
Message = Failed to input Post Body
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
/* if(Status){
Message = Post Failed, Please check login status
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
; Click "Accept" popup that asks if you're sure you want to clear post
try, driver.switchToalert().accept()
if(ImageAttachmentFilepath != ""){
Message = Attaching Thumbnail
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
*/
Message = Inputting Post Content
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
; Input title
Xpath = //input[@placeholder='Title']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,StringTextContent:=PostTitle)
if(Status){
Message = Login Expired. Please log back in
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
Xpath = //textarea[@placeholder='Write your story...']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=PostBody)
if(Status){
Message = Failed to input Post Body
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
if(ImageAttachmentFilepath != ""){
Message = Attaching Thumbnail
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
Xpath = //input[@type='file']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=ImageAttachmentFilepath)
if(Status){
Message = Failed to attach Image
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
Xpath = //input[@type='file']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=ImageAttachmentFilepath)
if(Status){
Message = Failed to attach Image
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
/*
Xpath = //a[normalize-space()='selecting them']
@@ -161,33 +149,35 @@ else, {
if(A_index = 8) ; Steemit only allows 8 tags
Break
}
/*
*/
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
Message = Submitting Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
Message = Submitting Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
; Click Submit Button
Xpath = //button[@type='submit']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
if(Status){
Message = Failed to submit Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
; Click Submit Button
Xpath = //button[@type='submit']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
if(Status){
Message = Failed to submit Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
IniWrite, Successful, %StatusFileFilePath%, Status, Steemit
AddToTotalPostsPostedCount()
IniWrite, Successful, %StatusFileFilePath%, Status, Steemit
AddToTotalPostsPostedCount()
Message = Post Publish Successful
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
PauseBetweenPosts()
DevModeMsgBox("done!")
Message = Post Publish Successful
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Return
;-----------------------/Steemit-------------------------
Return
;-----------------------/Steemit-------------------------

View File

@@ -61,7 +61,29 @@ if(InStr(LoginStatus, "Log In")){ ; need to log in
Message = Inputting Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
; Click on "Start your post by clicking here"
; click the "Create Post" button
js = document.querySelector("div[class='new_post'] div[class='flat_button for-new_post']").click(); ; Send content through javascript (Great for getting around emoji chrome limitaitons)
try, driver.executeScript(js)
sleep, 1000
; post button at bottom right corner
Selector = ".flat_button.for-post_form"
; check if post button exists
js = return document.querySelector(%Selector%).innerText
try, Status := driver.executeScript(js)
if(!Status){
Message = Post Failed. Failed to click on "Create Post" button
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
/*; Click on "Start your post by clicking here"
Xpath = //div[contains(text(),'Create Post')]
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
@@ -84,6 +106,7 @@ if(Status){
}
}
}
*/
; sleep, 5000
; msgbox
@@ -102,34 +125,51 @@ if(Status){
; Input Text into pop-up edit box
SaveOrPostProgress(Message:="Inputting Post Content",PostType:="Tooltip,ErrorLoggingTextFile")
; click on heading format button
Xpath = //button[@title='Heading']//i
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
sleep, 500
Xpath = //trix-editor[@role='textbox']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,StringTextContent:=PostTitleAndBody)
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=PostTitle)
if(Status){
Message = Failed to Input Post using Direct Xpath. Trying with Relative
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Xpath = /html/body/div/div[3]/div[2]/div[2]/div/div[1]/form/div[2]/div[1]/trix-editor
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,StringTextContent:=PostTitleAndBody)
if(Status){
Message = Failed to Input Post using Relative Xpath. Trying with Javascript
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
SubscribeStarJSDescription := FormatTextToJSText(PostTitleAndBody)
js = document.querySelector("trix-editor[role='textbox']").value = "%SubscribeStarJSDescription%";
try driver.executeScript(js) ;Executes a Javascript on the webpage, mostly used for buttons.
catch e {
Message = Failed to Input Post Contents (E#8281)
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
; msgbox, 3
}
Message = Failed to input Post Title
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
; driver.FindElementByXPath(Xpath).SendKeys(PostTitle)
sleep, 500
driver.FindElementByXPath(Xpath).SendKeys("`n`n")
sleep, 500
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=PostBody)
if(Status){
Message = Failed to input Post Body
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
; check if value was input
js = return document.querySelector("trix-editor[role='textbox']").innerText
try, Status := driver.executeScript(js)
if(!Status){
Message = Failed to input Post Content (E#8282)
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
else, { ; if input successfully, post to error log
String := SubStr(Status, 1, 30)
Message = Post Content that got input: %String% ...
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
}
; Attach an image if a filepath was provided
if(ImageAttachmentFilepath != ""){
SaveOrPostProgress(Message:="Attaching Image",PostType:="Tooltip,ErrorLoggingTextFile")
@@ -138,32 +178,71 @@ if(ImageAttachmentFilepath != ""){
Xpath = //input[@multiple='multiple']
driver.FindElementByXPath(Xpath).SendKeys(ImageAttachmentFilepath)
/* Xpath = //span[@class='trix-button-group trix-upload-buttons']//button[2]
Status := Selenium_LoopToClickXpathAndWaitForOpenWindow(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
Message = Failed to click on Picture Upload button
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
}
InputStatus := InputFilePathIntoOpenWindow(ImageAttachmentFilepath)
if(InputStatus = "Failed")
{
Message = Upload Failed:`nUnable to Find "Open File" window to input filepath into
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,DiscordErrorLogging")
Return
}
*/
SaveOrPostProgress(Message:="Waiting 5 seconds for Image to finish uploading",PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 5000
}
SaveOrPostProgress(Message:="Waiting 5 seconds for Image to finish uploading",PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 5000
}
; Click the post Button
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
; Click the post Button
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
Xpath = //button[contains(text(),'Post')]
; post button at bottom right corner
Selector = ".flat_button.for-post_form"
; check if post button exists
js = return document.querySelector(%Selector%).innerText
try, Status := driver.executeScript(js)
if(!Status){
Message = Post Failed. Unable to find Post button using usual method.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
else, {
Message = Post Button Exists and has the text: %Status%
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,DiscordErrorLogging")
}
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
; click submit button
js = document.querySelector(%Selector%).click()
try, Status := driver.executeScript(js)
; Msgbox % "Status: " Status
sleep, 2000
; check if post button still exists
js = return document.querySelector(%Selector%).innerText
try, Status := driver.executeScript(js)
if(Status){
Message = Post Failed. Failed to click Post button using usual method.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
; double double check that post got posted by checking if able to grab text that was just input
js = return document.querySelector("trix-editor[role='textbox']").innerText
try, Status := driver.executeScript(js)
if(Status){
Message = Post Failed. Input box still exists on page but no errors were thrown when clicking post button
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
SaveDriverURLOFErrorPage()
Return
}
/* Xpath = //button[contains(text(),'Post')]
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
Message = Failed to Submit Post
@@ -172,6 +251,7 @@ if(ImageAttachmentFilepath != ""){
Return
}
*/
IniWrite, Successful, %StatusFileFilePath%, Status, SubScribeStar
AddToTotalPostsPostedCount()

View File

@@ -1,196 +0,0 @@
; -------------------------------ThinkSpot-------------------------------
PostToThinkSpot:
CurrentSite := "Thinkspot"
if(PostTags = ""){
Message = Skipped: No Post Tags
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
IniWrite, Skipped: No Post Tags, %StatusFileFilePath%, Status, Thinkspot
Return
}
SaveOrPostProgress(Message:="Navigating to Post Creation Page",PostType:="Tooltip,ErrorLoggingTextFile")
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
URLAttempt := NavigateFromBaseURLTo("https://www.thinkspot.com/create/post")
if(URLAttempt = "Failed")
Return
Status := CheckCurrentTabForCurrentSite()
if(Status){
Return
}
Message = Checking Login Status
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 1000
try CurrentTabURL := driver.Url
if(InStr(CurrentTabURL, "/sign_in")){
Message = Login Cookies Expired. Trying to Re-Login
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
; SaveDriverURLOFErrorPage()
; Return
Xpath = //input[@name='commit']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=1,SleepLength:=1000)
if(!Status){
Message = Logged in Successfully
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Status := NavigateFromBaseURLTo("https://www.thinkspot.com/create/post")
(Status)?(Return):()
sleep, 2000
}
}
Status := CheckCurrentTabForCurrentSite()
if(Status){
Return
}
/*
Xpath = //a[@href='/create/post']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
Message = Failed to Click "Create Post" button
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
*/
; CLick into the title box of the new post window
Xpath = //div[@id='editorjs']//div[@class='ql-editor ql-blank']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
Message = Failed to Click Into Titlebox: Check Login Status
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
sleep, 500
; Input the Post Title
SaveOrPostProgress(Message:="Inputting Post Title",PostType:="Tooltip,ErrorLoggingTextFile")
Xpath = //input[@id='title']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,SendKeysContent:=PostTitle)
if(Status){
Message = Failed to Input Post Title: Check Login Status
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
; Input post body
if(ImageAttachmentFilepath != "")
PostBody := PostBody . "`n"
SaveOrPostProgress(Message:="Inputting Post Content",PostType:="Tooltip,ErrorLoggingTextFile")
Xpath = //div[@id='editorjs']//p
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,SendKeysContent:=PostBody)
if(Status){
Message = Failed to Input Post Body: Check Login Status
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
; Input Post Tags
Xpath = //span[@role='textbox']
TagsArray := StrSplit(PostTags, ",")
TagsArrayLength := TagsArray.Length() ; Save total number of items in the array
loop, %TagsArrayLength%{
Tag := TagsArray[A_Index]
Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,SendKeysContent:=Tag)
try driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.ENTER)
}
if(ImageAttachmentFilepath != ""){
; Click "Image" button
SaveOrPostProgress(Message:="Attaching Image",PostType:="Tooltip,ErrorLoggingTextFile")
; Insert image by sending it directly.
; elements aren't loaded until the attach image button is pressed though, so defeats the purpose
/*Xpath = //input[@class='ql-image']
try driver.FindElementByXPath(Xpath).SendKeys(ImageAttachmentFilepath)
*/
Xpath = //button[@class='ql-image']
Status := Selenium_LoopToClickXpathAndWaitForOpenWindow(Xpath:=Xpath,NumOfLoops:=10,SleepLength:=1000)
if(Status){
Message = Failed to click "Attach Image" button
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Xpath = //input[@class='ql-image']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=ImageAttachmentFilepath)
if(Status){
Message = Failed to Attach Image (E#7611)
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
}
else, {
InputStatus := InputFilePathIntoOpenWindow(ImageAttachmentFilepath)
if(InputStatus = "Failed")
{
sleep, 2000
Xpath = //i[@class='material-icons-outlined'][normalize-space()='image'] ; give it a second try :fingerscrossed:
Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
InputStatus := InputFilePathIntoOpenWindow(ImageAttachmentFilepath)
if(InputStatus)
{ ; Try sending directly to element
Xpath = //input[@class='ql-image']
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=ImageAttachmentFilepath)
if(Status){
Message = Failed to Attach Image (E#7612)
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
}
}
}
SaveOrPostProgress(Message:="Waiting 10 seconds for Image to finish uploading",PostType:="Tooltip,ErrorLoggingTextFile")
sleep, 10000
}
; Click the Post button
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
Xpath = //button[normalize-space()='Post']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
Message = Failed to Submit Post
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
IniWrite, Successful, %StatusFileFilePath%, Status, Thinkspot
AddToTotalPostsPostedCount()
PauseBetweenPosts()
; dismiss the pop up that appears for some reason
; try driver.switchToalert().accept()
DevModeMsgBox("done!")
Message = Post Publish Successful
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Return
; -------------------------------/ThinkSpot-------------------------------

View File

@@ -108,14 +108,29 @@ if(ImageAttachmentFilepath != ""){
sleep, 5000
}
/*; Get User confirmation if they have the setting checked
if(ConfirmBeforeSubmit){
Status := ConfirmBeforeSubmitMsgboxFunc()
if(Status){
Message := Status
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
}
*/
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
return
}
; Click on "Post" button
sleep, 2000
SaveOrPostProgress(Message:="Submitting Post",PostType:="Tooltip,ErrorLoggingTextFile")
Xpath = //button[normalize-space()='Post $0.02']
Xpath = //button[@id='composer-post-btn']
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=4,SleepLength:=1000)
if(Status){
Message = Failed to click on Submit Post Button

View File

@@ -32,7 +32,7 @@ Automated posting to the following social media platforms, utilizing either the
- Open Chrome and type in `about::version` into the URL bar. The very first line will tell you what Chrome version you have
- After downloading, extract “chromedriver_win32.zip” and move the extracted chromedriver.exe to: `C:\Program Files\SeleniumBasic\chromedriver.exe`
- NOTE: The chromedriver will need to be re-downloaded whenever Chrome updates to keep up with API changes
4. [Download the latest .exe of the Poster](https://git.zinchuk.xyz/yuriy/Freedomain-Social-Media-Poster/releases)
4. [Download the latest .exe of the Poster](/yuriy/social-media-poster/releases)
- When run, the poster will automatically create the folders and files it requires in the directory it's run from.
# Settings.ini

BIN
Settings.ini Normal file

Binary file not shown.

2
Version.ini Normal file
View File

@@ -0,0 +1,2 @@
[Social-Media-Poster]
Version=2.90