Skip to main content

The social ethosa library for Python

Project description

Social-ethosa

A Python library that uses requests
Documentation in other languages

Changelog

Examples:

Get started

Installation: pip install --upgrade social-ethosa
Import:

from social_ethosa import *

Vkcom

vk = Vk(token="Your token is here", group_id=12345, debug=True, lang="en")
# the group_id parameter should be used if you are going to log in through a group.
# In this example, we will use group authorization.

@vk.on_message_new
# This decorator is an event handler that executes the function passed to it on a new message
# The decorator's name is taken from the official names, but with the prefix " on_"
# https://vk.com/dev/groups_events
def getMessage(message):
  text = message.text
  peer_id = message.peer_id
  from_id = message.from_id
  attachments = message.attachments

using the file Uploader:

vk.uploader.getUploadUrl("message_photo") # getting a link to upload files
# you can also pass other arguments (argument=value)
# to get the rest of the UploadUrl names, use the function
# uploader.getAllTypes

upload files:

response = vk.uploader.uploadFile("path") # you can also pass other arguments (argument=value)

Some audio methods are also available in my library:

login = "89007003535"
password = "qwertyuiop"

audio = Audio(login=login, password=password, debug=1)
audios = audio.get()
# Since the audio methods are not available in the official API, I had to make a parser of the site

Yandex api

Using Yandex api:

TOKEN = "translate token"
yt = YTranslator(token=TOKEN)
text = "Пайтон - хороший язык программирования"
response = yt.translate(text=text, lang="en") # Text translation
print(response)

Trace moe

Using the TraceMoe api:

tracemoe = TraceMoe() # initialization for future use
# In directory with script there is screenshot from anime " a. png"
response = tracemoe.search("a.png", False, 1)
# param 1 - path to image or image url
# param 2 - True, if param 1 is link
# param 3 - filter search

Image did not load

If the anime is found, you should get a video preview of the found moment:

video = tracemoe.getVideo(response, mute=0) # The mute parameter must be 1 if you want to get video without sound
tracemoe.writeFile("file.mp4", video)
# param 1 is a path to write file
# param 2 is a video received by the get Video method

BotWrapper

In the library there is a wrapper for bots!
Initialization:

bw = BotWrapper()

Getting a random date

date = bw.randomDate(fromYear="2001", toYear="3001")
# Returned: string
# The fromYear and toYear parameters are optional

BetterBotBase

This class uses pickle to maintain the database.
Let's initialize this class.

bbs = BetterBotBase("users folder", "dat")
# The first argument is the name of the folder where users will be stored
# the second argument is the Postfix of the files, in our case the files will look like this:
# 123123123.dat

BetterBotBase can also be used with Vkcom:

@vk.on_message_new
def getNewMessage(message):
  from_id = message.from_id
  if from_id > 0:
    user = bbs.autoInstall(from_id, vk)
# autoInstall automatically creates or loads users and returns the user for further action with it.

BotWrapper can also be used to interact with BetterBotBase!

text = bw.answerPattern("Hello, <name>, your money is <money>!", user)
# the answer Pattern method automatically substitutes variables from user,
# thus making it a little easier to format the string

You can define your own templates to the database!

# right after BetterBotBase announcement
bbs.addPattern("countMessages", 0)
# the first argument is the variable name
# the second argument is the default value of the variable (when creating a user)

You created a template, but it was not added to the old users? not a problem!

bbs.addNewVariable("countMessages", 0)
# this method works the same as addPattern, but with older users

ThisPerson api

Initialization is quite simple

person = ThisPerson()

In the class now only 3 methods to retrieve non-existent people/cats/waifu

rperson = person.getRandomPerson()
rcat = person.getRandomCat()
rwaifu = person.getRandomWaifu()

after receiving the generated photo, it should be written to a file.

person.writeFile("person.png", rperson)
person.writeFile("cat.png", rcat)
person.writeFile("waifu.png", rwaifu)

Yummyanime club

There are few methods here, as I have not found an official API. Let's get started.

ym = YummyAnime()
ym = YummyAnime(login="yourmail@gmail.com", password="iampassword")
# You can log in to your account if you need to

Getting random anime

randomAnime = ym.getRandomAnime()
print(dir(randomAnime))
print(randomAnime)

