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.

Files for social-ethosa, version 0.6.4
Filename, size File type Python version Upload date Hashes
Filename, size social_ethosa-0.6.4-py3-none-any.whl (58.5 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size social-ethosa-0.6.4.tar.gz (47.3 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page