Перейти к содержимому

Как сделать соц сеть на python

  • автор:

Социальная сеть

помогите решить
В социальной сети есть два вида пользователей: люди и сообщества. Все пользователи должны указывать свое имя. Люди могут также указывать свою дату рождения, а сообщества – свое краткое описание. Все пользователи (и люди, и сообщества) могут отправлять сообщения друг другу, а также выкладывать посты на своей стене. Люди могут подписываться на других людей и на сообщества.

Реализуйте иерархию классов в соответствии с этим описанием.

User – базовый класс. Его конструктор должен принимать один аргумент – имя. Также этот класс должен предоставлять методы
send_message(user, message) – отправить сообщение message пользователю user
post(message) – отправить сообщение message себе на стену
info() – вернуть строку с дополнительной информацией о пользователе. Для класса User это пустая строка, метод info() будет переопределяться в производных классах
describe() – напечатать имя пользователя и дополнительную информацию о нем (т.е. результат работы метода info())
Person – производный от класса User. Его конструктор должен принимать на вход два аргумента – имя и дату рождения. При написании конструктора используйте конструктор базового класса. Метод info() класса Person должен возвращать строку вида «Дата рождения: . » Также у Person должен быть реализован дополнительный метод subscribe(user), где user – объект класса User.
Community – производный от класса User. Его конструктор должен принимать на вход два аргумента – имя и краткое описание. При написании конструктора используйте конструктор базового класса. Метод info() класса Community должен возвращать строку вида «Описание: . «

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

DJWOMS / pysonet Public

Социальная сеть на Django Rest Framework.

DJWOMS/pysonet

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Как создать свою социальную сеть: цены и сроки

Социальные сети в наше время являются довольно популярными среди населения разных стран. Развитие технологий привело к возможности делиться информацией с большой или маленькой группой людей посредством ведения блогов, сообществ, личных страниц, каналов и др. Многомиллионная аудитория популярных социальных сетей является перспективой для монетизации. Так, основатели соцсетей вроде Facebook и Instagram теперь являются одними из самых богатых людей планеты. В сегодняшней статье мы расскажем, что необходимо для создания соцсети, какие функции у нее могут быть, а также о том, сколько может стоить разработка и как монетизировать готовое приложение или сайт.

Что нужно для создания социальной сети

  1. Команда разработки. Без наличия специалистов, способных создать продукт, реализовать его не получится. Обычно в команду разработки входят следующие специалисты:
  • проектный менеджер, задача которого — контролировать сроки и качество выполнения работы, а также общение с клиентом;
  • разработчики, которые осуществляют непосредственное написание кода и отвечают за реализацию функционала;
  • дизайнеры, которые создают макеты дизайна будущей соцсети и продумывают наиболее удобный интерфейс;
  • тестировщики, которые тестируют готовую программу на наличие багов, а также предотвращают возможные ошибки до их появления.
  1. Техническое задание. Для того чтобы реализовать именно тот функционал и дизайн, который необходим заказчику, необходимо грамотно разработать техническое задание. В нем указываются основные требования к проекту. Важно, чтобы эти требования были выражены в конкретных пожеланиях и показателях, без размытых и субъективных формулировок.
  2. Время и деньги. Разработка социальной сети, как правило, длительный процесс, занимающий не один месяц. Стоимость разработки, скорее, индивидуальна, но и она является немаленькой ввиду специфики проекта и длительности времени, затрачиваемого на реализацию. Подробнее об этом поговорим в разделе ниже.

Основные функции социальной сети

