Upload WarOnline_Chat.py
Browse files- WarOnline_Chat.py +64 -0
WarOnline_Chat.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This is an automation of Bot to post to a specific thread in the forum.
|
| 2 |
+
|
| 3 |
+
import requests
|
| 4 |
+
from bs4 import BeautifulSoup
|
| 5 |
+
|
| 6 |
+
# Define the login URL and the thread URL
|
| 7 |
+
login_url = 'https://waronline.org/fora/index.php?login/login'
|
| 8 |
+
thread_url = 'https://waronline.org/fora/index.php?threads/Творчество-роботов-нейросети-и-т-п.17617/'
|
| 9 |
+
#thread_url = 'https://waronline.org/fora/index.php?threads/%D0%A2%D0%B2%D0%BE%D1%80%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE-%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%BE%D0%B2-%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D1%81%D0%B5%D1%82%D0%B8-%D0%B8-%D1%82-%D0%BF.17617/'
|
| 10 |
+
|
| 11 |
+
# Define the login credentials
|
| 12 |
+
username = 'WarBot'
|
| 13 |
+
password = 'naP2tion'
|
| 14 |
+
|
| 15 |
+
# Start a session to persist the login cookie across requests
|
| 16 |
+
session = requests.Session()
|
| 17 |
+
|
| 18 |
+
# Retrieve the login page HTML to get the CSRF token
|
| 19 |
+
login_page_response = session.get(login_url)
|
| 20 |
+
soup = BeautifulSoup(login_page_response.text, 'html.parser')
|
| 21 |
+
csrf_token = soup.find('input', {'name': '_xfToken'})['value']
|
| 22 |
+
|
| 23 |
+
# Login to the website
|
| 24 |
+
login_data = {
|
| 25 |
+
'login': username,
|
| 26 |
+
'password': password,
|
| 27 |
+
'remember': '1',
|
| 28 |
+
'_xfRedirect': thread_url,
|
| 29 |
+
'_xfToken': csrf_token
|
| 30 |
+
}
|
| 31 |
+
response = session.post(login_url, data=login_data)
|
| 32 |
+
|
| 33 |
+
# Check if the login was successful
|
| 34 |
+
if 'Invalid login' in response.text:
|
| 35 |
+
print('Login failed!')
|
| 36 |
+
exit()
|
| 37 |
+
|
| 38 |
+
# Retrieve the thread page HTML
|
| 39 |
+
response = session.get(thread_url)
|
| 40 |
+
|
| 41 |
+
# Parse the HTML with BeautifulSoup
|
| 42 |
+
soup = BeautifulSoup(response.text, 'html.parser')
|
| 43 |
+
|
| 44 |
+
# Extract the _xfToken value from the hidden form field
|
| 45 |
+
xf_token = soup.find('input', {'name': '_xfToken'}).get('value')
|
| 46 |
+
|
| 47 |
+
# Post a message to the thread
|
| 48 |
+
post_data = {
|
| 49 |
+
'message_html': 'Hello world!', # Replace with your message
|
| 50 |
+
'last_date': '', # Leave empty for a new post
|
| 51 |
+
'watch_thread': '1', # Subscribe to the thread (optional)
|
| 52 |
+
'_xfToken': xf_token, # Retrieve the token from the page HTML '1676385710,1cdf871cad6915a8f95aa9ddb0e03cc9'
|
| 53 |
+
'_xfRequestUri': thread_url, # Retrieve from the page HTML
|
| 54 |
+
'_xfWithData': '1', # Required for some XenForo versions
|
| 55 |
+
'_xfResponseType': 'json' # Receive the response in JSON format
|
| 56 |
+
}
|
| 57 |
+
response = session.post(thread_url, data=post_data)
|
| 58 |
+
|
| 59 |
+
# Check if the post was successful
|
| 60 |
+
if not response.ok:
|
| 61 |
+
print('Post failed!')
|
| 62 |
+
exit()
|
| 63 |
+
|
| 64 |
+
print('Post submitted successfully.')
|