-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgnusocialmediauploader.py
104 lines (80 loc) · 2.71 KB
/
gnusocialmediauploader.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/usr/bin/env python3
import pathlib
import random
import logging
import getpass
import sys
import gnusocial as gs
import gnusocial.media
import gnusocial.statuses
logging.basicConfig(level=logging.DEBUG)
SERVER_URL = 'https://shitposter.club'
USERNAME = 'cow2001'
PASSWORD = ''
SOURCE_IMAGE_DIRECTORY = pathlib.Path('source_directory').absolute()
SINK_IMAGE_DIRECTORY = pathlib.Path('sink_directory').absolute()
STATUS = "An image."
def get_random_image_path(source_image_directory):
return random.choice(list(source_image_directory.glob('*'))).absolute()
def upload_image(image_absolute_path,
server_url,
username,
password,
):
with image_absolute_path.open('rb') as image_file:
return gs.media.upload(server_url=server_url,
media=image_file,
username=username,
password=password,
)
def move_image(image_path,
sink_image_directory,
):
image_path.rename(sink_image_directory.joinpath(image_path.name))
def update_status(#image_absolute_path,
server_url,
status,
username,
password,
media_ids
):
result = gs.statuses.update(server_url=server_url,
username=username,
password=password,
status=status,
media_ids=media_ids,
)
return result
def main(server_url,
username,
password,
source_image_directory,
sink_image_directory,
status,
):
random_image_absolute_path = get_random_image_path(source_image_directory)
upload_response = upload_image(image_absolute_path=random_image_absolute_path,
server_url=server_url,
username=username,
password=password,
)
media_ids = [upload_response['media_id']]
update_status_response = update_status(
server_url=server_url,
status=status,
username=username,
password=password,
media_ids=media_ids,
)
logging.debug(str(update_status_response))
move_image(random_image_absolute_path,
sink_image_directory=sink_image_directory)
if __name__ == '__main__':
actual_password = PASSWORD if PASSWORD != '' else getpass.getpass()
main(server_url=SERVER_URL,
username=USERNAME,
password=actual_password,
sink_image_directory=SINK_IMAGE_DIRECTORY,
source_image_directory=SOURCE_IMAGE_DIRECTORY,
status=STATUS
)