如何利用 >>> storeReturn("480,Los Angeles, 招聘,江浙沪", needSplit = True)
[('359', '南京东路'), ('389', '浦东'), ('390', '香港广场'), ('401', '上海环贸 iapm'), ('581', '五角场'), ('678', 'Store in Shanghai'), ('683', '环球港'), ('705', '七宝'), ('761', 'Store in Shenzhen East'), ('493', '南京艾尚天地'), ('574', '无锡恒隆广场'), ('643', '虹悦城'), ('688', '苏州'), ('703', '玄武湖'), ('471', '西湖'), ('531', '天一广场'), ('532', '杭州万象城'), ('480', '解放碑'), ('756', 'Store in New Delhi'), ('744', 'Store in Mumbai'), ('760', 'Store in Seoul South'), ('050', 'The Grove'), ('108', 'Century City'), ('124', 'Beverly Center'), ('720', 'Tower Theatre'), ('755', 'Store in East Rutherford')]
function stateReplace(rstores)
传入零售店店号数组,将按照行政区划进行压缩,便于一次性输出多个零售店。
>>> stateReplace(['480', '476', '573', '580', '670'])
['重庆 (3)', '580', '云南 (1)']
coroutine storeDict(sid = None, sif = None, session = None, mode = "dict")
传入零售店店号,联网从 Apple 官网获取零售店基本信息简单处理后返回。
>>> await storeDict(sid = 480)
{'latitude': 29.560981, 'longitude': 106.572272, 'timezone': 'Asia/Shanghai', 'telephone': '400-617-1224', 'address': '重庆市渝中区邹容路 108 号', 'province': '重庆, 重庆, 400010', 'isnso': False, 'regular': [{'name': 'Saturday', 'openTime': '10:00', 'closeTime': '22:00', 'closed': False}, {'name': 'Wednesday', 'openTime': '10:00', 'closeTime': '22:00', 'closed': False}, {'name': 'Friday', 'openTime': '10:00', 'closeTime': '22:00', 'closed': False}, {'name': 'Monday', 'openTime': '10:00', 'closeTime': '22:00', 'closed': False}, {'name': 'Tuesday', 'openTime': '10:00', 'closeTime': '22:00', 'closed': False}, {'name': 'Thursday', 'openTime': '10:00', 'closeTime': '22:00', 'closed': False}, {'name': 'Sunday', 'openTime': '10:00', 'closeTime': '22:00', 'closed': False}], 'special': []}
function storeInfo(sid)
传入零售店店号,不联网从本地返回基本零售店信息。
>>> storeInfo(580)
{'name': ['成都太古里', 'Taikoo Li Chengdu'], 'flag': '🇨🇳', 'nso': '2015-11-21', 'last': '07 Jan 2022 08:59:07', 'website': 'taikoolichengdu', 'key': {'state': '四川', 'city': '成都', 'alter': 'Sichuan Chengdu'}}
# 零售店对象
>>> Store(sid = 480)
<Store "解放碑" (R480), "jiefangbei", "/cn">
# 获得零售店课程
>>> await Store(sid = 480).getCourses()
[
<Course 6635235077318869345 "光影实验室:执导拍摄人像", "photo-lab-directing-portrait">,
<Course 6443623163745894793 "音乐技巧:库乐队使用入门", "music-skills-getting-started-garageband">,
<Course 6448288470942974313 "视频漫步:拍出电影级画面", "video-walks-capturing-cinematic-shots">,
<Course 6716856769744568921 "技巧:管理你的屏幕使用时间", "skills-managing-your-screen-time">
]
# 获得零售店排课
>>> await Store(sid = 480).getSchedules()
[
<Schedule 6917310504008783289 of 6444985410678260613, 4/15 17:30-18:00 @ R480>,
<Schedule 6917310552016813261 of 6443623163745894793, 4/15 18:00-18:30 @ R480>,
<Schedule 6917310598451930025 of 6716861058294579581, 4/15 19:00-20:00 @ R480>,
<Schedule 6918023706237569673 of 6444985410678260613, 4/15 11:00-11:30 @ R480>
]
课程对象包含课程的各项属性(如课程名、封面图片 URL、介绍)等,并提供获得排课的方法 # 从 URL 获得课程,也可以手动创建课程对象
>>> course = await parseURL("https://www.apple.com.cn/today/event/photo-lab-directing-portrait/", coro = True)
>>> course
<Course 6635235077318869345 "光影实验室:执导拍摄人像", "photo-lab-directing-portrait">
>>> course.images
{
'portrait': 'https://digitalassets-taa.cdn-apple.com/prod/image/photo-lab-directing-portrait-ww/2020-03/29a29970-2a6c-49e3-9fb4-8b146f3df6f8__4x5.jpg',
'landscape': 'https://digitalassets-taa.cdn-apple.com/prod/image/photo-lab-directing-portrait-ww/2020-03/09bc55d1-0a62-4eed-8cd5-3f4511e857ab__16x9.jpg'
}
>>> course.getSchedules(Store(sid = 480))
[
<Schedule 6918024654175448253 of 6635235077318869345, 4/17 14:00-15:00 @ R480>,
<Schedule 6918027046157664333 of 6635235077318869345, 4/22 14:00-15:00 @ R480>,
<Schedule 6918027087207317837 of 6635235077318869345, 4/22 16:00-17:00 @ R480>
]
排课对象包含每次排课的属性,包括所在零售店(Store
对象)、所属课程(Course
对象),开始和结束时间等 # 从 URL 获得课程,也可以手动创建课程对象
>>> schedule = await parseURL("https://www.apple.com.cn/today/event/photo-lab-directing-portrait/6911594146335944905/?sn=R645", coro = True)
>>> schedule
<Schedule 6911594146335944905 of 6635235077318869345, 4/18 18:30-19:30 @ R645>
>>> schedule.course
<Course 6635235077318869345 "光影实验室:执导拍摄人像", "photo-lab-directing-portrait">
>>> schedule.timeStart
datetime.datetime(2022, 4, 18, 18, 30, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
>>> schedule.url
'https://www.apple.com.cn/today/event/photo-lab-directing-portrait/6911594146335944905/?sn=R645'
此外,还提供了将 Course
和 Schedule
对象的信息进行提取,并综合至一条 Telegram 消息中的函数(效果如下图);分析 Today at Apple 网站地图 XML Sitemap 的 Sitemap
对象等。
from sdk_aliyun import async_post
from bot import tokens
这是我个人对结果推送的实现方式,sdk_aliyun
和 bot
并未在此库中给出。代码运行到输出阶段会产生一个包含文本、图片、链接等内容的字典,您可以通过编写适合您自己的推送结果的方式以获取代码结果,例如将内容推送至 Telegram Channel、微信公众号、其他第三方 iOS 推送 app 等。