最近抖音,小红书上面有个很火的天气推送的公众号,可以给自己爱的人进行定时推送.
效果如下,结合亲生经历给大家讲述一下操作流程。很简单,有点编程基础就可以.
网上看的相关介绍都是十分的简单,本着无偿分享的态度,重构了整个代码.
整个项目代码目前十分规整,项目代码整体400多行 ,就直接分享出来吧.

微信公众号平台

https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
(用来创建测试公众及号, 需要自己和你的那位一起扫码关注)
(填写测试模板,我这里是6个板块)

小接口:

https://www.tianapi.com
(用来申请api接口)

Github:

https://github.com/
(用来自动运行任务,免费的服务器)

整个项目已经公布在github : https://github.com/linzixuan45/daily_publish

整个代码模板的效果如下

项目思路介绍,

创建一个测试的微信公众号平台,注册

获取测试号的appid 和 appsecret

自己扫码关注,女朋友也扫码关注, 如下图,扫码获得 微信号的编码.

新增测试模板并获取模板id

“”"
目前时间是:{{date_date.DATA}}
早安寄语:{{zaoan.DATA}}
今天是我们的第:{{love_days.DATA}}天
距离她的生日:{{birthday_left.DATA}}天
她所在的城市:{{weather_message0.DATA}}
他所在的城市:{{weather_message1.DATA}}
“”"

“”"
今日想对然然说的话:{{words.DATA}}
{{song_words.DATA}}
“”"
“”"
晚上好啊,悠然
目前的时间是:{{date_date.DATA}}
一个有趣的健康知识:{{health.DATA}}
晚安寄语:{{wanan.DATA}}
“”"
“”"
{{title.DATA}}
{{content.DATA}}
“”"

“”"
{{star.DATA}}
“”"

“”"
{{menses.DATA}}
“”"

在 https://www.tianapi.com 网址

注册以下接口, 也可以自己去创建新的接口,编写新的调用函数

保存自己的接口密钥key,如下图

整个项目代码如下:

import datetime
from datetime import date
import math
from wechatpy import WeChatClient
from wechatpy.client.api import WeChatMessage, WeChatTemplate
import requests
import random
import json
import time

以下代码完成月经提醒,关于月经周期的计算,完全参考这张图


