def __init__(self, parent=None): QWidget.__init__(self, parent) self.ui() self.widgetList = [] self.nuberOfCall = 0 self.parent = parent requester = HRequester() postRequester = HPostRequester() self.closeBtn.clicked.connect(lambda: self.parent.widgetsConductor(self, delete=True)) self.btn_unsubscribeEverything.clicked.connect(self.unsubscribeEverything) self.btn_resevedOneFriend.clicked.connect(self.resevedOneFriend) chil = [item for item in self.parent.itemList if item.b.checkState() == 2 and item.frozen == 0] for item in chil: getUrl = UrlAPI(item.token) postRequester(getUrl.execute(), item.session, item, data={'code': self.getCode()}) response = postRequester.request() response.sort(key=lambda r: json.loads(r[0].text)['response'][0]['count']) for r in response: j = json.loads(r[0].text)['response'] item = r[2][0] masSended = [sended for sended in j[1]['items']] masReceived = [received for received in j[2]['items']] self.addAccaunt(item, str(j[0]['count']), str(j[1]['count']), str(j[2]['count']), masSended, masReceived) self.parent.statusBar.showMessage( 'Загруженно акков ' + str(len(response)) + '/' + str(len(chil)))
def addFriends(self): requester = HRequester() for item in self.chil: getUrl = UrlAPI(item.token) requester(getUrl.friends.getRequests(count=1000, out=0), item.session, item) response = requester.request() for r in response: try: j = json.loads(r[0].text)['response'] item = r[2][0] masReceived = [received for received in j['items']] self.listRecived.append([item, masReceived]) except Exception as e: print(e) widgetList = [w for w in self.listRecived if len(w[1]) > 0] for w in widgetList: item, masReceived = w getUrl = UrlAPI(item.token) added_user_id = self.getAddedUser(masReceived) if added_user_id != None: requester(getUrl.friends.add(user_id=added_user_id), item.session) requester.request()
def getPhotos(self): photosList = [] for mas in self.masSessions: session, token, user_id = mas getUrl = UrlAPI(token) # get upload url for photos for imgByte in self.byteImgMas: editImg = self.editPhoto(imgByte) urlUpload = getUrl.photos.getWallUploadServer() self.requester(urlUpload, session, editImg) urlResponse = self.requester.request() for ur in urlResponse: print(ur[0].text) img = ur[2][0] session = ur[1] session.headers.update(Accept='multipart/form-data') data = json.loads(ur[0].text) url = data['response']['upload_url'] user_id = data['response']['user_id'] self.postRequester(url, session, user_id, files={'photo': ('image.jpg', img)}) postResponse = self.postRequester.request() for pr in postResponse: print(pr[0].text, pr[2][0]) dataPost = json.loads(pr[0].text) session = pr[1] user_id = pr[2][0] server = dataPost['server'] photo = dataPost['photo'] hash = dataPost['hash'] for item in self.masSessions: if item[0] == session: getUrl = UrlAPI(item[1]) saveUrl = getUrl.photos.saveWallPhoto(server=server, photo=photo, hash=hash) self.requester(saveUrl, session, user_id) saveResponse = self.requester.request() for r in saveResponse: print(r[0].text, 'save') user_id = r[2][0] session = r[1] data = json.loads(r[0].text) photo_id = data['response'][0]['id'] photo = 'photo' + str(user_id) + '_' + str(photo_id) photosList.append([session, photo]) return photosList
def resevedOneFriend(self): requester = HRequester() countCaptcha = 0 countLimitRequests = 0 countSuccessfully = 0 widgetList = [w for w in self.widgetList if len(w.masReceived) > 0] for w in widgetList: getUrl = UrlAPI(w.item.token) added_user_id = w.masReceived.pop(0) requester(getUrl.friends.add(user_id=added_user_id), w.item.session, w, added_user_id) response = requester.request() for r in response: w = r[2][0] added_user_id = r[2][1] j = json.loads(r[0].text) if 'error' in j: if j['error']['error_code'] == 14: countCaptcha += 1 elif j['error']['error_code'] == 6: countLimitRequests += 1 elif j['error']['error_code'] == 177: getUrl = UrlAPI(w.item.token) rDel = w.item.session.get(getUrl.friends.delete(user_id=added_user_id), proxies=w.item.session.proxies) countSuccessfully += 1 else: print(j) elif 'response' in j: if j['response'] > 1: countSuccessfully += 1 w.countReceivedRequests.setText(str(int(w.countReceivedRequests.text()) - 1)) else: print(j) else: print(j) if countSuccessfully / len(response) == 1: self.parent.statusBar.showMessage('Успешно добавлено у всех') print('Успешно добавлено у всех') else: self.parent.statusBar.showMessage('Кол-во успешных:' + str(countSuccessfully) + ' Кол-во капч:' + str( countCaptcha) + ' Кол-во лимитов:' + str(countLimitRequests)) print('Кол-во успешных:' + str(countSuccessfully) + ' Кол-во капч:' + str( countCaptcha) + ' Кол-во лимитов:' + str(countLimitRequests))
def chekAcc(self): errorListAcc = [] requester = HRequester() chil = [ item for item in self.itemList if item.b.checkState() == 2 and item.frozen == 0 ] for acc in chil: getUrl = UrlAPI(acc.token) requester(getUrl.account.setOnline(), acc.session, acc) requests = requester.request() for r in requests: acc = r[2][0] j = json.loads(r[0].text) if 'response' in j: if j['response'] == 1: pass else: print(j) return elif 'error' in j: acc.responseError = j errorListAcc.append(acc) if len(errorListAcc) == 0: self.statusBar.showMessage('Обновленно') else: self.widgetsConductor(SurveyForm(self, errorListAcc), show=True)
def createChat(self): getUrl = UrlAPI(self.token) response = self.session.get(getUrl.messages.createChat(title='Читаем стихи'), proxies=self.session.proxies) jResponse = json.loads(response.text) if 'response' in jResponse: chat_id = jResponse['response'] peer_id = 2000000000 + chat_id res = self.session.get(getUrl.messages.getInviteLink(peer_id=peer_id), proxies=self.session.proxies) jRes = json.loads(res.text)['response'] invite_link = jRes['link'] os.chdir('/root/PycharmProjects/HearSheep') con = sql.connect(os.getcwd() + '/db/db.sqlite3') cur = con.cursor() with con: cur.execute('INSERT INTO chat(number_chat,count_users,invite_link) VALUES (NULL,1,?)', (invite_link, )) cur.execute('SELECT number_chat FROM chat WHERE invite_link=?', (invite_link, )) row = cur.fetchone() number_chat = row[0] cur.execute('INSERT INTO accaunt_chat(user_id,chat_id,number_chat) VALUES (?,?,?)', (self.user_id, chat_id, number_chat)) con.close() print('the chat created') return True print("the chat don't created") return False
def sendLike(self, post_str): error = [] atLeastOneRepost = False for acc in self.chil: owner_id, item_id = post_str.strip('wall').split('_') getUrl = UrlAPI(acc.token) url = getUrl.likes.add(type='post', owner_id=owner_id, item_id=item_id) self.requester(url, acc.session, acc.user_id) response = self.requester.request() for item in response: user_id = item[2][0] res = json.loads(item[0].text) if 'response' in res and 'likes' in res['response']: atLeastOneRepost = True else: if 'error' in res: error.append([res, user_id]) else: error.append([res, user_id]) if atLeastOneRepost == True: print('Лайки поставлены') if len(error) == 0: print('Все лайки поставлены удачно') else: [print(i) for i in error] self.signalComplete.emit('reposts')
def addGroup(self, group_list): error = [] for group in group_list: for acc in self.chil: getUrl = UrlAPI(acc.token) url = getUrl.groups.join(group_id=group) self.requester(url, acc.session, acc) response = self.requester.request() for item in response: acc = item[2][0] try: res = json.loads(item[0].text) if res['response'] == 1: pass else: error.append([res, acc.user_id]) except: error.append([item[0].text, acc.user_id]) if len(error) == 0: print('Все группы добавленны удачно') else: [print(i) for i in error] self.signalComplete.emit('groups added')
def specificRecord(self): errorListAcc = [] for i in range(self.lenght): getUrl = UrlAPI(self.chil[i].token) urlLikeAdd = getUrl.likes.add(type=self.lineType.text(), owner_id=self.lineEditOwner.text(), item_id=self.lineEditItem.text()) self.requester(urlLikeAdd, self.chil[i].session, self.chil[i]) response = self.requester.request() for r in response: acc = r[2][0] j = json.loads(r[0].text) if 'response' in j: if j['response'] == 1: pass else: print(j) elif 'error' in j: print(j) acc.responseError = j errorListAcc.append(acc) if len(errorListAcc) == 0: self.parent.statusBar.showMessage('Лайки поставлены') else: self.parent.statusBar.showMessage('Лайки поставлены с ошибками') self.parent.widgetsConductor(SurveyForm(self.parent, errorListAcc), show=True)
def filing(self): requester = HRequester() for acc in self.chil: getUrl = UrlAPI(acc.token) urlAvatars = getUrl.users.get(fields='photo_200') requester(urlAvatars, acc.session, acc) response = requester.request() for r in response: acc = r[2][0] try: dataAvatars = json.loads(r[0].text)['response'][0] if dataAvatars[ 'photo_200'] != 'https://vk.com/images/camera_200.png': requester(dataAvatars['photo_200'], acc.session, acc) else: photo = Photo(self, None, acc) self.mainLayout.addWidget(photo, alignment=Qt.AlignLeft) except Exception as e: print(repr(e)) response = requester.request() for r in response: acc = r[2][0] photoByte = r[0] photo = Photo(self, photoByte, acc) self.mainLayout.addWidget(photo, alignment=Qt.AlignLeft)
def sendPost(self): photosList = self.getPhotos() for item in self.masSessions: session, token, user_id = item photos = ',' masP = [] for photo in photosList: if session == photo[0]: masP.append(photo[1]) getUrl = UrlAPI(token) if self.linePost.text() == '': url = getUrl.wall.post(attachments=photos.join(masP)) self.requester(url, session) else: url = getUrl.wall.post(message=self.linePost.text(), attachments=photos.join(masP)) self.requester(url, session) response = self.requester.request() for r in response: print(r[0].text) print('Кол-во акков', len(self.masSessions), 'Ответов сервера:', len(response))
def getDataWall(self, acc, offset, count): print('getData Wall') getUrl = UrlAPI(acc.token) url = getUrl.wall.get(extended=1, count=count, offset=offset) def dowload(): print('dowmload') try: response = requests.get(url, proxies=acc.session.proxies) return response except requests.exceptions.ProxyError as e: print(repr(e)) return dowload() except requests.exceptions.Timeout as e: print(repr(e)) return dowload() except requests.exceptions.ConnectionError as e: print(e) return None response = dowload() if response: print('if response') dataWall = json.loads(response.text) if 'response' in dataWall: # self.gui.createRecords(acc, dataWall['response']) self.signal.emit(acc, dataWall['response']) else: print(response)
def sendRequest(self): getUrl = UrlAPI(self.item.token) requester = HRequester() for i in range(3): user = random.choice(self.parent.members['items']) requester(getUrl.friends.add(user_id=user['id']), self.item.session) response = requester.request() for r in response: j = json.loads(r[0].text) if 'error' in j: if j['error']['error_code'] == 14: print('КАПЧА-----') else: print(j) elif 'response' in j: if j['response'] == 1: print('Запрос отправлен') self.countSendedRequests.setText(str(int(self.countSendedRequests.text()) + 1)) else: print(j) else: print(j)
def sendComment(self, group_id, post_id, comment_text): error = [] for acc in self.chil: getUrl = UrlAPI(acc.token) url = getUrl.wall.createComment(owner_id=group_id, post_id=post_id, message=comment_text) self.requester(url, acc.session, acc) response = self.requester.request() for item in response: acc = item[2][0] try: res = json.loads(item[0].text) if 'comment_id' in res['response']: pass else: error.append([res, acc.user_id]) except: error.append([item[0].text, acc.user_id]) if len(error) == 0: print('All comments send') else: [print(i) for i in error] self.signalComplete.emit('comment')
def lineRepostDownload(self): self.group_list_repost = [] post_str = self.gui.lineRepost.text().strip('https://vk.com/wall') requester = HRequester() acc = random.choice(self.chil) getUrl = UrlAPI(acc.token) url = getUrl.wall.getById(posts=post_str, extended=1) requester(url, acc.session) response = requester.request() for r in response: try: j = json.loads(r[0].text) except: continue if 'response' in j: for group in j['response']['groups']: self.group_list_repost.append(group['id']) self.signal.emit() else: print(j)
def __init__(self, name, token, session): self.name = name self.timeout = 0 self.interval1 = 75 self.interval2 = 95 self.session = session self.getUrl = UrlAPI(token) self.requester = HRequester() self.photoIdsList = []
def refreshName(self): errorListAcc = [] requester = HRequester() chil = [(item.session, item.token, item.user_id) for item in self.itemList if item.b.checkState() == 2 and item.frozen == 0] error = 0 for acc in chil: session = acc[0] token = acc[1] user_id = acc[2] getUrl = UrlAPI(token) requester(getUrl.account.getProfileInfo(), session, user_id) with self.con: cur = self.con.cursor() cur.execute("SELECT name, last_name, user_id FROM accaunt") rows = cur.fetchall() requests = requester.request() for r in requests: user_id1 = r[2][0] j = json.loads(r[0].text) if 'response' in j: name = j['response']['first_name'] lastName = j['response']['last_name'] nameG, lastNameG, user_idG = [ m for m in rows if user_id1 == m[2] ].pop() if name == nameG and lastName == lastNameG: pass else: with self.con: cur = self.con.cursor() cur.execute( "UPDATE accaunt SET name=?, last_name=? WHERE user_id=?", (name, lastName, user_id1)) self.con.commit() elif 'error' in j: error += 1 acc.responseError = j errorListAcc.append(acc) if error == 0: self.statusBar.showMessage('Обновленно') else: self.statusBar.showMessage('Обновленно. Проблемных аккаунтов:' + str(error)) self.widgetsConductor(SurveyForm(self, errorListAcc), show=True)
def addVideo(self): requester = HRequester() chil = [ item for item in self.itemList if item.b.checkState() == 2 and item.frozen == 0 ] randomAcc = random.choice(chil) getMainUrl = UrlAPI(randomAcc.token) responseMain = requests.get(getMainUrl.video.get(owner_id='-29573241', count=5), proxies=randomAcc.session.proxies) responseJson = json.loads(responseMain.text)['response']['items'] for video in responseJson: owner_id = video['owner_id'] video_id = video['id'] for acc in chil: getUrl = UrlAPI(acc.token) requester( getUrl.video.add(video_id=video_id, owner_id=owner_id), acc.session, acc.user_id) responseAdd = requester.request() for r in responseAdd: j = json.loads(r[0].text) user_id = r[2][0] if 'response' in j: if j['response'] == 1: pass else: print('Не добавленно', user_id, r[0].text) else: print('Ошибка', user_id, r[0].text) print('----------')
def unsubscribeEverything(self): requester = HRequester() countCaptcha = 0 countLimitRequests = 0 countSuccessfully = 0 for w in self.widgetList: getUrl = UrlAPI(w.item.token) for i in range(5): try: user = w.masSended.pop(0) requester(getUrl.friends.delete(user_id=user), w.item.session, w) except: break response = requester.request() for r in response: w = r[2][0] j = json.loads(r[0].text) if 'error' in j: if j['error']['error_code'] == 14: countCaptcha += 1 elif j['error']['error_code'] == 6: countLimitRequests += 1 else: print(j) elif 'response' in j: if j['response']['success'] == 1: countSuccessfully += 1 w.countSendedRequests.setText(str(int(w.countSendedRequests.text()) - 1)) else: print(j) else: print(j) if countSuccessfully / len(response) == 1: self.parent.statusBar.showMessage('Успешно удалено у всех') print('Успешно удалено у всех') else: self.parent.statusBar.showMessage('Кол-во успешных:' + str(countSuccessfully) + ' Кол-во капч:' + str( countCaptcha) + ' Кол-во лимитов:' + str(countLimitRequests)) print('Кол-во успешных:' + str(countSuccessfully) + ' Кол-во капч:' + str( countCaptcha) + ' Кол-во лимитов:' + str(countLimitRequests))
def getInfoMembers(self): members = [] for i in range(0, divmod(len(self.mas_ids), 5000)[0] + 1): code = 'var mas = [];' for j in range(10): line = self.getLine(j) if line == '''var friends'''+ str(j) +''' = API.users.get({"user_ids":"","fields":"photo_id,online"});''': break else: code += line + 'mas = mas + friends' + str(j) + ';' code += '''return mas;''' print(code) random_chil = random.choice(self.chil) session = random_chil.session getUrl = UrlAPI(random_chil.token) self.postRequester(getUrl.execute(), session, 'null', data={'code': code}) response = self.postRequester.request() for r in response: print(r[0].text) j = json.loads(r[0].text) print(len(j['response'])) [members.append(user) for user in j['response']] print(len(members)) if self.checkBoxOnline.checkState() == 2: members = [user for user in members if user['online'] == 1] return members
def save(self): requester = HRequester() dic = {} if self.lineName.text() == '': pass else: dic.update(first_name=self.lineName.text()) if self.lineLastName.text() == '': pass else: dic.update(last_name=self.lineLastName.text()) if self.lineBD.text() == '': pass else: dic.update(bdate=self.lineBD.text()) if self.lineCityId.text() == '': pass else: dic.update(city_id=self.lineCityId.text()) if self.lineStatus.text() == '': pass else: dic.update(status=self.lineStatus.text()) if self.lineVisibleBD.checkState() == 2: dic.update(bdate_visibility=1) else: dic.update(bdate_visibility=0) for acc in self.chil: getUrl = UrlAPI(acc.token) # Close coments under wall post and display walls record url1 = getUrl.account.setInfo(name='own_posts_default', value=0) url2 = getUrl.account.setInfo(name='no_wall_replies', value=1) requester(url1, acc.session) requester(url2, acc.session) requester(getUrl.account.saveProfileInfo(**dic), acc.session) response = requester.request() for r in response: j = json.loads(r[0].text) print(j)
def mouseDoubleClickEvent(self, QMouseEvent): requester = HRequester() getUrl = UrlAPI(self.acc.token) requester(getUrl.photos.delete(photo_id=self.id), self.acc.session) response = requester.request() for r in response: j = json.loads(r[0].text) try: if j['response'] == 1: self.deleteLater() except Exception as e: print(repr(e))
def numRecord(self): for item in self.chil: getUrl = UrlAPI(item.token) self.requester( getUrl.wall.get(count=1, offset=self.line_numberRevord.text()), item.session, item) response = self.requester.request() for r in response: record = json.loads(r[0].text)['response']['items'][0] acc = r[2][0] acc.item_id = record['id'] self.run('post')
def __init__(self, parent=None, session=None, token=None, dataAllPhotos=None): super().__init__(parent, Qt.Window) self.session = session self.token = token self.dataAllPhotos = dataAllPhotos self.createApi = UrlAPI(self.token) self.api = API(self.session, self.token) self.ui() self.filing() self.show()
def mouseDoubleClickEvent(self, QMouseEvent): requester = HRequester() getUrl = UrlAPI(self.acc.token) requester(getUrl.photos.deleteAlbum(album_id=self.albumId), self.acc.session) response = requester.request() for r in response: j = json.loads(r[0].text) try: if j['response'] == 1: self.deleteLater() except KeyError: print(KeyError, 'Ошибка удаления альбома', r[0])
def deleteAll(self): requester = HRequester() for post in self.gui.allPost: getUrl = UrlAPI(post.token) requester(getUrl.wall.delete(post_id=post.post_id), post.session, post) response = requester.request() for r in response: j = json.loads(r[0].text) post = r[2][0] if j['response'] == 1: post.deleteLater() else: print('Error Response by delete post', r[0].text)
def sendRequestEverything(self): requester = HRequester() countCaptcha = 0 countSuccessfully = 0 for w in self.widgetList: getUrl = UrlAPI(w.item.token) for i in range(3): user = random.choice(self.members['items']) requester(getUrl.friends.add(user_id=user['id']), w.item.session, w) response = requester.request() for r in response: w = r[2][0] j = json.loads(r[0].text) if 'error' in j: if j['error']['error_code'] == 14: countCaptcha += 1 else: print(j) elif 'response' in j: if j['response'] == 1: countSuccessfully += 1 w.countSendedRequests.setText(str(int(w.countSendedRequests.text()) + 1)) elif j['response'] == 2: print('Добавлен ранее') else: print(j) else: print(j) if countSuccessfully / len(self.widgetList) == 3: self.parent.statusBar.showMessage('Успешно отправлено у всех') print('Успешно отправлено у всех') else: self.parent.statusBar.showMessage( 'Кол-во успешных:' + str(countSuccessfully) + ' Кол-во капч:' + str(countCaptcha)) print('Кол-во успешных:' + str(countSuccessfully) + ' Кол-во капч:' + str(countCaptcha))
def sendRepost(self, post_str): error = [] atLeastOneRepost = False con = sql.connect('db/db.sqlite3') cur = con.cursor() group_post_id = post_str.strip('wall') for acc in self.chil: getUrl = UrlAPI(acc.token) url = getUrl.wall.repost(object=post_str) self.requester(url, acc.session, acc.user_id) response = self.requester.request() for item in response: user_id = item[2][0] res = json.loads(item[0].text) if 'response' in res and 'success' in res['response']: post_id = res['response']['post_id'] if res['response']['success'] == 1: with con: cur.execute( 'INSERT INTO accaunt_repost (user_id, group_post_id, post_id) VALUES (?,?,?)', (user_id, group_post_id, post_id)) atLeastOneRepost = True else: if 'error' in res: error.append([res, user_id]) else: error.append([res, user_id]) if atLeastOneRepost == True: with con: cur.execute('INSERT INTO repost (group_post_id) VALUES (?)', (group_post_id, )) print('Репосты сделаны') if len(error) == 0: print('Все репосты сделаны удачно') else: [print(i) for i in error] self.signalComplete.emit('reposts')
def unsubscribe(self): getUrl = UrlAPI(self.item.token) unsubscribe_user_id = self.masSended.pop(0) r = self.item.session.get(getUrl.friends.delete(user_id=unsubscribe_user_id), proxies=self.item.session.proxies) j = json.loads(r.text) if 'response' in j: if j['response']['success'] == 1: print('Удален') else: print('Ошибка', j) else: print('Ошибка', j) self.countSendedRequests.setText(str(int(self.countSendedRequests.text()) - 1))
def joinTheChat(self, chat): number_chat, count_users, invite_link = chat print('connect to', invite_link) self.load(QtCore.QUrl(invite_link)) print('waiting load inviting page') self.waitForSignal() page = self.page() page.runJavaScript( "document.querySelector('button.flat_button.round_button._im_join_chat.im-invitation--join').click()") print('waiting after clicking the button "connect"') self.waitForSignal() # Check the entry in the chat print('get dialogs') getUrl = UrlAPI(self.token) response = self.session.get(getUrl.messages.getDialogs(count=3), proxies=self.session.proxies) dialogs = json.loads(response.text)['response']['items'] for dialog in dialogs: print(dialog) if dialog['message']['title'] == 'Читаем стихи': print('Find') os.chdir('/root/PycharmProjects/HearSheep') con = sql.connect(os.getcwd() + '/db/db.sqlite3') cur = con.cursor() with con: cur.execute('INSERT INTO accaunt_chat(user_id,chat_id,number_chat) VALUES(?,?,?)', (self.user_id, dialog['message']['chat_id'], number_chat)) cur.execute('UPDATE chat SET count_users=? WHERE number_chat=?', (count_users+1, number_chat)) con.close() print('joined the chat') return True print("not joined the chat") return False