Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 7
1

Не могу найти начала исполнения программы

10.12.2015, 01:11. Просмотров 738. Ответов 3
Метки нет (Все метки)

Только только осваиваю python... Но вот не понятны мне некоторые вещи.
Есть исполняемый файл bot.py, помимо него куча еще файлов. Вот смотрите, при запуске bot.py идее должен начать исполнятся код:
Python
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
import vkapi
import time
import log
from thread_manager import thread_manager
 
class vk_bot:
 
    delay_on_reply = 1
    chars_per_second = 8
    same_user_interval = 15
    same_conf_interval = 25
 
    def __init__(self, username, password, captcha_handler=None):
        self.api = vkapi.vk_api(username, password, 4)
        self.api.captcha_handler = captcha_handler
        self.api.getToken()
        self.banned_messages = set()
        self.guid = int(time.time() * 5)
        self.ensureLoggedIn()
        self.self_id = str(self.api.users.get()[0]['id'])
        self.last_viewed_comment = 0
        self.name_cache = {}
        self.good_conf = set()
        self.tm = thread_manager()
        self.last_message = {}
        self.left_confs = set()
        self.last_message_id = {}
 
    def replyAll(self, gen_reply, include_read=0):
        try:
            messages = self.api.messages.getDialogs(unread=1-include_read)['items'][::-1]
        except KeyError:
            # may sometimes happen because of friendship requests
            return
        if include_read:
            print('Include read')
        t = 0
        self.tm.gc()
        with self.api.api_lock:
            for i in messages:
                cur = i['message']
                if cur['id'] in self.banned_messages:
                    continue
                if cur['out']:
                    continue
                if 'chat_id' in cur:
                    if not self.checkConf(cur['chat_id']):
                        continue
                if self.tm.isBusy(self.getSender(cur)):
                    continue
                try:
                    ans = gen_reply(cur)
                except Exception as e:
                    ans = None
                    print('[ERROR] %s: %s' % (e.__class__.__name__, str(e)))
                    time.sleep(1)
                if not ans:
                    continue
                t = 1
                self.replyMessage(cur, ans[0], ans[1])
            self.api.sync()
        if not t:
            print('Doing nothing...')
 
    def getSender(self, message):
        if 'chat_id' in message:
            return str(2000000000 + int(message['chat_id']))
        return str(message['user_id'])
 
    def sendMessage(self, to, msg):
        if int(to) in self.left_confs:
            return
        self.guid += 1
        to = int(to)
        if to > 2000000000:
            return self.api.messages.send(chat_id=to-2000000000, message=msg, guid=self.guid)
        else:
            return self.api.messages.send(user_id=to, message=msg, guid=self.guid)
 
    # message==None: special conf messages, don't need to reply
    # fast==1: no delay
    #       2: no markAsRead
    def replyMessage(self, message, answer, fast=0):
        sender = self.getSender(message)
        if int(message['id']) < self.last_message_id.get(sender, 0):
            return
        if fast == 0:
            self.api.messages.markAsRead.delayed(message_ids=message['id'])
        if not answer:
            self.banned_messages.add(message['id'])
            return
        delayed = 0
        if fast == 0 or fast == 2:
            delayed = self.delay_on_reply + len(answer) / self.chars_per_second
        def _send():
            res = self.sendMessage(sender, answer)
            if res is None:
                log.write('bannedmsg', str(message['id']))  # not thread-safe, but who gives a ****
                self.banned_messages.add(message['id'])
                return
            self.last_message[sender] = time.time()
            self.last_message_id[sender] = int(res)
        if answer.startswith('&#'):
            self.tm.run(sender, _send, delayed, 0, None, self.last_message.get(sender, 0) - time.time() + (self.same_user_interval if int(sender) < 2000000000 else self.same_conf_interval))
        else:
            self.tm.run(sender, _send, delayed, 8, lambda:self.api.messages.setActivity(type='typing', user_id=sender), self.last_message.get(sender, 0) - time.time() + (self.same_user_interval if int(sender) < 2000000000 else self.same_conf_interval))  # AAAAAAAA 
 
    def checkConf(self, cid):
        cid = str(cid)
        if cid in self.good_conf:
            return 1
        messages = self.api.messages.getHistory(chat_id=cid)['items']
        for i in messages:
            if i.get('action') == 'chat_create':
                self.leaveConf(cid)
                log.write('conf', cid)
                return 0
        self.good_conf.add(cid)
        return 1
    
    def leaveConf(self, cid):
        print('Leaving conf', cid)
        self.left_confs.add(2000000000 + int(cid))
        return self.api.messages.removeChatUser(chat_id=cid, user_id=self.self_id)
 
    def addFriends(self, gen_reply, is_good):
        data = self.api.friends.getRequests(extended=1)
        self.api.delayedReset()
        to_rep = []
        for i in data['items']:
            if is_good(i['user_id']):
                self.api.friends.add.delayed(user_id=i['user_id'])
                if 'message' in i:
                    ans = gen_reply(i)
                    to_rep.append((i, ans))
            else:
                self.api.friends.delete.delayed(user_id=i['user_id'])
        self.api.sync()
        for i in to_rep:
            self.replyMessage(i[0], i[1][0], i[1][1])
 
    def unfollow(self, banned):
        requests = self.api.friends.getRequests(out=1)['items']
        self.api.delayedReset()
        for i in requests:
            if str(i) not in banned:
                self.api.friends.delete.delayed(user_id=i)
        self.api.sync()
        return len(requests)
 
    def setOnline(self):
        self.api.account.setOnline(voip=0)
 
    def getUserId(self, uid):
        if uid.isdigit():
            return uid
        if '=' in uid:
            uid = uid.split('=')[-1]
        if '/' in uid:
            uid = uid.split('/')[-1]
        data = self.api.users.get(user_ids=uid)
        try:
            return str(data[0]['id'])
        except TypeError:
            return None
    
    def ensureLoggedIn(self):
        self.api.account.getCounters()
        
    def getUserInfo(self, uid):
        uid = str(uid)
        if uid not in self.name_cache:    
            r = self.api.users.get(user_ids=uid, fields='sex,photo_id')[0]
            self.name_cache[uid] = r
        return self.name_cache[uid]
        
    def filterComments(self, test):
        data = self.api.notifications.get(start_time=self.last_viewed_comment+1)['items']
        for rep in data:
            self.last_viewed_comment = max(self.last_viewed_comment, rep['date'])
            
            def _check(s):
                if 'photo' in s:
                    return str(s['photo']['owner_id']) == self.self_id
                if 'video' in s:
                    return str(s['video']['owner_id']) == self.self_id
                if 'post' in s:
                    return str(s['post']['to_id']) == self.self_id
            
            if rep['type'].startswith('comment_') or rep['type'].startswith('reply_comment') and _check(rep['parent']):
                txt = rep['feedback']['text']
                if test(txt):
                    log.write('comments', str(rep['feedback']['from_id']) + ': ' + txt)
                    if rep['type'].endswith('photo'):
                        print('Deleting photo comment')
                        self.api.photos.deleteComment(owner_id=self.self_id, comment_id=rep['feedback']['id'])
                    elif rep['type'].endswith('video'):
                        print('Deleting video comment')
                        self.api.video.deleteComment(owner_id=self.self_id, comment_id=rep['feedback']['id'])
                    else:
                        print('Deleting wall comment')
                        self.api.wall.deleteComment(owner_id=self.self_id, comment_id=rep['feedback']['id'])
                        
    def likeAva(self, uid):
        photo = self.getUserInfo(uid)['photo_id'].split('_')
        log.write('likeava', str(uid))
        self.api.likes.add(type='photo', owner_id=photo[0], item_id=photo[1])