Tips = {"卵巢周期": {"卵泡期": ["卵泡期由上次月经停止日开始至卵巢排卵日止,历时10~12天。在这一期中,此期卵泡的粒膜细胞在FSH和LH的作用下产生雌激素,在雌激素的作用下,子宫内膜迅速增殖,血管增生,腺体增宽加长,但不分泌。"],"排卵日": [""],"黄体期": ["黄体期主要是指女性在排卵期到月经来之前的一个特定阶段,在这段时间内就有可能形成黄体,""同时会形成生理性的体温增高。排卵之后,卵子和卵泡液流出,卵泡腔下降、塌陷,与周围的结缔组织包绕,从而形成黄体。""黄体能够分泌雌孕激素,如果患者没有怀孕,雌孕激素会迅速的下降,在维持14天左右体温也会下降,同时来月经。如果怀孕之后,""黄体则继续起到分泌功能,能够分泌雌孕激素,促进并支持胚胎的发育。如果患者出现黄体功能不全,患者则会出现胚胎停止发育,甚至习惯性流产。"]},"子宫周期": {"经期": [""],"增长期": [""],"排卵日": [""],"分泌期": ["分泌期,也称为黄体期,是月经周期的一个阶段,指从排卵后到下一次来月经前这段时间。月经周期分为三个阶段:""卵泡期、黄体期、排卵期。首先卵泡发育阶段被称为卵泡增生,""而卵泡破裂的时期被称为排卵期,排卵后至下一次来月经前称为黄体期,这段时间的子宫内膜会发生分泌期的变化,因此也称为分泌期"]},"俗称": {"经期": ["在饮食方面,月经期间要避免进食辛辣、凉、冷、硬的食物,要注意下腹部的保暖""因为寒冷有可能会导致痛经的发生,月经期间可以进行温和的运动,例如散步、快走等,但是要避免剧烈的运动""月经期间一定要注意外阴的清洁,要每天清洗外阴,使用棉质透气的卫生巾,并且要及时更换卫生巾"],"安全期(排卵前安全期)": ["安全期避孕并非绝对安全,只是受孕机率小些。 安全期避孕并非绝对安全,只是受孕机率小些""如果是在月经刚干净的三天内,一般这个时间段同房是不会怀孕的,也可以不带避孕套"],"排卵前期(排卵期,危险期)": ["在排卵期的时候白带会明显的增多,在这个时候一定要注意好个人的卫生,建议勤换内裤""适当的用温盐水清洗一下外阴,同时在排卵期的时候,由于受孕概率比较高,这个时候也称之为危险期"],"排卵日": ["今天是排卵日哦"],"排卵后期(排卵期,危险期)": ["女性在排卵的时候可能会出现一个排卵期的出血,这种属于生理现象,不需要去过度的治疗,但是如果经常性地出现排卵期出血,那么可能是存在黄体功能不足,建议尽早的抽血查一下性激素水平"],"安全期(排卵后安全期)": ["女性在排卵日后五天一般就是到了安全期,因为在女性在排卵日的时候排卵比较多见,并且卵子排出后,它的存活期是48小时内,所以在排卵之后的五天,""此时即便是有卵子已经排出,也已经死亡,在此期间进行同房,精子和卵子就不能够结合发育成受精卵,一般就不会导致女性怀孕。少数的情况下,""若女性由于精神压力大劳累或者是等其他因素影响,导致排卵日检测的不准确,出现排卵日后延,卵子排出后仍在存活期,即排卵日后五天卵子在存活期,""发生性生活后也有导致意外怀孕的,因此安全期和危险期只是个相对的日期,并不是绝对的准确。如果女性无怀孕欲望,最好全程戴避孕套,以免意外情况的发生。"]}
}def diff_time(start, end):start = time.strptime(start, "%Y-%m-%d")end = time.strptime(end, "%Y-%m-%d")userStart = datetime.datetime(start[0], start[1], start[2])userEnd = datetime.datetime(end[0], end[1], end[2])return (userEnd - userStart).daysdef menstrual_dict(period_per_classes):temp = 0temp_ls = []for value in period_per_classes:temp += valuetemp_ls.append(temp)name_dict = {"卵巢周期": {"卵泡期": [0, temp_ls[2]],"排卵日": [temp_ls[3], temp_ls[3]],"黄体期": [temp_ls[3] + 1, temp_ls[-1]]},"子宫周期": {"经期": [0, temp_ls[0]],"增长期": [temp_ls[0] + 1, temp_ls[2]],"排卵日": [temp_ls[3], temp_ls[3]],"分泌期": [temp_ls[3] + 1, temp_ls[-1]]},"俗称": {"经期": [0, temp_ls[0]],"安全期(排卵前安全期)": [temp_ls[0] + 1, temp_ls[1]],"排卵前期(排卵期,危险期)": [temp_ls[1] + 1, temp_ls[2]],"排卵日": [temp_ls[3], temp_ls[3]],"排卵后期(排卵期,危险期)": [temp_ls[3] + 1, temp_ls[4]],"安全期(排卵后安全期)": [temp_ls[4], temp_ls[-1]]}}return name_dictclass Menses:def __init__(self, name, menses_period):self.menses_period = menses_period# 经期,安全期(排卵前安全期),排卵前期(排卵期,危险期),排卵日,排卵后期(排卵期,危险期),安全期(排卵后安全期)self.menstrual_classes_period = [4, 4, 5, 1, 4, 10]self.name = namemenstrual_cycle = []pre_value = 0for value in self.menses_period:if pre_value != 0:menstrual_cycle.append(diff_time(pre_value[1], value[0]))pre_value = valueself.out_message = self.own_sheet()self.ovulation_period_start = min(menstrual_cycle) - 18self.ovulation_period_end = max(menstrual_cycle) - 11def own_sheet(self):sheet = menstrual_dict(self.menstrual_classes_period)time_now = f"{time.gmtime()[0]}-{time.gmtime()[1]}-{time.gmtime()[2]}"last_menstrual_time = self.menses_period[-1][0]key_point = diff_time(last_menstrual_time, time_now)message = []for name in sheet.keys():for key, value in sheet[name].items():if key_point in range(value[0], value[1]):message.append(key)message = list(set(message))tips_message = []for key, v in Tips.items():for key, value in v.items():if key in message:tips_message.append(value)out_message = f"今天是{self.name}的"for key in message:if key == message[-1]:out_message += keyelse:out_message += key + ","out_message += "哦,以下是一些Tips:"for key in tips_message:if key == message[-1]:out_message += str(key)else:out_message += str(key) + ","return out_messagedef __call__(self, *args, **kwargs):return self.out_message