К функциям социальной сети можно отнести следующие возможности:

  1. Авторизация. Для того, чтобы пользователи могли иметь постоянную возможность доступа к своим аккаунтам, необходимо разработать возможность входа в систему. Авторизацию можно сделать с помощью дополнительных средств защиты, поскольку взлом аккаунтов социальных сетей — нередкое явление. Например, можно разработать механизм защиты с помощью одноразового кода, который будет приходить на электронную почту или номер телефона.
  2. Создание личного блога или сообщества. В зависимости от типа социальной сети возможно создание как личного аккаунта, так и отдельной группы или сообщества с возможностью постинга. Формат размещаемого контента также может быть различным. Например, социальная сеть TikTok предлагает возможность размещения только коротких видео. А в соцсети наподобие ВК можно запостить аудиосообщения, текст, разместить музыкальный трек, картинки и др.

  1. Личные сообщения. Дополнительная функция, которая позволяет владельцу блога или сообщества поддерживать связь с аудиторией. Наличие такого функционала — скорее преимущество, поскольку для того, чтобы поддерживать связь, нет необходимости переходить в другое приложение. А это увеличивает нахождение и привязку пользователей к этой социальной сети. В качестве примера можно привести функцию Direct соцсети Instagram*.

  1. Оценочный функционал. Социальная сеть, прежде всего, подразумевает в себе публикацию контента для определенной аудитории людей. Поэтому можно добавить средства выражения своего мнения или оценки. Это могут быть реакции, лайки, комментарии и т.д. В качестве примера можно привести социальную сеть Facebook*, где пользователь может оставить реакции в виде эмодзи.

Сколько стоит создать социальную сеть

Цена социальной сети индивидуальна. Как правило, стоимость начинается от 1 млн рублей. Ценообразование зависит от:

  1. Функционала сервиса. Чем объемнее функционал потребуется реализовать, тем выше будет стоимость разработки. Как правило, программисты работают по фиксированной почасовой ставке, умноженной на количество часов, затраченных на работу. Соответственно, чем больше объем работы, тем выше будет ее стоимость.
  2. Опыта разработчика. Чем более долгий опыт разработки у программиста, тем более высокая у него почасовая ставка. Это объясняется тем, что у разработчика может быть шире стек технологий, да и ошибок в работе он может допустить меньше вследствие опыта. Таким образом, стоимость разработки у опытного специалиста будет дороже. Однако это возможность снизить риск получения некачественного продукта.
  3. Стека технологий. Определенный желаемый функционал социальной сети может предполагать использования конкретного языка программирования или фреймворка. В зависимости от этого цены работы специалистов могут отличаться. Чем более сложные технологии используются, тем выше будет стоимость социальной сети.

Как создать соцсеть: этапы

Среди этапов создания социальной сети можно выделить следующие шаги:

  1. Сбор информации. На этом этапе изучаются данные по проекту, предоставленные заказчиком. Команда разработки собирает информацию, какой результат желает получить заказчик, и актуализирует ее в соответствии с ситуацией на рынке. Возможно проведение дополнительных исследований командой разработки.
  2. Составление ТЗ. Техническое задание — необходимый документ, который помогает избежать недопониманий в процессе разработки. В нем прописываются основные требования к продукту. В зависимости от проекта тестовое задание может быть как обширным, так и кратким, с перечислением лишь основных тезисов.
  3. Дизайн. В соответствии с требованиями заказчика дизайнеры реализуют макеты экранов уже готового продукта приложения или создания сайта соцсети. Обычно разрабатывается несколько вариантов, которые представляются дизайнером клиенту.
  4. Программирование. Здесь происходит непосредственное создание функционала приложения разработчиками с помощью выбранного языка программирования и фреймворков. Как правило, этот этап является самым объемным по времени.
  5. Тестирование. Такие специалисты, как тестировщики, тщательно исследуют созданный сервис на наличие возможных ошибок. Это осуществляется с помощью автоматизированных программ и вручную.
  6. Публикация. После завершения всех этапов продукт может быть выпущен на рынок. Если это сайт, то он запускается для индексации поисковыми системами. Если это приложение, то оно проходит модерацию в магазине приложений и становится доступным пользователям для скачивания.

Как монетизировать социальную сеть