Где начало исполнения файла? с какой строки начинается???? Мозг сломал... Что я не понимаю в Питоне?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2015, 01:11
Ответы с готовыми решениями:

Не могу найти ошибку этапа исполнения
Здравствуйте, написал программу, не могу понять, почему при отладке VB не хочет ее...

Не могу разобраться с вариантом исполнения. Диплом
Делаю диплом. Тема по подбору солнечных панелей. Нужно сделать страничку , где пользователь введет...

Разное время исполнения программы
&quot;Баловался&quot; с кодом питона и наткнулся на интересный результат: один и тот же код выполняется...

Ошибки во время исполнения программы
Приветствую всех форумчян. Во время исполнения программы система выдает 2 ошибки (см. вложения)....

3
2719 / 2323 / 620
Регистрация: 19.03.2012
Сообщений: 8,832
10.12.2015, 06:40 2
vanpitkinobi, это не главный файл, он самостоятельно не работает. Тут нет точки входа.
0
0 / 0 / 0
Регистрация: 06.10.2015
Сообщений: 7
10.12.2015, 16:14  [ТС] 3
да спасибо, я вчера уже понял. Скажите пожалуйста, когда происходит обращение к этому файлу он начинает исполняться со строки
Perl
1
 def __init__(self, username, password, captcha_handler=None):
???
0
Заблокирован
10.12.2015, 16:40 4
vanpitkinobi, да. Когда создаешь новый обект класса ты вызываешь эту функцию.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2015, 16:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

[Задача] Объясните результат исполнения программы
// Файл t1.cc #include &lt;iostream&gt; class C { int x; public: C() { x = 10; } ...

Передать Ошибку С Прекращением Исполнения Программы
Уважаемые коллеги. Подскажите есть ли возможность обработки исключения с прекращением исполнения...

Определение функции во время исполнения программы
Добрый день! Прошу помощи. Скажите, реально ли определить функцию во время исполнения...

Создание объектов во время исполнения программы
ну от должна вона работать,а не работает,викладою.там все далжно работать,нзнаю.там описание только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.