以下代码完成对api的调用


# -*- coding: utf-8 -*-
def song_word(key):url = f"http://api.tianapi.com/zmsc/index?key={key}"ret = requests.get(url)ret = ret.content.decode('utf8').replace("'", '"')data_json = json.loads(ret)message = f"今日宋词:{data_json['newslist'][0]['content']}" + '\n' + f"出自:{data_json['newslist'][0]['source']}"print(message)return messagedef story(key):url = f"http://api.tianapi.com/story/index?key={key}"ret = requests.get(url)ret = ret.content.decode('utf8').replace("'", '"')data_json = json.loads(ret)title = data_json['newslist'][0]['title']content = data_json['newslist'][0]['content']print(title, content)return title, contentdef star(key, star_name):url = f"http://api.tianapi.com/star/index?key={key}&astro={star_name}"ret = requests.get(url)ret = ret.content.decode('utf8').replace("'", '"')data_json = json.loads(ret)message = f"星座名称:{star_name},"for i, news in enumerate(data_json['newslist'][:-1]):if i % 3 == 0:message += f"{news['type']}: {news['content']}, " + '\n'else:message += f"{news['type']}: {news['content']}, "last_message = f"{data_json['newslist'][-1]['type']}:{data_json['newslist'][-1]['content']}"print(message, last_message)return message, last_messagedef health(key):url = f"http://api.tianapi.com/healthtip/index?key={key}"ret = requests.get(url)ret = ret.content.decode('utf8').replace("'", '"')data_json = json.loads(ret)msg = data_json['newslist'][-1]['content']print(msg)return msgdef night_msg(key):url = f"http://api.tianapi.com/wanan/index?key={key}"ret = requests.get(url)ret = ret.content.decode('utf8').replace("'", '"')data_json = json.loads(ret)msg = data_json['newslist'][-1]['content']print(msg)return msgdef morning_msg(key):url = f"http://api.tianapi.com/zaoan/index?key={key}"ret = requests.get(url)ret = ret.content.decode('utf8').replace("'", '"')data_json = json.loads(ret)msg = data_json['newslist'][-1]['content']print(msg)return msgdef get_words():words = requests.get("https://api.shadiao.pro/chp")if words.status_code != 200:return get_words()return words.json()['data']['text']def get_random_color():return "#%06x" % random.randint(0, 0xFFFFFF)

以下代码完成对于指定时间点的运行调用