Монетизация социальных сетей возможна следующими способами:

  1. Продажа возможности таргетированной рекламы. При наличии в социальных сетях большого количества аудитории монетизация возможна в качестве продажи настроек таргетированной рекламы. Для этого в функционал необходимо добавить рекламный кабинет. При этом получение дохода, как правило, идет от комиссии рекламного бюджета или же в формате фиксированной цены за возможность настройки объявлений.
  2. Размещение рекламы от внешних рекламодателей. Это отличается от таргетированной рекламы тем, что объявления встроены в само приложение, в отличие от настроенных рекламных публикаций. Внешняя реклама может быть в виде всплывающих окон или же баннеров, размещенных в разных частях экрана.
  3. Подписка на дополнительный функционал. Дополнительный функционал социальной сети — возможность монетизации. В таком случае оплата ежемесячной подписки дает доступ пользователям к расширенным возможностям сервиса. Такой функционал, например, планирует ввести Twitter, где premium-пользователи получат свободу от рекламы, а также доступ к дополнительным иконкам и темам.

Особенности разработки социальной сети

Разработка социальной сети имеет некоторые особенности, о которых расскажем ниже.

Приватность и безопасность

Для того чтобы аккаунты пользователей были надежно защищены, необходимо разработать меры защиты, которые помогут снизить риск взлома. Особенно это важно, если на платформе будут находиться лидеры мнений с большим количеством аудитории, взлом чьих аккаунтов может привести к транслированию опасной информации. В качестве защиты можно использовать различные методы. Например, Instagram* применяет двухфакторную аутентификацию с помощью кода, присылаемого в SMS-сообщении.

Удобный интерфейс

Важно, чтобы размещение контента для пользователей было быстрым и удобным. Это может положительно повлиять на отношение к социальной сети и на пользовательский трафик. Также важен дизайн — не стоит делать его перегруженным различными деталями. В приоритете здесь удобство пользователей, которые являются целевой аудиторией проекта. Но при этом дизайн должен вызывать положительный эстетический отклик.

Возможность масштабирования

Рост пользовательского трафика и популярности социальной сети, скорее всего, потребуют в будущем масштабирования функционала сервиса и добавления дополнительных опций. Поэтому при разработке стоит закладывать возможность масштабирования приложения. Также важна и гибкость кода. Она заключается в том, что при изменении одной из частей кода остальные способны работать, и продукт не выходит из строя.

Способность выдерживать нагрузку

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

Заключение

  1. Создание социальной сети — долгий процесс, который займет не один месяц, а стоимость разработки составит более 1 млн рублей.
  2. При разработке соцсети следует уделить достаточное внимание вопросам приватности и безопасности, созданию удобного интерфейса, заложить возможности масштабирования и высокой производительности.
  3. К основным функциям социальной сети можно отнести авторизацию, публикацию контента, личные сообщения и возможность оценки контента.

*соцсети Meta запрещены в РФ

Django. Авторизация через социальные сети с помощью django-social-auth

Авторизация на сайтах через социальные сети очень удобна, не надо заполнять регистрационные формы и т.д., вам достаточно нажать на соответствующую кнопку и вас авторизует сам сайт, при этом нужные данные он сможет получить с сайта источника (той социальной сети, с которой выполняется авторизация).

На своих проектах я использую клёвую библиотеку django-social-auth, до неё пробовал django-ulogin, но сам сервис uLogin мне не понравился (мои сумбурные заметки об этом). На пыхе также обсуждали другие библиотеки, в частности loginza, но отзывы о ней плохие, поэтому даже не пробовал. В любом случае сервисы — это сервисы, и зависимость от сервисов это больше проблема (частые падения сервисов, убогие виджеты и внешний вид без кастомизаций и т.п.) чем зависимость от библиотеки, которая проксирует запросы к конечным «социальным сетям».

Далее будем обсуждать только django-social-auth.

Вообще, нам интересно два репозитория:

  • Основной, от omab;
  • И второй, со свежой поддержкой русских социалок от krvss, в который я пулял фиксы.

Регистрации в сетях

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

Facebook

Зайдите на https://developers.facebook.com/apps/ и нажмите на + Create New App. Введите название приложения (название сайта или проекта), после сабмита формы вы увидите реквизиты «App ID» и «App Secret».