You can also get a list of anime updates

updates = ym.getUpdates()
anime = updates[0].open() # You will get the same object that the getRandomAnime() method returns
print(updates)
print(anime)

And also you can view your profile

profile = ym.getProfile()
print(profile)

bloggercom api

Module to work with blogger.com
Initialization:

blogger = Blogger(apiKey="Your api key")

get blog by id:

blog = blogger.blogs.get(123123)
print(blog["name"]) # You can use the resulting object as a dictionary
print(blog.name) # or as an object :/
print(blog)

get blog by url:

blog = blogger.blogs.getByUrl("https://meethosa.blogspot.com")

get posts by blog id

posts = blogger.posts.get(123123)

get pages by blog id

posts = blogger.pages.get(123123)

eMath

I decided that very few people will need this module, so importing it separately from the main one:

from social_ethosa.eMath import *

Point

You can create an N-dimensional point:

point = Point(0, 0, 0)
point1 = Point(4, 2, 3)

And also you can find the Euclidean distance between them:

distance = point.euclideanDistance(point1)
print(distance)

Matrix

Also this module has a Matrix class

matrix = Matrix(3, 3) # Creating a 3x3 matrix
matrix1 = Matrix([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]]) # Creating a 3x3 matrix

You can transpose the matrix

matrix1.transpose()
# 1 4 7
# 2 5 8
# 3 6 9

And multiply the matrix by the number

matrix1 *= 3
# 3 12 21
# 6 15 24
# 9 18 27

The addition of two matrices is also possible

matrix2 = Matrix([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
matrix1 += matrix2
# 4 14 24
# 10 20 30
# 16 26 36

Matrix multiplication? No problem!

matrix = Matrix([[1, 2, 3],
                [4, 5, 6]])
matrix1 = Matrix([[1, 2],
                [3, 4],
                [5, 6]])
matrix *= matrix1
# 22, 28 
# 49, 64

matrix = Matrix([[1, 2],
                [3, 4]])
matrix1 = Matrix([[1, 2],
                [3, 4]])
matrix *= matrix1
# 7, 10
# 15, 22

You can also clear or fill the matrix with any numbers!

matrix = Matrix([[1, 2],
                [3, 4]])
# 1 2
# 3 4

matrix.clear()
# 0 0
# 0 0

matrix.fill()
# 0 0
# 0 0

matrix.fill(7)
# 7 7
# 7 7

you can also edit individual parts of the matrix

matrix.setAt(0, 0, 8)
# 8 7
# 7 7

a = matrix.getAt(0, 0)
# 7

And also you can mirror the matrix:

matrix.flip()
# 7 7
# 7 8

ArithmeticSequence

There are many ways to initialize an arithmetic sequence.

ars = ArithmeticSequence(0, 2)
ars = ArithmeticSequence([0, 2])
ars.getElem(1) # 2
ars.getElem(0) # 0
ars.getElem(4) # 8

You can also get the sum of the elements

ars = ArithmeticSequence(5, 5)
ars.getSum(0) # 5
ars.getSum(2) # 15

GeometricSequence

There are many ways to initialize an geometric sequence.

ars = GeometricSequence(1, 2)
ars = GeometricSequence([1, 2])
ars.getElem(1) # 2
ars.getElem(0) # 1
ars.getElem(4) # 16

You can also get the sum of the elements

ars = ArithmeticSequence(1, 2)
ars.getSum(0) # 1
ars.getSum(2) # 7
ars.getSum(1) # 3

utils

This module can make your life much easier.

def smthDef(arg1, arg2, **kwargs):
    print(getValue(kwargs, "argument", None))
# getValue - abbreviation of kwargs["argument"] if "argument" in kwargs else None

downloadFileFromUrl("url", "path to file")
# this method downloads the file from the link and places it in the specified path.

updateLibrary("0.2.42")
# this method automatically updates the library to the specified version.
# if no version is specified, the library is updated to the latest version.

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(splitList(lst, 2))
# [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(splitList(lst, 3))
# [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0]]
# the splitList method tries to divide the passed list into equal parts

timer = Timer()
# Timer-class for calling certain functions after a certain time.

@timer.after(1000)
# after method run this function after 1000 milliseconds
def hi():
  print("hello world")

@timer.afterEvery(100, 1000)
# the after Every method starts this function after 100 milliseconds and will call it every subsequent 1000 milliseconds
def hello(): print("hello")

timer.cancel()
# when the timer method is called.cancel will automatically close all running timers of this timer

extra

This module, like eMath, must be imported separately

from social_ethosa.extra import *

EList:

lst1 = EList() # create []
lst2 = EList("string") # create ["s", "t", "r", "i", "n", "g"]
lst3 = EList(1, 2, 3) # create [1, 2, 3]
lst4 = EList([1, 2, 3]) # create [1, 2, 3]

all the methods of normal lists are present in this, however there are a few features here

lst1 += 1 # [1]
lst1 += [1, 2] # [1, 1, 2]
lst1 += EList(3, 4) # [1, 1, 2, 3, 4]
lst1.clear() # []
lst1 += [1, 2, 3] # [1, 2, 3]
lst1.split(1) # [[1], [2], [3]]
lst1.clear()
lst1 += [1, 2, 3]
lst1[2] # 3
lst1[3] # error
lst1[3] = 4 # working!
lst1 # [1, 2, 3, 4]
lst1.len() == len(lst1) # True
lst1.sum() == sum(lst1) # True
lst1.standartItem(0)
lst1[8] = 1
lst1 # [1, 2, 3, 4, 0, 0, 0, 0, 1]

There are also non-standard methods, for example:

lst1.binarySearch(1) # 0
lst1.interpolationSearch(1) # 0
lst1.sortA(EList.GNOME_SORT) # [0, 0, 0, 0, 1, 1, 2, 3, 4]

LogManager

LogManager("filename.txt", "text for log")
# or
with LogManager("filename.txt") as log:
  log.write("text for log")

MarkovChains

mchains = MarkovChains()
mchains.addChain("name", "hello")
mchains.addChain("hello", "name")
mchains.generateSequence(5, auth="name")
# ["hello", "name", "hello", "name", "hello"]

mchains = MarkovChains()
mchains.execute("name => hello => c <=> ban => name => c")
mchains.generateSequence(5) # ['c', 'ban', 'name', 'hello', 'c']

AMarkov

Also you can easily use Markov algorithm

m = AMarkov()
m.addRule("1", "0|")
m.addRule("|0", "||0")
m.addRule("0", "")
m.compile("101") # |||||

EQueue

There is an queue here

queue = EQueue()
for i in range(10):
    queue.add(i)
queue.len() # 10
test = ", ".join("%s" % queue.getRandom() for i in range(queue.len()))
queue.len() # 0
test # 8, 1, 9, 0, 6, 4, 2, 5, 3, 7

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

social-ethosa-0.6.4.tar.gz (47.3 kB view details)

Uploaded Source

Built Distribution

social_ethosa-0.6.4-py3-none-any.whl (58.5 kB view details)

Uploaded Python 3

File details

Details for the file social-ethosa-0.6.4.tar.gz.

File metadata

  • Download URL: social-ethosa-0.6.4.tar.gz
  • Upload date:
  • Size: 47.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3

File hashes

Hashes for social-ethosa-0.6.4.tar.gz
Algorithm Hash digest
SHA256 a8448a639938117a3c647b3401d5718292c8b7264a56dd5e55c3155f491a1624
MD5 5fbec663e07aa83e7f3b84bd049d08e8
BLAKE2b-256 e3de3ad1fcf5e1d19777c886140929bde0796766f81a817990c4a679e635f9fa

See more details on using hashes here.

File details

Details for the file social_ethosa-0.6.4-py3-none-any.whl.

File metadata

  • Download URL: social_ethosa-0.6.4-py3-none-any.whl
  • Upload date:
  • Size: 58.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.3

File hashes

Hashes for social_ethosa-0.6.4-py3-none-any.whl
Algorithm Hash digest
SHA256 572ded790799b50c5b009c96335c4337bd576075b3f9af8a2026b8d311fa36f3
MD5 61831e6f782be6ebf9333cc87a5ac8b3
BLAKE2b-256 2489fa1b2de1ac5cac77ee96afe917ddaf2b8e4381c796734a0d494acc5e6428

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page