class WeMessage:def __init__(self, user0, user1, client_info, tiannapi_api):self.tianapi_api = tiannapi_apiself.user0 = user0self.user1 = user1self.client_info = client_infoself._init_user_info()self.start()def _init_user_info(self):self.now_time = time.strftime("%H:%M:%S", time.localtime())  # 现在的时间self.today = datetime.datetime.now()self.start_date = self.user0['START_DATE']self.city0 = self.user0['CITY']self.city1 = self.user1['CITY']self.birthday0 = self.user0['BIRTHDAY']self.birthday1 = self.user1['BIRTHDAY']def get_count(self):delta = self.today - datetime.datetime.strptime(self.start_date, "%Y-%m-%d")return delta.daysdef get_birthday(self, birthday):next = datetime.datetime.strptime(str(date.today().year) + "-" + birthday, "%Y-%m-%d")if next < datetime.datetime.now():next = next.replace(year=next.year + 1)return (next - self.today).daysdef get_weather(self, city):url = "http://autodev.openspeech.cn/csp/api/v2.1/weather?openId=aiuicus&clientType=android&sign=android&city=" + cityres = requests.get(url).json()weather = res['data']['list'][0]weather_message = f"{weather['city']}, 天气:{weather['weather']}," + f"温度:{math.floor(weather['temp'])}," + f"湿度:{weather['humidity']}," + f"风力等级:{weather['wind']}"return weather_messagedef send_daily_msg(self, wm, server_time):weather_message0 = self.get_weather(self.user0['CITY'])weather_message1 = self.get_weather(self.user1['CITY'])data0 = {"date_date": {"value": str(server_time)+',今天也要加油哦!', "color": get_random_color()},"zaoan": {"value": morning_msg(self.tianapi_api), "color": get_random_color()},"weather_message0": {"value": weather_message0, "color": get_random_color()},"weather_message1": {"value": weather_message1},"love_days": {"value": self.get_count(), "color": "#%06x" % 0xFA8072},"birthday_left": {"value": self.get_birthday(self.user0['BIRTHDAY']), "color": "#%06x" % 0xFA8072},}data1 = {"words": {"value": get_words(), "color": get_random_color()},"song_words": {"value": song_word(self.tianapi_api), "color": get_random_color()},}for i in range(len(self.client_info['USER_ID'])):wm.send_template(self.client_info['USER_ID'][i], self.client_info['TEMPLATE_ID']['daily_id1'], data0)wm.send_template(self.client_info['USER_ID'][i], self.client_info['TEMPLATE_ID']['daily_id2'], data1)def send_star_msg(self, wm):star_message0, last_message0 = star(self.tianapi_api, self.user0['STAR'])star_message1, last_message1 = star(self.tianapi_api, self.user1['STAR'])star_0 = [{"star": {"value": star_message0, "color": "#%06x" % 0x8E236B}},{"star": {"value": last_message0, "color": "#%06x" % 0x8E236B}}]star_1 = [{"star": {"value": star_message1, "color": "#%06x" % 0x8E236B}},{"star": {"value": last_message1, "color": "#%06x" % 0x8E236B}}]for i in range(len(self.client_info['USER_ID'])):for value in [star_0, star_1]:for key_message in value:wm.send_template(self.client_info['USER_ID'][i],self.client_info['TEMPLATE_ID']['star_id'],key_message)def send_menses_msg(self, wm):content = Menses(name=self.user0['NAME'], menses_period=self.user0['MENSES_PERIOD']).out_messagewechat_max_index = 180times = int(len(content)/wechat_max_index)+1 \if int(len(content)/wechat_max_index) < len(content)/wechat_max_index else len(content)/wechat_max_indexfor j in range(times):temp_msg = content[j*wechat_max_index:(j+1)*wechat_max_index]send_msg = {"menses": {"value": temp_msg}}for i in range(len(self.client_info['USER_ID'])):wm.send_template(self.client_info['USER_ID'][i],self.client_info['TEMPLATE_ID']['menses_id'],send_msg)def send_night_msg(self, wm, server_time):msg0 = {"date_date": {'value': server_time, 'color': get_random_color()},'health': {'value': health(self.tianapi_api), 'color': get_random_color()},'wanan': {'value': night_msg(self.tianapi_api), 'color': get_random_color()}}title, content = story(self.tianapi_api)for i in range(len(self.client_info['USER_ID'])):wm.send_template(self.client_info['USER_ID'][i],self.client_info['TEMPLATE_ID']['night_id'],msg0)wechat_max_index = 180times = int(len(content)/wechat_max_index)+1 \if int(len(content)/wechat_max_index) < len(content)/wechat_max_index else len(content)/wechat_max_indexfor i in range(times):temp_msg = content[i*wechat_max_index:(i+1)*wechat_max_index]msg1 = {'title': {'value': title, "color": "#%06x" % 0xFA8072},'content': {'value': temp_msg}}for j in range(len(self.client_info['USER_ID'])):wm.send_template(self.client_info['USER_ID'][j],self.client_info['TEMPLATE_ID']['story_id'],msg1)def start(self):client = WeChatClient(self.client_info['APP_ID'], self.client_info['APP_SECRET'])wm = WeChatMessage(client)# server_time = str((int(self.now_time[:2]) + 8) % 24) + self.now_time[2:]  # Github 时间比国内早8小时server_time = self.now_time# 判断时间if "08:00:00" < server_time < "11:00:00":self.send_daily_msg(wm, server_time)if "11:00:00" < server_time < "14:00:00":self.send_star_msg(wm)if "18:00:00" < server_time < "21:00:00":self.send_menses_msg(wm)if "21:00:00" < server_time < "24:00:00":self.send_night_msg(wm, server_time)#self.send_daily_msg(wm, server_time)#self.send_star_msg(wm)#self.send_menses_msg(wm)#self.send_night_msg(wm, server_time)print(server_time)print("process have down")

