1 Star 0 Fork 0

xu-yuan-20201324/python_use

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
crawler_homework.py 3.50 KB
一键复制 编辑 原始数据 按行查看 历史
xu-yuan-20201324 提交于 4年前 . 实验四
# -*- coding:utf-8 -*-
import time
from PIL import Image, ImageDraw, ImageFont
# 安装库:pip install Pillow
import requests
# 调用get方法,下载这个字典
res_music = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=60997426243444153&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w=%E5%91%A8%E6%9D%B0%E4%BC%A6&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0')
# 使用json()方法,将response对象,转为列表/字典
json_music = res_music.json()
# 一层一层地取字典,获取歌单列表
list_music = json_music['data']['song']['list']
# list_music是一个列表,music是它里面的元素
i = 0
for music in list_music[0:3]:
# # 以name为键,查找歌曲名
# print(music['name'])
# # 查找专辑名
# print('所属专辑:'+music['album']['name'])
# # 查找播放时长
# print('播放时长:'+str(music['interval'])+'秒')
# # 查找播放链接
# print('播放链接:https://y.qq.com/n/yqq/song/'+music['mid']+'.html\n\n')
header = 'Number'+ str(i+1)
i+=1
title = str(music['name'])
summary = ['所属专辑:'+'《' + music['album']['name'] + '》', '歌曲时长:'+str(music['interval'])+'秒','歌手:周杰伦','发布时间:'+str(music['time_public'])]
writes = 'https://y.qq.com/n/yqq/song/' + str(music['mid']) + '.html\n\n'
# 图片名称
img = title+".png" # 图片模板
new_img = "final_"+title+".png" # 生成的图片
# 设置字体样式
font_type = "C:/Windows/Fonts/STXINWEI.TTF"
font_medium_type = "C:/Windows/Fonts/STKAITI.TTF"
header_font = ImageFont.truetype(font_type, 55)
title_font = ImageFont.truetype(font_type, 45)
font = ImageFont.truetype(font_medium_type, 20)
# ImageFont.truetype第一个参数为字体,第二个为字体大小
color = "#000000"
# 打开图片
image = Image.open(img)
draw = ImageDraw.Draw(image)
width, height = image.size
# 写入header
header_x = 40
header_y = 650
# 数字越小,字在图片上的位置越偏下
draw.text((header_x, height - header_y), u'%s' % header, color, header_font)
# 写入标题
title_x = header_x
title_y = header_y - 80
draw.text((title_x, height - title_y), u'%s' % title, color, title_font)
# 写入歌曲信息
summary_x = title_x
summary_start_y = title_y - 150
# title后面剪的越多,字越偏下
summary_y = 0
summary_line = 50
information = '歌曲信息'
setFont = ImageFont.truetype('C:/windows/fonts/STXINGKA.TTF', 25)
draw.text((summary_x, height - summary_start_y-40), information, font=setFont, fill="#000000", direction=None)
for num, one in enumerate(summary):
y = summary_start_y - num * summary_line
summary_num = num + 1
draw.text((summary_x, height - y), u'%s. %s' % (summary_num, one), color, font)
# 写入链接
write_x = summary_x
write_y = title_y - 400
write_line = 40
information = '播放链接:'
setFont = ImageFont.truetype('C:/windows/fonts/STXINGKA.TTF', 25)
draw.text((write_x, height - write_y), information, font=setFont, fill="#000000", direction=None)
draw.text((write_x, height - write_y + write_line), writes, font=font, fill="#0000ff", direction=None)
# 生成图片
image.save(new_img, 'png')
#制作完成
print("歌曲《"+title+"》"+"的海报已生成")
time.sleep(2)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xu-yuan-20201324/python_use.git
git@gitee.com:xu-yuan-20201324/python_use.git
xu-yuan-20201324
python_use
python_use
main

搜索帮助