-
Notifications
You must be signed in to change notification settings - Fork 2
/
linkdun.py
121 lines (105 loc) · 3.84 KB
/
linkdun.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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import requests
import json
class Linkedin:
def __init__(self, organizationID, token):
self.organizationID = organizationID
self.token = token
self.baseurl = "https://api.linkedin.com"
self.headers = {
'Content-Type': 'application/json',
'X-Restli-Protocol-Version': '2.0.0',
'Authorization': 'Bearer ' + self.token
}
def run(self):
content = "Merhaba, ben robin_scherbotsky. \n #cyberdetails #robin_scherbotsky"
imagePath = "sqlimother.png"
check = self.registerImage()
if check:
uploadUrl = check[0]
asset = check[1]
if self.uploadImage(uploadUrl, imagePath):
self.sendPostJustText(content)
# self.sendPostWithImage(asset, content)
def post(self, path, json):
return requests.post(self.baseurl + path, headers=self.headers, json=json)
def convertJson(self, data):
return json.loads(data)
def registerImage(self):
postData = {
"registerUploadRequest": {
"owner": "urn:li:organization:" + self.organizationID,
"recipes": [
"urn:li:digitalmediaRecipe:feedshare-image"
],
"serviceRelationships": [
{
"identifier": "urn:li:userGeneratedContent",
"relationshipType": "OWNER"
}
]
}
}
response = self.post('/v2/assets?action=registerUpload', postData)
data = self.convertJson(response.content)
uploadUrl = data['value']['uploadMechanism']['com.linkedin.digitalmedia.uploading.MediaUploadHttpRequest'][
'uploadUrl']
asset = data['value']['asset']
if response.status_code == 200:
return uploadUrl, asset
def uploadImage(self, uploadUrl, imagePath):
headers = {
'Authorization': 'Bearer ' + self.token
}
with open(imagePath, 'rb') as image:
x = requests.put(uploadUrl, headers=headers, data=image)
if x.status_code == 201:
return True
def sendPostWithImage(self, asset, content):
postData = {
"author": "urn:li:organization:" + self.organizationID,
"lifecycleState": "PUBLISHED",
"specificContent": {
"com.linkedin.ugc.ShareContent": {
"media": [
{
"media": asset,
"status": "READY",
"title": {
"attributes": [],
"text": ""
}
}
],
"shareCommentary": {
"text": content
},
"shareMediaCategory": "IMAGE"
}
},
"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
}
self.post('/v2/ugcPosts', postData)
def sendPostJustText(self, content):
postData = {
"author": "urn:li:organization:" + self.organizationID,
"lifecycleState": "PUBLISHED",
"specificContent": {
"com.linkedin.ugc.ShareContent": {
"shareCommentary": {
"text": content
},
"shareMediaCategory": "NONE"
}
},
"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
}
self.post('/v2/ugcPosts', postData)
if __name__ == "__main__":
organizationID = ''
token = ''
app = Linkedin(organizationID, token)
app.run()