以下部分填入个人信息

if __name__ == "__main__":"""修改对应的user信息"""wechat_max_index = 180user0 = {"NAME": '悠然','START_DATE': '2022-05-21','CITY': '苏州','BIRTHDAY': '11-8','STAR': '天蝎座','MENSES_PERIOD': [("2022-5-30", "2022-6-5"),("2022-6-27", "2022-7-8"),("2022-7-30", "2022-8-5"),("2022-9-2", "2022-9-8"),("2022-9-26", None),]  # 此项填入月经周期}  # 女生的信息user1 = {"NAME": '子轩','STAR': '金牛座','START_DATE': '2022-05-21','CITY': '广州','BIRTHDAY': '05-19',}  # 男生的信息"""以下密钥均已做修改,无法使用,需自己去申请 """tianapi_api = '54601312395c6d7fe2d8ee6'  # 第三方接口的key"""从微信公众平台获取的相关密钥"""client_info = {"APP_ID": 'wxaef9d01eca',"APP_SECRET": 'ef79f1e3eac60fa1502a',"USER_ID": ['omr1N5l9Kf3qrGs', 'omr1N5sAt5SgWK9aw'],"TEMPLATE_ID": {'daily_id1': 'Kyyl3f7JxD7R0qTY-4','daily_id2': 'MJ0faGDTKS6awxQV6iNI','star_id':   'vxbFxhPictedz-jEzE7yWLc','menses_id': '2rTC0o4BDZHg-ds9c9U','night_id':  'Z60JmU38hQTthRniuUi7T0','story_id':  '5I4PnlOsv2KSkW7DB7K_SUi0',}}WeMessage(user0, user1, client_info, tianapi_api)'''以下是需要填到微信公众号测试平台的temp  获取到对应的id 后,填入上方 template——id'''"""   daily_id1目前时间是:{{date_date.DATA}}早安寄语:{{zaoan.DATA}}今天是我们的第:{{love_days.DATA}}天距离她的生日:{{birthday_left.DATA}}天她所在的城市:{{weather_message0.DATA}}他所在的城市:{{weather_message1.DATA}}""""""  daily_id2今日想对她说的话:{{words.DATA}}{{song_words.DATA}}""""""  night_id晚上好啊,悠然目前的时间是:{{date_date.DATA}}一个有趣的健康知识:{{health.DATA}}晚安寄语:{{wanan.DATA}}""""""  story_id{{title.DATA}}{{content.DATA}}""""""  star_id{{star.DATA}}""""""  menses_id{{menses.DATA}}"""

若想挂在github上面,需要自己去填写action文件, 源码如下 , yml文件


# This is a basic workflow to help you get started with Actionsname: daily wechat publish  # 指定工作流的名字# Controls when the workflow will run
on:push:schedule:# 定时任务,在每天的5点推送天气信息到邮箱- cron: '00 2,4,12 * * *'pull_request:branches: [ "main" ]# Allows you to run this workflow manually from the Actions tabworkflow_dispatch:# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:# This workflow contains a single job called "build"build:# The type of runner that the job will run onruns-on: ubuntu-latest# Steps represent a sequence of tasks that will be executed as part of the jobsteps:# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it- uses: actions/checkout@v3# Runs a single command using the runners shell- name: install packagerun: |pip install wechatpypip install requests- name: Run a one-line scriptrun: python main.py# Runs a set of commands using the runners shell- name: Run a multi-line scriptrun: |echo Add other actions to build,echo test, and deploy your project.

最近抖音,小红书上面有个很火的天气推送的公众号,可以给自己爱的人进行定时推送. 效果如下,结合亲生经历给大家讲述一下操作流程。整个项目代码目前十分规整,项目代码整体400多行 ,就直接分享出来吧.相关推荐

  1. 2021年度抖音小红书美妆行业营销报告

    报告下载方式见今日头条文章末尾处. 更多报告内容,可加微信:yw5201a1 领取.(ps:加过微信:chanpin628 的不要再加,分享的内容一样,有一个号就行.) 申明:报告版权 有米有数.中国 ...

  2. 2020年10月抖音小红书美妆营销报告

    更多报告内容,可加微信:chanpin628 领取.

  3. 2020年Q3美妆行业抖音小红书营销报告

    更多报告内容,可加微信:chanpin628 领取.

  4. 2020年7月美妆行业抖音小红书营销报告

    更多报告内容,可加微信:chanpin628 领取.

  5. 抖音 K.O. 快手之后还能火多久?

    本文来自作者 tepy 在 GitChat 上分享「抖音 K.O. 快手之后还能火多久?论抖音的运营之道」,「阅读原文」查看交流实录 「文末高能」 编辑 | 泰龙 前段时间,朋友圈忽然刮起了妖风,各种 ...

  6. 抖音直播APP软件系统为什么能这么火?反映出的问题又会是什么?

    抖音去年下半年就开始火起来了,今年春节的搜索指数暴涨,超越竞品.不要小看这15s时间,正是因为它够短,且内容够"魔性"(比如之前大火的手指舞.karma is a bitch等主题 ...

  7. 打印工资条怎么做到每个人都有表头明细_抖音百万点赞!2018年最火的5个Excel骚操作,你都会吗?...

    本文作者丨可可&小植 本文由「秋叶 PPT」原创发布 如需转载,请在公众号发送关键词「转载」查看说明 要说 2018 年掀起全民狂欢的手机应用 毋庸置疑肯定是抖音短视频 App 一打开 App ...

  8. 抖音短视频标题什么样的容易火:国仁楠哥

    抖音乘着"短视频"的东风,同时倚靠"头条"强大推荐算法,正以势不可挡的姿态,逐步"入侵"并渗透着大多数人生活的方方面面.对于从事互联网从业者 ...

  9. 抖音矩阵系统,这个排名很难啊。按?

    短视频SEO系统可以自动化的生成短视频必备的内容产出,系统化的上传素材,系统在进行多种模式可视化混剪逻辑,生成不同的视频进行分发优化.  1.抖音视频seo: 抖音seo软件工具,短视频SEO询盘获客 ...

  10. 为什么我在抖音上发的视频第一次不火,重新发一次就火了?

    为什么抖音上面很多视频发第一次,点赞和评论非常少,重新发一次有时候一下子点赞就有8-9万.这是为啥? 其实抖音是有一个机制的,它会根据你视频的特点,推荐给适合的受众群体.比方你发的是一个教小孩作业的, ...

最新文章

  1. 前方高能:1024程序员节读书攻略来来来来啦!
  2. iOS的类方法和实例方法区别与使用
  3. 这家公司用Deepfake帮明星合成语音,让他们躺着也能赚钱
  4. Axis-Parallel Rectangle
  5. Vue.js 进入/离开 列表过渡
  6. VC++2013出现bug: 无法打开源文件“stdafx.h”
  7. PAT1054 求平均值 (20 分)【从非法输入字符串中获取合法输入 cin.putback()】
  8. qpython手机kivy库_QPython Android Kivy,从python脚本启动python脚本
  9. Android 系统性能优化(30)---Android性能全面分析与优化方案研究
  10. oracle rman 20207,RMAN-20207: UNTIL TIME or RECOVERY WINDOW is before RESETLOGS time
  11. 【预训练模型】预训练语言模型的前世今生之风起云涌
  12. 10个Mac电脑使用技巧
  13. 安装mathtype打开word报错 mathtype.Dll cannot be found 解决方式
  14. Matlab遥感图像分波段,组合显示
  15. 关于zip命令的使用问题
  16. 百度有啊 真的还有啊
  17. 「小虎电商早报」2月24日 苏宁易购北区预计新开零售云门店906家
  18. 用C语言实现菱形图案
  19. FFmpeg入门详解之12:Elecard Stream Analyzer码流分析工具
  20. 豆芽的生长过程观察日记

热门文章

  1. ZYNQ 系统的IEEE1588 实现方法
  2. java基础题及答案
  3. 考研词汇5500+地名
  4. idea中的万能快捷键(alt + enter)
  5. OSS 下载文件名乱码
  6. 毕业软件测试论文大纲,测试论文大纲模板范本 测试论文提纲怎样写
  7. java程序输入二叉树,JAVA 二叉树代写、代写java二叉树编程作业
  8. 高翔orbslam_ORB SLAM 2 + 构建点云地图 复现
  9. 牛顿插值法c语言程序代码,牛顿插值法的C语言实现.doc
  10. GreenDao清空数据库的方法