Добавьте их в свой settings.py, пример:

FACEBOOK_APP_ID = '696381432507483' FACEBOOK_API_SECRET = '15afb0bbeb173aae12e8e875ffccc7a4' 

Теперь заполните поле "App Domains", укажите через пробел домены (например один локальный, другой продакшен домен). Поставьте галочку на "Website with Facebook Login" и введите адрес для редиректа, я редиректю в корень продакшен сайта.

Twitter

Зайдите на https://dev.twitter.com/ и введите логин и пароль от вашей учетной записи в Twitter. Далее заходите на https://dev.twitter.com/apps и жмёте на Create a new application, заполните нужные поля и соглашаетесь с правилами, после чего вы получите "Consumer key" и "Consumer secret".

Добавьте их в settings.py, пример:

TWITTER_CONSUMER_KEY = 'G2wMq4KYpTmgZDcjg0EzQ' TWITTER_CONSUMER_SECRET = 'rGHMGIbOwIEpoxjXzOahc2KmvxY8h10DpZ90LwqEjec' 

По умолчанию вам выдадут Access level "Read-only", для авторизации этого вам хватит. Рекомендую прочитать The Application Permission Model.

Вконтакте

Зайдите на страницу http://vk.com/developers.php и нажмите Создать приложение, выберите Тип "Веб-сайт" и введите адрес сайта и имя домена. В ответ получите "ID приложения" и "Защищенный ключ".

Добавьте их в settings.py, пример:

VK_APP_ID = '1234567' VKONTAKTE_APP_ID = VK_APP_ID VK_API_SECRET = 'Q0owlQESOXRYd2lcgnLa' VKONTAKTE_APP_SECRET = VK_API_SECRET 

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

Google+

Зайдите на страницу https://code.google.com/apis/console/ , нажмите Create, введите требуемые данные и во вкладке API Access увидите "Client ID" и "Client secret".

Добавьте их в settings.py, пример:

GOOGLE_OAUTH2_CLIENT_ID = '123456789.apps.googleusercontent.com' GOOGLE_OAUTH2_CLIENT_SECRET = 'p0dJSDjs-dAJsdSAdaSDadasdrt' 
GitHub

Зайдите на страницу https://github.com/settings/applications/new и введите логин и пароль от вашей учетной записи в GitHub. Введите имя приложения, адреса сайта для "URL" и "Callback URL" (у меня это один адрес корневой страницы сайта). И получите "Client ID" и "Client Secret", после чего добавьте их в settings.py:

GITHUB_APP_ID = 'da3bad06987041629b96' GITHUB_API_SECRET = '8bb53dd4a0b1bbc12f77e147c11d5fd6082adb8d' 

Теперь перейдем к настройке social_auth.

Установка и настройка django-social-auth

Для начала установим приложение:

pip install django-social-auth 

Теперь отредактируйте settings.py:

# Добавляем в AUTHENTICATION_BACKENDS нужные бекенды, # смотрите полный список https://github.com/omab/django-social-auth/blob/master/doc/configuration.rst AUTHENTICATION_BACKENDS = ( 'social_auth.backends.twitter.TwitterBackend', 'social_auth.backends.facebook.FacebookBackend', 'social_auth.backends.contrib.vk.VKOAuth2Backend', 'social_auth.backends.google.GoogleOAuth2Backend', 'social_auth.backends.contrib.github.GithubBackend', 'django.contrib.auth.backends.ModelBackend', ) # Добавляем в TEMPLATE_CONTEXT_PROCESSORS процессор "social_auth_by_name_backends" TEMPLATE_CONTEXT_PROCESSORS = ( 'django.contrib.auth.context_processors.auth', 'django.core.context_processors.request', 'social_auth.context_processors.social_auth_by_name_backends', ) # И добавляем "social_auth" в INSTALLED_APPS INSTALLED_APPS = ( . 'social_auth', ) 

Дополнительные настройки social_auth, добавьте в settings.py:

import random # Если имя не удалось получить, то можно его сгенерировать SOCIAL_AUTH_DEFAULT_USERNAME = lambda: random.choice(['Darth_Vader', 'Obi-Wan_Kenobi', 'R2-D2', 'C-3PO', 'Yoda']) # Разрешаем создавать пользователей через social_auth SOCIAL_AUTH_CREATE_USERS = True # Перечислим pipeline, которые последовательно буду обрабатывать респонс SOCIAL_AUTH_PIPELINE = ( # Получает по backend и uid инстансы social_user и user 'social_auth.backends.pipeline.social.social_auth_user', # Получает по user.email инстанс пользователя и заменяет собой тот, который получили выше. # Кстати, email выдает только Facebook и GitHub, а Vkontakte и Twitter не выдают 'social_auth.backends.pipeline.associate.associate_by_email', # Пытается собрать правильный username, на основе уже имеющихся данных 'social_auth.backends.pipeline.user.get_username', # Создает нового пользователя, если такого еще нет 'social_auth.backends.pipeline.user.create_user', # Пытается связать аккаунты 'social_auth.backends.pipeline.social.associate_user', # Получает и обновляет social_user.extra_data 'social_auth.backends.pipeline.social.load_extra_data', # Обновляет инстанс user дополнительными данными с бекенда 'social_auth.backends.pipeline.user.update_user_details' ) 

Подключите роуты в urls.py:

urlpatterns = patterns('', . url(r'', include('social_auth.urls')), ) 
./manage.py syncdb ./manage.py migrate social_auth 

Документацию можно посмотреть тут:

  • Основная документация
  • Документаци по pipeline

Виджет для вывода кнопочек

Это просто шаблонный inclusion-тег, который выводит ссылочки в виде кнопочек-логотипов социальных сетей, выглядит примерно так:

Smappi Auth
KinsburgTV Auth

Сам виджет я не стал публиковать в PyPI, так как не считаю это важным, вам следует просто скопировать исходники отсюда https://github.com/adw0rd/django-social-auth-widget

После чего добавьте в settings.py следующий список:

SOCIAL_AUTH_PROVIDERS = [ > for p in ( ('github', u'Login via GitHub', (0, -70)), ('facebook', u'Login via Facebook', (0, 0)), ('twitter', u'Login via Twitter', (0, -35)), ) ] 

В вашем шаблоне с формой авторизации использовать так:

Обновление аватарок при авторизации

В статье Django Social Auth: now with images имеется пример как через сигналы обновлять аватарку пользователю, на мой вгляд, код служит только для примера.

Комментарии

На uLogin'е есть не слишком приятная особенность.
Я могу на самом улогине в своём профиле указать дефолтные параметры, в том числе мыло. И нихрена не проверяется. Могу, например, твоё указать.
При авторизации же через фейсбук, я могу выбрать какие параметры я желаю пересылать. Например, отключить мыло. Тогда отключённые параметры будут браться из профиля на ulogin'е. И никак не проверить откуда пришло мыло, с фейсбука или с улогина.
В итоге авторизуюсь на фейсбуке под своими данными, а бэкенду приходит, что я под твоими мылом зашёл.

Здесь с этим всё ок?

Да, uLogin откровенное гавно.

uLogin всё сильнее расстраивает. то у него в качестве пола от вконтакта "1" - это female, а от facebook "1" - male.
Дата дня рождения в убогом виде, строка "1.2.1970"
Через раз 500-я ошибка
Но самое убогое, пытался авторизоваться через ЖЖ, в качестве имени пользователя он вернул "Мастерская", а в качестве фамилии "интернет-разработчика", а никнейм вообще убил "asanov"

Да, с этим тут все окей, вообще никаких нареканий у меня! Текущие проблемы можно тут посмотреть https://github.com/omab/django-social-auth/issues и если что пофиксить самому. Я например вконтакте-бекенд фиксил когда-то. А вот как фиксить сторонний сервис (тот же uLogin) - хз, скорее всего, после подачи реквеста в саппорт - будут тянуть время.

оповещения о камментах на мыло у тебя не предусмотренно?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *