def get_list_of_messages(user_id: int, offset: int = 0, count: int = 20) -> List[Message]: messages = messages_get_history(user_id, offset, count) messages_list = [] for j in range(len(messages)): messages_list.append(Message(**messages[j])) return messages_list
def count_dates_from_messages(id: int, offset: int = 0, count: int = 200) -> Tuple: messages = messages_get_history(id, offset=offset, count=count) for message in messages: date = datetime.fromtimestamp(message.date).strftime("%Y-%m-%d") try: Frequencies[Dates.index(date)] += 1 except: Dates.append(date) Frequencies.append(1) Dates.reverse() Frequencies.reverse() message_count = (Dates, Frequencies) return message_count
def count_dates_from_messages(id: int, offset: int=0, count: int=200) -> Tuple: """ Получить список дат и их частот :param id: id собеседника :param count: количество сообщений :param offset: сдвиг по сообщеениям """ messages = messages_get_history(id, offset=offset, count=count) for message in messages: date = datetime.fromtimestamp(message.date).strftime("%Y-%m-%d") try: Frequencies[Dates.index(date)] += 1 except: Dates.append(date) Frequencies.append(1) Dates.reverse() Frequencies.reverse() message_count = (Dates, Frequencies) return message_count
api_key=config['plotly_api_key']) def fromtimestamp(ts: int) -> datetime.date: return datetime.datetime.fromtimestamp(ts).date() def count_dates_from_messages(messages: List[Message]) -> list: dates = [] for message in messages: dates.append(message['date']) for i in range(len(dates)): dates[i] = datetime.datetime.fromtimestamp( dates[i]).strftime('%Y-%m-%d') if dates: return dates def plotly_messages_freq(dates: list) -> None: x = Counter(dates) y = list(x.keys()) z = list(x.values()) data = [go.Scatter(y=y, z=z)] py.iplot(data) if __name__ == '__main__': plotly_messages_freq( count_dates_from_messages(messages_get_history(user_id))) user_id = int(input('Enter id: '))
:param messages: список сообщений """ dates = [] for message in messages: dates.append(message['date']) for i in range(len(dates)): dates[i] = datetime.datetime.fromtimestamp( dates[i]).strftime("%Y-%m-%d") if dates: return dates def plotly_messages_freq(dates: list) -> None: """ Построение графика с помощью Plot.ly :param date: список дат :param freq: число сообщений в соответствующую дату """ s = Counter(dates) xCoor = list(s.keys()) yCoor = list(s.values()) stats = [go.Scatter(x=xCoor, y=yCoor)] py.plot(stats) if __name__ == '__main__': n = count_dates_from_messages( messages_get_history(config.VK_CONFIG['friend_id'])) plotly_messages_freq(n)
new_dates = [message['date'] for message in messages] new_dates = sorted(new_dates) for i in range(len(new_dates)): date = datetime.utcfromtimestamp(new_dates[i]).strftime("%Y-%m-%d") flag.append(date) flag = Counter(flag) # flag includes dates and frequency of each date for date in flag: dates.append(date) frequencies.append(flag[date]) return dates, frequencies def plotly_messages_freq(dates: Dates, freq: Frequencies) -> None: """ Построение графика с помощью Plot.ly :param date: список дат :param freq: число сообщений в соответствующую дату """ data = [go.Scatter(x=dates, y=freq)] py.plot(data) if __name__ == '__main__': flag = messages_get_history(user_id=73415922) count_dates_from_messages(flag) plotly_messages_freq(dates=dates, freq=frequencies)
def count_dates_from_messages( messages: List[Message]) -> Tuple[List[datetime.date], List[int]]: """ Получить список дат и их частот :param messages: список сообщений """ dates = [] cnt = Counter() for message in messages: message['date'] = datetime.utcfromtimestamp( message['date']).strftime("%Y-%m-%d") dates.append(message['date']) for val in dates: cnt[val] += 1 return list(cnt.keys()), list(cnt.values()) def plotly_messages_freq(dates: List[datetime.date], freq: List[int]) -> None: """ Построение графика с помощью Plot.ly :param dates: :param dates: список дат :param freq: число сообщений в соответствующую дату """ data = [go.Scatter(x=dates, y=freq)] py.plot(data) if __name__ == '__main__': messages = messages_get_history(172030641, offset=0, count=200) x, y = count_dates_from_messages(messages) plotly_messages_freq(x, y)
""" Получить список дат и их частот :param messages: список сообщений """ date = [] cnt = Counter() for message in messages: message['date'] = datetime.utcfromtimestamp( message['date']).strftime("%Y-%m-%d") date.append(message['date']) for val in date: cnt[val] += 1 return list(cnt.keys()), list(cnt.values()) def plotly_messages_freq(dates: List[datetime.date], freq: List[int]) -> None: """ Построение графика с помощью Plot.ly :param dates: :param date: список дат :param freq: число сообщений в соответствующую дату """ data = [go.Scatter(x=dates, y=freq)] py.plot(data) friend_id = get_friends(config.VK_CONFIG['user_id'], '')[14] dates, freq = count_dates_from_messages( messages_get_history(friend_id, count=2000)) plotly_messages_freq(dates, freq)
messages: List[Message]) -> Tuple[Dates, Frequencies]: """ Получить список дат и их частот :param messages: список сообщений """ date = [] cnt = Counter() for message in messages: message.date = datetime.utcfromtimestamp( message.date).strftime("%Y-%m-%d") date.append(message.date) for val in date: cnt[val] += 1 return list(cnt.keys()), list(cnt.values()) def plotly_messages_freq(dates: Dates, freq: Frequencies) -> None: """ Построение графика с помощью Plot.ly :param date: список дат :param freq: число сообщений в соответствующую дату """ data = [go.Scatter(x=dates, y=freq)] py.plot(data) if __name__ == '__main__': a = count_dates_from_messages(messages_get_history(82770248)) plotly_messages_freq(a[0], a[1])
def count_dates_from_messages(messages: List[Message]) -> Tuple[Dates, Frequencies]: """ Получить список дат и их частот :param messages: список сообщений """ dates = [] frequencies = [] for message in messages: message.date = fromtimestamp(message.date) dates.append(message.date) frequency = 0 for object in messages: if object.date == message.date: frequency += 1 frequencies.append(frequency) return dates, frequencies def plotly_messages_freq(dates: Dates, freq: Frequencies) -> None: """ Построение графика с помощью Plot.ly :param date: список дат :param freq: число сообщений в соответствующую дату """ data = [plotly.graph_objs.Scatter(x=dates, y=freq)] plotly.plotly.plot(data) dates_freq = count_dates_from_messages(messages_get_history(53369046, 0, 300)) plotly_messages_freq(dates_freq[0], dates_freq[1])
from api import messages_get_history from api_models import Message from messages import count_dates_from_messages, plotly_messages_freq messages = messages_get_history(505540783, offset=10, count=50) messages_list = [Message(**mes) for mes in messages] dates_freqs = count_dates_from_messages(messages_list) plotly_messages_freq(dates_freqs[0], dates_freqs[1])
# для сообщений for message in messages: # запоминаем дату сообщения message['date'] = datetime.\ utcfromtimestamp(message['date']).strftime("%Y-%m-%d") # добавляем в список дату dates.append(message['date']) # для вал в датах for val in dates: # счетчик каждого отдельного вала +1 cnt[val] += 1 # вернуть список дат и кол-во сообщений return list(cnt.keys()), list(cnt.values()) def plotly_messages_freq(dates: List[datetime.date], freq: List[int]) -> None: """ Построение графика с помощью Plot.ly :param dates: :param dates: список дат :param freq: число сообщений в соответствующую дату """ data = [go.Scatter(x=dates, y=freq)] py.plot(data) if __name__ == '__main__': friend_id = int(config.VK_CONFIG['user_id']) messages = messages_get_history(friend_id, offset=0, count=200) x, y = count_dates_from_messages(messages) plotly_messages_freq(x, y)
def count_dates_from_messages( messages: List[Message]) -> Tuple[Dates, Frequencies]: """ Получить список дат и их частот :param messages: список сообщений """ result = defaultdict(lambda: 0) for message in messages: result[fromtimestamp(message.date)] += 1 return list(result.keys()), list(result.values()) def plotly_messages_freq(dates: Dates, freq: Frequencies) -> None: """ Построение графика с помощью Plot.ly :param dates: список дат :param freq: число сообщений в соответствующую дату """ fig = go.Figure() fig.add_trace( go.Scatter(x=dates, y=freq, mode='lines+markers', name='lines+markers')) fig.show() if __name__ == '__main__': msgs = messages_get_history(223712375, count=401) plotly_messages_freq(*count_dates_from_messages(msgs))
from age import age_predict from api import messages_get_history, get_friends from messages import count_dates_from_messages, plotly_messages_freq from api_models import Message from network import get_network, plot_graph print(age_predict(155393609)) history = messages_get_history(155393609, count=300) mlist = [Message(**mes) for mes in history] dates = count_dates_from_messages(mlist) plotly_messages_freq(dates[0], dates[1]) friends = get_friends(155393609, fields='bdate')['response']['items'] ids = [] names = [] for friend in friends: ids.append(friend['id']) names.append(friend['first_name'] + ' ' + friend['last_name']) edges = get_network(ids) plot_graph(edges, names)
return datetime.fromtimestamp(ts).date() def count_dates_from_messages(messages: List[Message]) -> Tuple[List[datetime.date], List[int]]: """ Получить список дат и их частот :param messages: список сообщений """ dates = [] cnt = Counter() for message in messages: message['date'] = datetime.utcfromtimestamp(message['date']).strftime("%Y-%m-%d") dates.append(message['date']) for val in dates: cnt[val] += 1 return list(cnt.keys()), list(cnt.values()) def plotly_messages_freq(dates: List[datetime.date], freq: List[int]) -> None: """ Построение графика с помощью Plot.ly :param dates: :param date: список дат :param freq: число сообщений в соответствующую дату """ data = [go.Scatter(x=dates, y=freq)] py.plot(data) if __name__ == '__main__': messages = messages_get_history(203977390, offset=0, count=200) x, y = count_dates_from_messages(messages) plotly_messages_freq(x, y)
frequency = Counter() for message in messages: message_date = fromtimestamp(message.date) frequency[message_date] += 1 for date in frequency: m_dates.append(date) m_counts.append(frequency[date]) return m_dates, m_counts def plotly_messages_freq(dates: Dates, freq: Frequencies) -> None: """ Create plotly chart :param date: list of dates :param freq: list of messages numbers at certain dates """ plotly.tools.set_credentials_file( username=config.PLOTLY_CONFIG['username'], api_key=config.PLOTLY_CONFIG['api_key']) data = [go.Scatter(x=dates, y=freq)] py.plot(data) if __name__ == '__main__': messages_list = messages_get_history(364936790, 0, 1000) messages_stat = count_dates_from_messages(messages_list) plotly_messages_freq(messages_stat[0], messages_stat[1])
:param messages: список сообщений """ msgl = [fromtimestamp(c.get('date')) for c in messages] num = Counter(msgl) dates = [] freq = [] for date in num: dates.append(date) freq.append(num[date]) return dates, freq def plotly_messages_freq(dates: Dates, freq: Frequencies) -> None: """ Построение графика с помощью Plot.ly :param date: список дат :param freq: число сообщений в соответствующую дату """ data = [go.Scatter(x=dates, y=freq)] py.iplot(data) if __name__ == '__main__': messages = messages_get_history(57902269, offset=0, count=200) x, y = count_dates_from_messages(messages) plotly_messages_freq(x, y)
def count_dates_from_messages(messages: List[Message]): """ Получить список дат и их частот :param messages: список сообщений """ dates = [] cnt = Counter() for message in messages: message['date'] = datetime.utcfromtimestamp(message['date']).strftime("%Y-%m-%d") dates.append(message['date']) for val in dates: cnt[val] += 1 return list(cnt.keys()), list(cnt.values()) def plotly_messages_freq(dates: List[datetime.date], freq: List[int]) -> None: """ Построение графика с помощью Plot.ly :param dates: :param date: список дат :param freq: число сообщений в соответствующую дату """ data = [go.Scatter(x=dates, y=freq)] py.plot(data) if __name__ == '__main__': friend_id = get_friends(config.VK_CONFIG['user_id'], '')[7] dates, freq = count_dates_from_messages(messages_get_history(friend_id)) plotly_messages_freq(dates, freq)