Skip to content

Instantly share code, notes, and snippets.

@accidentalrebel
Created October 12, 2017 00:32
Show Gist options
  • Save accidentalrebel/79fda4536f799f4a4873e55aff21a977 to your computer and use it in GitHub Desktop.
Save accidentalrebel/79fda4536f799f4a4873e55aff21a977 to your computer and use it in GitHub Desktop.
Searches for Vape related groups and saves the scraped data (Group name and number of members). The Haxe script generates a runnable iMacros .imm file (See facebook_vape_group_lister.iim)
class Main
{
static function main()
{
var test : String = "test";
var macroString : String = "";
macroString += "
VERSION BUILD=11.5.498.2403
TAB T=1
TAB CLOSEALLOTHERS
URL GOTO=\"https://www.facebook.com/search/groups/?q=vape\"
";
for ( index in 0...200 ) {
macroString += "
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop " + (index+1) + "
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
URL GOTO=javascript:window.scrollBy(0,20000)
TAG POS={{currentLoop}} TYPE=A ATTR=class:\"_fbBrowseXuiResult__profileImageLink *\" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:\"serp_result_link*\" EXTRACT=TXT
SET groupName EVAL(\"var groupName= \\\"{{!EXTRACT}}\\\"; groupName.replace(/(\\\\r\\\\n|\\\\r|\\\\n)/gm,\\\"\\\");\")
TAG POS={{currentLoop}} TYPE=A ATTR=class:\"_fbBrowseXuiResult__profileImageLink *\" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:\"serp_result_link*\" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:\"{\\\"ct\\\":\\\"sub_headers\\\"}\" EXTRACT=TXT
SET groupType EVAL(\"var extracted = \\\"{{!EXTRACT}}\\\"; if ( extracted == \\\"Closed GroupClosed Group\\\" ) { \\\"Closed Group\\\"; } else if ( extracted == \\\"Secret GroupSecret Group\\\" ) { \\\"Secret Group\\\"; } else if ( extracted == \\\"Public GroupPublic Group\\\" ) { \\\"Public Group\\\"; } else { extracted; }\")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:\"_fbBrowseXuiResult__profileImageLink *\" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:\"*\" EXTRACT=TXT
SET hasJoined EVAL(\"if( \\\"{{!EXTRACT}}\\\" == \\\"Join\\\" ) { \\\"NO\\\"; } else { \\\"YES\\\"; }\")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:\"_fbBrowseXuiResult__profileImageLink *\" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:\"_52eh\" EXTRACT=TXT
SET membersCount EVAL(\"var extract = \\\"{{!EXTRACT}}\\\"; extract = extract.replace(\\\" members\\\", \\\"\\\"); extract = extract.replace(\\\",\\\", \\\"\\\"); parseInt(extract);\")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:\"_fbBrowseXuiResult__profileImageLink *\" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:\"_52eh\" EXTRACT=TXT
SET membersCount EVAL(\"var extract = \\\"{{!EXTRACT}}\\\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\\\" members\\\", \\\"\\\"); extract = extract.replace(\\\",\\\", \\\"\\\"); parseInt(extract); } else { {{membersCount}}; }\")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
\n";
}
macroString += "
TAB CLOSEALLOTHERS
TAB T=1
TAB CLOSE
";
sys.io.File.saveContent("C:\\Users\\ARebel\\Dropbox\\imacros\\macros\\facebook_vape_group_lister.iim", macroString);
}
}
VERSION BUILD=11.5.498.2403
TAB T=1
TAB CLOSEALLOTHERS
URL GOTO="https://www.facebook.com/search/groups/?q=vape"
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 1
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 2
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 3
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 4
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 5
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 6
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 7
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 8
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 9
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
'''''''''''''''''''''''''''''''''''''''''''''''''
'' INIT
'''''''''''''''''''''''''''''''''''''''''''''''''
SET !EXTRACT_TEST_POPUP NO
SET defaultTimeOutStep 10
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET currentLoop 10
SET nextLoop {{currentLoop}}
ADD nextLoop 1
'''''''''''''''''''''''''''''''''''''''''''''''''
'' START
'''''''''''''''''''''''''''''''''''''''''''''''''
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=TXT
SET groupName EVAL("var groupName= \"{{!EXTRACT}}\"; groupName.replace(/(\\r\\n|\\r|\\n)/gm,\"\");")
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"serp_result_link*" EXTRACT=HREF
SET groupURL {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=R1 TYPE=DIV ATTR=data-bt:"{\"ct\":\"sub_headers\"}" EXTRACT=TXT
SET groupType EVAL("var extracted = \"{{!EXTRACT}}\"; if ( extracted == \"Closed GroupClosed Group\" ) { \"Closed Group\"; } else if ( extracted == \"Secret GroupSecret Group\" ) { \"Secret Group\"; } else if ( extracted == \"Public GroupPublic Group\" ) { \"Public Group\"; } else { extracted; }")
'' We then try to check if the button Join is present or not
TAG POS={{currentLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R1 TYPE=A ATTR=data-testid:"*" EXTRACT=TXT
SET hasJoined EVAL("if( \"{{!EXTRACT}}\" == \"Join\" ) { \"NO\"; } else { \"YES\"; }")
'' We set the next section as our anchor to get the members count
'' The reason for this is that we want to skip the extracting of the description which is usually
'' long and causes a memory overflow.
SET !TIMEOUT_STEP 1
SET !ERRORIGNORE YES
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-1 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract);")
'' If the previous extract results in NaN. Then wo move back up to get the previous element
'' which is usually the members count
TAG POS={{nextLoop}} TYPE=A ATTR=class:"_fbBrowseXuiResult__profileImageLink *" EXTRACT=TXT
SET !EXTRACT NULL
TAG POS=R-2 TYPE=DIV ATTR=class:"_52eh" EXTRACT=TXT
SET membersCount EVAL("var extract = \"{{!EXTRACT}}\"; if ( isNaN({{membersCount}}) ) { extract = extract.replace(\" members\", \"\"); extract = extract.replace(\",\", \"\"); parseInt(extract); } else { {{membersCount}}; }")
SET !ERRORIGNORE NO
SET !TIMEOUT_STEP {{defaultTimeOutStep}}
SET !EXTRACT NULL
ADD !EXTRACT {{groupName}}
ADD !EXTRACT {{membersCount}}
ADD !EXTRACT {{hasJoined}}
ADD !EXTRACT {{groupType}}
ADD !EXTRACT {{groupURL}}
SAVEAS TYPE=EXTRACT FOLDER=* FILE=*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment