星光☆学而思专用库
Project description
xingyunlib
[toc]
开发者:严子昱|崔轩宇
v1.2.20201004
#v1.2.xx以后全是正式版#
#hack-20201004:修复xesuser故障
版权所有,侵权必究
内置函数 导入方式:
from xingyunlib import *
加密函数
md=md5("111")#作用:用MD5加密"111",返回一个字符串
s1=sha1("111")#作用:用sha1加密"111",返回一个字符串
s256=sha256("111")#作用:用sha1加密"111",返回一个字符串
颜色类
color=colorX(颜色,传进去的颜色类型)#类型支持"rgb","hsv","hex"
#示例:
color=colorX((100,100,100),"rgb")
color.color
返回颜色
z=color.color
color_to(to_color,change=False)
返回一个要转换的颜色
to_color:转换的颜色,类型支持"rgb","hsv","hex"
change:是否更改原来的颜色
color=colorX((255,255,255),"rgb")#实例化rgb
color.color_to("hex",True)#更改进制为16进制
print(color.color)#打印出color.color
all(一次性导入扩展!可能出现覆盖现象!)
使用方式
from xingyunlib.all import*
#或者
import xingyunlib.all as xingyunlib
print_format(print格式化扩展)
开发者:严子昱
导入方式
from xingyunlib.print_format import*
print()
print(*str,t=0,sepr=" ",end="\n")
我们来逐个讲解他们的用法
首先来看t参数:
t=每个字停留的时间(默认为不停留)
比如说,要每个字停留1秒,输出"nice"的代码如下:
print("nice",t=1)
然后我们来看end参数 这个end参数其实和原来print的end参数是同样的作用 默认是"\n"(换行符)
最后我们看sepr参数,这个参数也是和原来print的sepr是同样的作用
我们来看一个例子:
print("ni","e",sepr="c")
最后输出的就是“nice”
我们来看大家这个很关心的变色简洁方式 我们在变色具体支持这些颜色: 红、白、绿、蓝、黄、青、紫 用法如下(注意是两个斜杠): '\'+颜色(字的颜色变化) '\l'+颜色(字的颜色变化,亮色) '\b'+颜色(字的背景变化) '\bl'+颜色(字的背景变化,亮色) '\'(去除所有的变色效果)
clear_os()
clear_os()
清除屏幕上的所有文字
xes更改(去除xeslib里面所有的print)
最新版本的xingyunlib增加了xeslib的内容
导入方式
from xingyunlib.xes import xeslib里面的库名
更改:
把xeslib里面所有的print都去了
修改AIspeak.speak函数
from xingyunlib.xes import AIspeak
xes.AIspeak.speak("hello python!","file.mp3")
"""
本程序作用:
将hello python!
保存到file.mp3音频文件里面,并且不播放
"""
xes.AIspeak.speak("hello python!")
"""
本程序作用:
播放hello python!这段音频
"""
xesapp(获取学而思站上某个作品的数据!已修复!)
开发者:严子昱|崔轩语
导入方式
from xingyunlib.xesapp import*
xesapp(url)
<xesapp>=xesapp(url)
构建一个运行对象 url为学而思里面的py作品网址
接下来讲这个类的方法:
get_hot()
返回作品的热度
print(xesapp.get_hot())
get_cover()
返回作品封面的url
print(xesapp.get_cover())
load_cover(filename)
下载作品封面到filename
xesapp.load_cover("")
get_view()
返回作品的观看人数
print(xesapp.get_view())
get_hot()
返回作品的热度
print(xesapp.get_hot())
get_like()
返回作品的点赞数
print(xesapp.get_like())
get_unlike()
返回作品的点踩数
print(xesapp.get_unlike())
load_file(cache = "")
默认下载作品源文件到工作目录 如果cache不为空择下载到这个文件夹
xesapp.load_file()
is_like()
判断在程序运行这个作品有没有人点赞 返回一个bool值 True:点赞了 False:点踩了 None:没有点赞也没有点踩
if xesapp.is_like == True:
print("点赞了")
elif xesapp.is_like == False:
print("点踩了")
else:
print("什么都没点")
run_app()
运行这个作品
exec(xesapp.run_app())
get_published()
获取作品第一次保存时间
print(xesapp.get_published())
get_modified()
获取作品最后一次更新时间
print(xesapp.get_modified())
is_hidden_code()
获取作品是否隐藏代码
if xesapp.is_hidden_code():
print("作品的代码隐藏了")
else:
print("作品的代码没有隐藏")
get_description()
获取作品的说明
print(xesapp.get_description())
get_comments()
获取作品一共有多少人评论
print(xesapp.get_comments())
is_comments()
获取从这个作品初始化到现在是否有人评论
if xesapp.is_comments():
print("评论了")
else:
print("没有评论")
cmt(url)
这个是一个获取评论的api
dta_dic
#获取一个包含所有评论的列表
a=cmt("http://code.xueersi.com/home/project/detail?lang=code&pid=9785566&version=offline&form=python&langType=python")
print(a.dta_dic)
#输出
"""
(略)
"""
fmt()
#返回一个字符串(评论的字符格式化)
a=cmt("http://code.xueersi.com/home/project/detail?lang=code&pid=9785566&version=offline&form=python&langType=python")
print(a.fmt())
#部分输出
"""
[2020-10-17 20:52:11]
一维回复严子昱:快点=-=不取关就pen你
[2020-10-17 20:51:31]
一维回复严子昱:有时关注我这个人,并不是太好的选择
取关我吧,有事请加qq:3456198711
微信:huiyu431249891
[2020-10-17 18:34:35]
俊翔回复严子昱:作者是喜欢互关吗?居然关注我这样的蚂蚁,太感动了
[2020-10-15 21:56:11]
陈奕翰回复严子昱:考虑合作嘛
[2020-10-10 19:29:26]
茜幻回复严子昱:作者在吗
[2020-10-10 19:10:42]
蒋狄璁回复严子昱:互关
.......(略)
"""
sorted(by=“likes”,reverse=True)
#设置排序
a=cmt("http://code.xueersi.com/home/project/detail?lang=code&pid=9785566&version=offline&form=python&langType=python")
a.sorted(by="likes",reverse=True)#reverse为 从高到低排列
print(a.fmt())
"""
[2020-10-15 21:56:11]
陈奕翰回复严子昱:考虑合作嘛
[2020-10-17 20:52:11]
一维回复严子昱:快点=-=不取关就pen你
[2020-10-17 18:34:35]
俊翔回复严子昱:作者是喜欢互关吗?居然关注我这样的蚂蚁,太感动了
[2020-10-01 20:51:57]
王玎珰回复严子昱:啊这
...(略)
"""
xesuser(获取学而思站上某个用户的数据!已修复!)
注意!!
千万一定不要超高频率请求,否则会报错!!!
作者:严子昱
导入方式
from xingyunlib.xesuser import*
get_user_id("作品网址")
user_id=get_user_id("作品网址")
#本作品最重要的函数,这个获取作品网址的作者的user_id
get__fans(user_id)
fans_info=get_fans(user_id)
#这个user_id从上面拿
#获取这个人粉丝的大部分信息,返回一个列表
#每项是一个字典:
fans_info[x]["realname"]#:获取第x项他的名字
fans_info[x]["avatar_path"]#:获取第x项他头像的url
fans_info[x]["fans"]#:获取第x项他的粉丝数量
fans_info[x]["follows"]#:获取第x项他的关注数量
get_follows(user_id)
follows_info=get_follows(user_id)
#大体和get_fans一样
#获取这个人粉丝的大部分信息,返回一个列表
#每项是一个字典:
follows_info[x]["realname"]#:获取第x项他的名字
follows_info[x]["avatar_path"]#:获取第x项他头像的url
follows_info[x]["fans"]#:获取第x项他的粉丝数量
follows_info[x]["follows"]#:获取第x项他的关注数量
get_info(user_id)
user_info=get_info(user_id)
#获取这个人的大部分信息,返回一个字典
user_info["name"]#:返回这个人的名字
user_info["slogan"]#:返回这个人的口号(名字下面那段)
user_info["fans"]#:返回这个人的粉丝数量
user_info["follows"]#:返回这个人的关注数量
user_info["icon"]#:返回这个人的头像url
user(user_id)
user=user(user_id)#这个其实大部分都是前面的内容,不过前面的加载比较慢,这个适用需要数据比较多的程序
user.works#:获取发布的作品总数
#user.work_info#:获取发布的作品的信息,返回一个列表,列表的每项都是字典
user.work_num#:获取一共有多少个作品(曾经发过的也算)
user.fans#:获取粉丝总数
#user.fans_info#:获取粉丝信息(和get_fans返回一样的信息)
user.follows#:获取关注总数
#user.follows_info#:获取关注信息(和get_follows返回一样的信息)
user.like_num#:获取点赞总数
user.view_num#:获取浏览总数
user.favorites#:获取收藏总数
xesapi
导入方式
from xingyunlib.xesapi import*
get_api(url)
返回url这个api上的数据
示例->http://code.xueersi.com/api/index/works/modules
print(get_api("http://code.xueersi.com/api/index/works/modules"))
"""
==输出==
{'stat': 1, 'status': 1, 'msg': '操作成功', 'data': [{'title': '可多推荐', 'simple_title': '推荐', 'lines': 2, 'projects': [{'id': 11584188, 'name': '圆圈战争', 'category': 1, 'type': 'normal', 'user_id': 9686613, 'thumbnail': 'https://rescode.xesimg.com/hufu-code/common/mit/32f6766530dc287c1c8ab00c634e352b.png', 'published': 1, 'published_at': '2020-11-18 19:42:53', 'modified_at': '2020-11-18 19:42:53', 'likes': 4, 'views': 333, 'comments': 0, 'version': '3.0', 'source': 'xes_live', 'deleted_at': None, 'original_id': 2, 'created_at': '2020-11-17 20:46:43', 'updated_at': '2020-11-20 21:25:02', 'weight': 1, 'adapter': '', 'hidden_code': 2, 'source_code_views': 3, 'removed': 0, 'first_frame': 'https://rescode.xesimg.com/hufu-code/common/mit/32f6766530dc287c1c8ab00c634e352b.png', 'unlikes': 5, 'project_id': 11584188, 'works_id': 11584188, 'lang': 'scratch', 'popular_score': 12.13, 'username': '冯嘉睿', 'user_avatar': 'https://oot.xesimg.com/user/h/cc1e41a2dc511b8108a05b8f0dc8cf69.jpg', 'project_type': 'scratch', 'topic_id': 'CS_11584188'}, {'id': 11027485, 'name': '井字棋小游戏(双人)', 'category': 1, 'type': 'normal', 'user_id': 7818569, 'thumbnail':
...(略)
"""
get_page(page,lang="",tag="",type="popular")
page:页码
lang:语言
tag:标签
type:爬取页面类型(默认为popular)
print(get_page(1,"cpp"))
'''
==输出==
{'page': '1', 'per_page': '35', 'total': 7000, 'data': [{'id': 10443775, 'name': '教你如何黑电脑', 'category': 1, 'type': 'normal', 'user_id': 8730932, 'thumbnail': 'https://livefile.xesimg.com/programme/assets/b33adba6678f5e477f65d0f36d5581eb.jpg', 'la
...(略)
'''
page_all_tags
这个是一个常量(就是上面那个tag可以取得量)
print(page_all_tags)
"""
==输出==
{'all_tags': ['游戏', '动画', '故事', '模拟', '艺术', '教程', '算法', '海龟', '沙盒专区', '其他'], 'tips': '1、为什么要给作品打分类标签?n为你的作品选择分类,更有利于其他小朋友精准的找到你的作品,这样,你的作品被别人看到的机率会更大哦。n一定要准确的选择分类,不要随便选择不或者不选呦!nn2、如何为自己的作品选择分类?n要想准确的选择分类,首先要先知道每个分类代表什么意思,一起来了解一下吧!n游戏:射击,冒险,跑酷,换装等等这些都算作游戏。n动画:用编程实现动画效果的作品。n故事:用编程表达一个奇妙的故事,比如写小说。n模拟:视频软件模拟器,音乐软件模拟器,浏览器模拟器,甚至做个模拟的系统。n艺术:美术,音乐等等类型的作品都可以。n教程:如果你是大牛,就快做作品教别人和你一样优秀吧!n算法:算法是解决一个问题的方法,C++用户请看这里。n海龟:海龟画图是python语言中专门用户画图的方法呦!n沙盒专区:MC?mini?为什么不自己创作一个类似的作品呢?n其他:如果没想好自己作品的分类,就选这个吧。'}
"""
pygame_extend(pygame扩展)
导入方式:
from xingyunlib.pygame_extend import *
(这样顺便导入pygame和sys欸嘿嘿)
!没写完教程等需求多了在说把!
tkinter_extend(tkinter扩展)
导入方式
from xingyunlib.tkinter_extend import*
作者:严子昱
inpu_box
(class)
#创建(就当button控件用):
a=inpu_box(tk,函数名,**按钮的配置)
#打包:
a.pack(**pack的配置)
#配置:
a.config_entry(**文本框的配置)
a.config_button(**按钮的配置)
#其实你基本可以当做Entry来用,除了初始化语句还有配置以外基本都是一样的
#(剩下的教程还没写完)
jitter()
作用:抖动窗口(需要在窗口加载完毕后使用,否则可能会出现鬼畜)
from tkinter import *
root = Tk()
a = Text(root)
a.pack(fill=BOTH)
jitter(root)
root.mainloop()
center()
作用:将窗口居中
from tkinter import *
root = Tk()
a = Text(root)
a.pack(fill=BOTH)
jitter(root)
root.mainloop()
dsfAdmin(自动安装第三方库)
开发者|严子昱
(暂时只支持windows)
导入方式
from xingyunlib.dsfAdmin import*
get_pakages()
作用:获取已安装每个包的版本
for x in range(len(get_pakages())):
print("库"+x[0].center(19," "),"版本"+x[1].center(10," "))
find_pakages(pakages,ver=None)
作用:获取时否安装pakage这个库,ver代表版本,默认不进行版本监测
if find_pakages("xingyunlib"):
print("你有安装xingyunlib库!")
else:
print("你没有安装xingyunlib库!")
upgrade_pakages(pakage)
作用:更新pakage这个库
upgrade_pakages(“xingyunlib”)
install_pakages(pakage)
作用:安装这个库,常和find_pakages一起用
if not find_pakages("alsolib"):
install_pakages("alsolib")
#注意这个,这个非常重要的,可以在没安装第三方库的时候自动下载库
dump_pip_list(filename)
作用:将库的list保存到这个文件里面
load_pip_list(filename)
作用:将这个文件里面的库导出到正在使用的编译器
dump_pip_list("pip_pakages")
#同目录会出现一个‘pip_pakages.pip’文件
# |把这个文件移到另一台电脑
# v
load_pip_list("pip_pakages")
#然后这个程序就会自动安装在第一台电脑上所有的第三方库了
image(pillow及wordcloud扩展)
开发者|严子昱
导入方式
from xingyunlib.image import*
resize(filename,XY)
作用:将filename这个文件变成XY大的文件
resive("img1.png",(100,100))
#将img1.png变成100x100的缩略图
cloud(text,font_path,savafile=None,image=None,background_color="white",color=True)
(这个函数要安装numpy和wordcloud库)
作用:text为列表,font_path为字体文件的位置
savafile为保存的文件名,image为模板图片的名字
background_color为背景颜色 color为是否根据模板图片的颜色上色(在有模板的情况下)
import os
text="ahuidgayugwuydgatywefuwfdytafayuofdwtyfauyfatyfautfatyfatyufduyoawfgtydfeutoaftyaf".split("a")
cloud(text,"(你的字体文件)","all.png")
os.startfile("all.png")
add_text(img, text, **args)
这个**args包括以下内容
font=(”字体文件.ttf”,字号)
XY=(x坐标,y坐标)#这个坐标以图片左上角为0,0(原点)
fillColor=颜色(建议使用16进制颜色)
show_img=True#设置是否在修改完成后显示图片,默认为False
change_img="newimgname.png"#设置输出的图片文件名
add_text("原图.png","广告",font=font,XY=XY,fillColor=fillColor,show_img=show_img,change_img=change_img)
user(自定义用户类)
开发者|严子昱
导入方式
from xingyunlib.user import *
初始化:
user_login(filename=None)
filename:之前的保存数据的文件名,如果没有保存过请不要写filename
user=user_login()
#导入之前的数据
user=user_login("<数据文件名称>")
注册:
user.registered(name,key,flag=True,filename=None)
name:注册的名字
key:密码
flag设置为True:如果已经导入数据则返回False(如果已经注册过了就不让你注册)否则返回True(注册成功)
flag设置为False:都可以注册
filename:保存数据文件的名称
type=user.registered(input("请输入你的名字:"),input("请输入你的密码:"),flag=True,filename="data")
if type==True:
print("注册成功!")
else:
print("注册失败!")
user.login(name,key)
name:注册时的名称
key:密码
返回一个bool值,为True或False
True:验证密码正确 False:验证失败
type=user.login(input("请输入你的名字:"),input("请输入你的密码:"))
if type==True:
print("注册成功!")
else:
print("注册失败!")
user.load(filename)
导入保存的数据,filename为文件名
b=user_login()
b.load("你保存的文件名")
导入方式
from xingyunlib import mail
用法:
mail.send(to,title,txt)
mail.send("3161399620@qq.com","hello python","hello world!")
to:发送给的邮箱
title:标题
txt:发送的文本
err(自定义抛出错误)
导入方式
from xingyunlib import err
当你有一些程序想在特定的情况终止怎么办?
试试下面的程序
err(txt)
from xingyunlib import err
a=input("请输入1:")
if a!="1":#如果非1
err.err("你没有输入1。。。")
else:
...
#程序自然退出
http_spider(爬虫)
导入方式
from xingyunlib import http_spider
load_requests(str,between,line)
默认值:between=":" ; line="\n"
between:分隔符
line:换行符
这个概念有点难理解,具体看下面示例,能不能听懂由天命
from xingyunlib import http_spider
header=http_spider.load_requests("""Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.116 Safari/537.36""",": ","\n")#那段字符串是从浏览器复制出来的
print(header)
"""
----------
输出:
{'Accept': 'application/json, text/plain, */*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.116 Safari/537.36'}
"""
主要作用是自动分析从浏览器复制出来的headers
spider(*args,**kwargs)
这个函数就明显很水,完全是凑数用的,不过对于一些新手来说还是有点用的
其实就是requests的变体,增加了一个判断是否状态码是否10x,40x,50x的功能而已
from xingyunlib import http_spider
print(http_spider.spider("http://code.xueersi.com/api/compilers/6?id=6").text)
#略去输出结果
ua_list
话不多说,上代码
from xingyunlib import http_spider
print(http_spider.ua_list)
"""
输出:
['Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)', 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1)', 'Mozilla/5.0 (compatible; rv:1.9.1) Gecko/20090702 Firefox/3.5', 'Mozilla/5.0 (compatible; rv:1.9.2) Gecko/20100101 Firefox/3.6', 'Mozilla/5.0 (compatible; rv:2.0) Gecko/20110101 Firefox/4.0', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2', 'Mozilla/5.0 (compatible) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.682.0 Safari/534.21', 'Opera/9.80 (compatible; U) Presto/2.7.39 Version/11.00', 'Mozilla/5.0 (compatible; U) AppleWebKit/533.1 (KHTML, like Gecko) Maxthon/3.0.8.2 Safari/533.1', 'Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 ', 'Mozilla/5.0 (iPhone; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit/532.9 (KHTML, like Gecko) Version/5.0.3 Mobile/8B5097d Safari/6531.22.7', 'Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/4.0.2 Mobile/8C148 Safari/6533.18.5', 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7) AppleWebKit/534.16+ (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4']
"""
这是一个列表,里面有很多笔者搜集的ua,(截至2020-9-19)收录了15个ua,足够你用了
get_xes_url(url)
爬取一个xes的页面
from xingyunlib import http_spider
print(http_spider.get_xes_url("http://code.xueersi.com/api/compilers/6?id=6"))
#略去输出结果
data(保存数据)
数据类方法
2020-10-1
作者:严子昱
导入方式
from xingyunlib import data
Data
初始化方法:
dta=data.Data(filename,find=False)
"""
filename:文件名,若没有则创建
find:搜索模式,若没有filename则报错
"""
输入数据:
change_data(data)
dta=data.Data(filename,find=False)
#略
"""
data参数支持的数据:
list,bool,tutle,str,set,dict,int,float
"""
dta.change_data("加油!")
eval_data()
把从文件中保存的数据转换成可执行内容
"""fruit.txt内容:
["apple","orange"]
"""
dta=data.Data("fruit.txt",find=False)
dta.eval_data()
for x in dta.data:
print(f"fruit:{x}")
"""
输出结果:
fruit:apple
fruit:orange
"""
save()
保存结果到文件中
dta=data.Data("great",find=False)
dta.change_data(["hhc","hhv"])
dta.save()
"""great内容:
["hhc","hhv"]"""
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
Built Distribution
Hashes for xingyunlib-1.2.20210416-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4608d482a50bb945c0cfb719bca3e0829d86e72fc62e67d6e672ec073089dd8 |
|
MD5 | 16bb0b308d5af4007caf97e48d924fbe |
|
BLAKE2b-256 | 2b2066efffd67e9a138f9ccfbb7aacd76e7988850738c0a17f6ee980114a570a |