Commit f6d4b30bcd2f3e96a41aebfd544654f316466495
Committed by
GitHub
1 parent
8da3a65f
Delete channel.py
Showing
1 changed file
with
0 additions
and
328 deletions
LINETCR/Api/channel.py deleted
| 1 | -# -*- coding: utf-8 -*- | ||||
| 2 | -import os, sys, json | ||||
| 3 | -path = os.path.join(os.path.dirname(__file__), '../lib/') | ||||
| 4 | -sys.path.insert(0, path) | ||||
| 5 | -import requests | ||||
| 6 | - | ||||
| 7 | -from thrift.transport import THttpClient | ||||
| 8 | -from thrift.protocol import TCompactProtocol | ||||
| 9 | - | ||||
| 10 | -from curve import LineService | ||||
| 11 | -from curve.ttypes import * | ||||
| 12 | -import tempfile | ||||
| 13 | - | ||||
| 14 | -class Channel: | ||||
| 15 | - client = None | ||||
| 16 | - | ||||
| 17 | - host = "gd2.line.naver.jp" | ||||
| 18 | - http_query_path = "/S4" | ||||
| 19 | - channel_query_path = "/CH4" | ||||
| 20 | - | ||||
| 21 | - UA = "Line/1.4.17" | ||||
| 22 | - LA = "IOSIPAD\x097.14.0\x09iPhone_OS\x0910.12.0" | ||||
| 23 | - | ||||
| 24 | - | ||||
| 25 | - authToken = None | ||||
| 26 | - mid = None | ||||
| 27 | - channel_access_token = None | ||||
| 28 | - token = None | ||||
| 29 | - obs_token = None | ||||
| 30 | - refresh_token = None | ||||
| 31 | - | ||||
| 32 | - def __init__(self, authToken): | ||||
| 33 | - self.authToken = authToken | ||||
| 34 | - self.transport = THttpClient.THttpClient('https://gd2.line.naver.jp:443'+self.http_query_path) | ||||
| 35 | - self.transport.setCustomHeaders({ "User-Agent" : self.UA, | ||||
| 36 | - "X-Line-Application" : self.LA, | ||||
| 37 | - "X-Line-Access": self.authToken | ||||
| 38 | - }) | ||||
| 39 | - self.transport.open() | ||||
| 40 | - self.protocol = TCompactProtocol.TCompactProtocol(self.transport) | ||||
| 41 | - self.client = LineService.Client(self.protocol) | ||||
| 42 | - self.mid = self.client.getProfile().mid | ||||
| 43 | - self.transport.path = self.channel_query_path | ||||
| 44 | - | ||||
| 45 | - def login(self): | ||||
| 46 | - result = self.client.issueChannelToken("1341209850") | ||||
| 47 | - | ||||
| 48 | - self.channel_access_token = result.channelAccessToken | ||||
| 49 | - self.token = result.token | ||||
| 50 | - self.obs_token = result.obsToken | ||||
| 51 | - self.refresh_token = result.refreshToken | ||||
| 52 | - | ||||
| 53 | - print "channelAccessToken:" + result.channelAccessToken | ||||
| 54 | - print "token:" + result.token | ||||
| 55 | - print "obs_token:" + result.obsToken | ||||
| 56 | - print "refreshToken:" + result.refreshToken | ||||
| 57 | - | ||||
| 58 | - def new_post(self, text): | ||||
| 59 | - | ||||
| 60 | - header = { | ||||
| 61 | - "Content-Type": "application/json", | ||||
| 62 | - "User-Agent" : self.UA, | ||||
| 63 | - "X-Line-Mid" : self.mid, | ||||
| 64 | - "x-lct" : self.channel_access_token, | ||||
| 65 | - } | ||||
| 66 | - | ||||
| 67 | - payload = { | ||||
| 68 | - "postInfo" : { "readPermission" : { "type" : "ALL" } }, | ||||
| 69 | - "sourceType" : "TIMELINE", | ||||
| 70 | - "contents" : { "text" : text } | ||||
| 71 | - } | ||||
| 72 | - | ||||
| 73 | - r = requests.post( | ||||
| 74 | - "http://" + self.host + "/mh/api/v24/post/create.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_75_0"> | 75 | - headers = header, | ||
| 76 | - data = json.dumps(payload) | ||||
| 77 | - ) | ||||
| 78 | - | ||||
| 79 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_80_0"> | 80 | - | ||
| 81 | - def postPhoto(self,text,path): | ||||
| 82 | - header = { | ||||
| 83 | - "Content-Type": "application/json", | ||||
| 84 | - "User-Agent" : self.UA, | ||||
| 85 | - "X-Line-Mid" : self.mid, | ||||
| 86 | - "x-lct" : self.channel_access_token, | ||||
| 87 | - } | ||||
| 88 | - | ||||
| 89 | - payload = { | ||||
| 90 | - "postInfo" : { "readPermission" : { "type" : "ALL" } }, | ||||
| 91 | - "sourceType" : "TIMELINE", | ||||
| 92 | - "contents" : { "text" : text ,"media" : [{u'objectId': u'F57144CF9ECC4AD2E162E68554D1A8BD1a1ab0t04ff07f6'}]} | ||||
| 93 | - } | ||||
| 94 | - r = requests.post( | ||||
| 95 | - "http://" + self.host + "/mh/api/v24/post/create.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_96_0"> | 96 | - headers = header, | ||
| 97 | - data = json.dumps(payload) | ||||
| 98 | - ) | ||||
| 99 | - | ||||
| 100 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_101_0"> | 101 | - | ||
| 102 | - def like(self, mid, postid, likeType=1001): | ||||
| 103 | - | ||||
| 104 | - header = { | ||||
| 105 | - "Content-Type" : "application/json", | ||||
| 106 | - "X-Line-Mid" : self.mid, | ||||
| 107 | - "x-lct" : self.channel_access_token, | ||||
| 108 | - } | ||||
| 109 | - | ||||
| 110 | - payload = { | ||||
| 111 | - "likeType" : likeType, | ||||
| 112 | - "activityExternalId" : postid, | ||||
| 113 | - "actorId" : mid | ||||
| 114 | - } | ||||
| 115 | - | ||||
| 116 | - r = requests.post( | ||||
| 117 | - "http://" + self.host + "/mh/api/v23/like/create.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_118_0"> | 118 | - headers = header, | ||
| 119 | - data = json.dumps(payload) | ||||
| 120 | - ) | ||||
| 121 | - | ||||
| 122 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_123_0"> | 123 | - | ||
| 124 | - def comment(self, mid, postid, text): | ||||
| 125 | - header = { | ||||
| 126 | - "Content-Type" : "application/json", | ||||
| 127 | - "X-Line-Mid" : self.mid, | ||||
| 128 | - "x-lct" : self.channel_access_token, | ||||
| 129 | - } | ||||
| 130 | - | ||||
| 131 | - payload = { | ||||
| 132 | - "commentText" : text, | ||||
| 133 | - "activityExternalId" : postid, | ||||
| 134 | - "actorId" : mid | ||||
| 135 | - } | ||||
| 136 | - | ||||
| 137 | - r = requests.post( | ||||
| 138 | - "http://" + self.host + "/mh/api/v23/comment/create.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_139_0"> | 139 | - headers = header, | ||
| 140 | - data = json.dumps(payload) | ||||
| 141 | - ) | ||||
| 142 | - | ||||
| 143 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_144_0"> | 144 | - | ||
| 145 | - def activity(self, limit=20): | ||||
| 146 | - | ||||
| 147 | - header = { | ||||
| 148 | - "Content-Type" : "application/json", | ||||
| 149 | - "X-Line-Mid" : self.mid, | ||||
| 150 | - "x-lct" : self.channel_access_token, | ||||
| 151 | - } | ||||
| 152 | - | ||||
| 153 | - r = requests.get( | ||||
| 154 | - "http://" + self.host + "/tl/mapi/v21/activities?postLimit=" + str(limit), | ||||
| 155 | - headers = header | ||||
| 156 | - ) | ||||
| 157 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_158_0"> | 158 | - def getAlbum(self, gid): | ||
| 159 | - | ||||
| 160 | - header = { | ||||
| 161 | - "Content-Type" : "application/json", | ||||
| 162 | - "X-Line-Mid" : self.mid, | ||||
| 163 | - "x-lct": self.channel_access_token, | ||||
| 164 | - | ||||
| 165 | - } | ||||
| 166 | - | ||||
| 167 | - r = requests.get( | ||||
| 168 | - "http://" + self.host + "/mh/album/v3/albums?type=g&sourceType=TALKROOM&homeId=" + gid, | ||||
| 169 | - headers = header | ||||
| 170 | - ) | ||||
| 171 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_172_0"> | 172 | - def changeAlbumName(self,gid,name,albumId): | ||
| 173 | - header = { | ||||
| 174 | - "Content-Type" : "application/json", | ||||
| 175 | - "X-Line-Mid" : self.mid, | ||||
| 176 | - "x-lct": self.channel_access_token, | ||||
| 177 | - | ||||
| 178 | - } | ||||
| 179 | - payload = { | ||||
| 180 | - "title": name | ||||
| 181 | - } | ||||
| 182 | - r = requests.put( | ||||
| 183 | - "http://" + self.host + "/mh/album/v3/album/" + albumId + "?homeId=" + gid, | ||||
| 184 | - headers = header, | ||||
| 185 | - data = json.dumps(payload), | ||||
| 186 | - ) | ||||
| 187 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_188_0"> | 188 | - def deleteAlbum(self,gid,albumId): | ||
| 189 | - header = { | ||||
| 190 | - "Content-Type" : "application/json", | ||||
| 191 | - "X-Line-Mid" : self.mid, | ||||
| 192 | - "x-lct": self.channel_access_token, | ||||
| 193 | - | ||||
| 194 | - } | ||||
| 195 | - r = requests.delete( | ||||
| 196 | - "http://" + self.host + "/mh/album/v3/album/" + albumId + "?homeId=" + gid, | ||||
| 197 | - headers = header, | ||||
| 198 | - ) | ||||
| 199 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_200_0"> | 200 | - def getNote(self,gid, commentLimit, likeLimit): | ||
| 201 | - header = { | ||||
| 202 | - "Content-Type" : "application/json", | ||||
| 203 | - "X-Line-Mid" : self.mid, | ||||
| 204 | - "x-lct": self.channel_access_token, | ||||
| 205 | - | ||||
| 206 | - } | ||||
| 207 | - r = requests.get( | ||||
| 208 | - "http://" + self.host + "/mh/api/v27/post/list.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_209_0"> | 209 | - headers = header | ||
| 210 | - ) | ||||
| 211 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_212_0"> | 212 | - | ||
| 213 | - def postNote(self, gid, text): | ||||
| 214 | - header = { | ||||
| 215 | - "Content-Type": "application/json", | ||||
| 216 | - "User-Agent" : self.UA, | ||||
| 217 | - "X-Line-Mid" : self.mid, | ||||
| 218 | - "x-lct" : self.channel_access_token, | ||||
| 219 | - } | ||||
| 220 | - payload = {"postInfo":{"readPermission":{"homeId":gid}}, | ||||
| 221 | - "sourceType":"GROUPHOME", | ||||
| 222 | - "contents":{"text":text} | ||||
| 223 | - } | ||||
| 224 | - r = requests.post( | ||||
| 225 | - "http://" + self.host + "/mh/api/v27/post/create.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_226_0"> | 226 | - headers = header, | ||
| 227 | - data = json.dumps(payload) | ||||
| 228 | - ) | ||||
| 229 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_230_0"> | 230 | - | ||
| 231 | - def getDetail(self, mid): | ||||
| 232 | - header = { | ||||
| 233 | - "Content-Type": "application/json", | ||||
| 234 | - "User-Agent" : self.UA, | ||||
| 235 | - "X-Line-Mid" : self.mid, | ||||
| 236 | - "x-lct" : self.channel_access_token, | ||||
| 237 | - } | ||||
| 238 | - | ||||
| 239 | - r = requests.get( | ||||
| 240 | - "http://" + self.host + "/ma/api/v1/userpopup/getDetail.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_241_0"> | 241 | - headers = header | ||
| 242 | - ) | ||||
| 243 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_244_0"> | 244 | - | ||
| 245 | - def getHome(self,mid): | ||||
| 246 | - header = { | ||||
| 247 | - "Content-Type": "application/json", | ||||
| 248 | - "User-Agent" : self.UA, | ||||
| 249 | - "X-Line-Mid" : self.mid, | ||||
| 250 | - "x-lct" : self.channel_access_token, | ||||
| 251 | - } | ||||
| 252 | - | ||||
| 253 | - r = requests.get( | ||||
| 254 | - "http://" + self.host + "/mh/api/v27/post/list.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_255_0"> | 255 | - headers = header | ||
| 256 | - ) | ||||
| 257 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_258_0"> | 258 | - def getCover(self,mid): | ||
| 259 | - h = self.getHome(mid) | ||||
| 260 | - objId = h["result"]["homeInfo"]["objectId"] | ||||
| 261 | - return "http://dl.profile.line-cdn.net/myhome/c/download.nhn?userid=" + mid + "&oid=" + objId | ||||
| 262 | - def createAlbum(self,gid,name): | ||||
| 263 | - header = { | ||||
| 264 | - "Content-Type": "application/json", | ||||
| 265 | - "User-Agent" : self.UA, | ||||
| 266 | - "X-Line-Mid" : self.mid, | ||||
| 267 | - "x-lct" : self.channel_access_token, | ||||
| 268 | - } | ||||
| 269 | - payload = { | ||||
| 270 | - "type" : "image", | ||||
| 271 | - "title" : name | ||||
| 272 | - } | ||||
| 273 | - r = requests.post( | ||||
| 274 | - "http://" + self.host + "/mh/album/v3/album?count=1&auto=0&homeId=" + gid, | ||||
| 275 | - headers = header, | ||||
| 276 | - data = json.dumps(payload) | ||||
| 277 | - ) | ||||
| 278 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_279_0"> | 279 | - | ||
| 280 | - def createAlbum2(self,gid,name,path,oid): | ||||
| 281 | - header = { | ||||
| 282 | - "Content-Type": "application/json", | ||||
| 283 | - "User-Agent" : self.UA, | ||||
| 284 | - "X-Line-Mid" : self.mid, | ||||
| 285 | - "x-lct" : self.channel_access_token, | ||||
| 286 | - } | ||||
| 287 | - payload = { | ||||
| 288 | - "type" : "image", | ||||
| 289 | - "title" : name | ||||
| 290 | - } | ||||
| 291 | - r = requests.post( | ||||
| 292 | - "http://" + self.host + "/mh/album/v3/album?count=1&auto=0&homeId=" + gid, | ||||
| 293 | - headers = header, | ||||
| 294 | - data = json.dumps(payload) | ||||
| 295 | - ) | ||||
| 296 | - #albumId = r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_297_0"> | 297 | - | ||
| 298 | - | ||||
| 299 | - #h = { | ||||
| 300 | - # "Content-Type": "application/x-www-form-urlencoded", | ||||
| 301 | - # "User-Agent" : self.UA, | ||||
| 302 | - # "X-Line-Mid" : gid, | ||||
| 303 | - # "X-Line-Album" : albumId, | ||||
| 304 | - # "x-lct" : self.channel_access_token, | ||||
| 305 | - #"x-obs-host" : "obs-jp.line-apps.com:443", | ||||
| 306 | - | ||||
| 307 | - #} | ||||
| 308 | - #print r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_309_0"> | 309 | - #files = { | ||
| 310 | - # 'file': open(path, 'rb'), | ||||
| 311 | - #} | ||||
| 312 | - #p = { | ||||
| 313 | - # "userid" : gid, | ||||
| 314 | - # "type" : "image", | ||||
| 315 | - # "oid" : oid, | ||||
| 316 | - # "ver" : "1.0" | ||||
| 317 | - #} | ||||
| 318 | - #data = { | ||||
| 319 | - # 'params': json.dumps(p) | ||||
| 320 | - #} | ||||
| 321 | - #r = requests.post( | ||||
| 322 | - #"http://obs-jp.line-apps.com/oa/album/a/object_info.nhn:443", | ||||
| 323 | - #headers = h, | ||||
| 324 | - #data = data, | ||||
| 325 | - #files = files | ||||
| 326 | - #) | ||||
| 327 | - return r.js"line_holder old" id="e9a7ebc16536051232b3b809970f5248475e8fcc_328_0"> | 328 | - #cl.createAlbum("cea9d61ba824e937aaf91637991ac934b","ss3ai","kawamuki.png") |