Python技术学习

梦想号

2018-01-30  本文已影响14人  撑起头顶的天

梦想号演示

简介

梦想号

梦想号演示结构框架


dream_plane_introduce_framework.png

视频地址

用浏览器扫码下载:


dream_plane_video_download_qrcode.png

演示视频下载

创作理念

1.为了心中有梦

现象:许多人说A寺许愿很灵验,所以我们都去A寺去许愿,果不其然,我们实现了我们的愿望
原因:难道是A寺真的灵验么?最终我找到了答案,原因是在A寺许的愿望,在他的心中存留的时间较长,实现的梦想的概率也就越大

为了我们心中有梦,所以梦想号每天进行梦想提醒

2.为了立长志

现象:今天许下了梦想,过一段时间已经忘记了原来许的梦想,又重新许下新的梦想,周而复始,总是在许梦想,却从未真正拥有过梦想 ---- "有志之人立长志,无志之人常立志"

为了立长志,为了真正拥有梦想,所以出现了梦想号

3.为了梦想不再孤单

现象:由于没有陪伴,梦想夭折在实现的道路上

为了梦想不再孤单,所以梦想号将在你实现梦想的道路上,与你一路同行(通过提醒,及用户对你梦想的点赞,加油语)

技术亮点

1.Python爬虫 ---- 我要和没有数据的日子说再见

Python爬虫例子代码:

# 替换一些异常信息
def repleace_exception_str(joke):
        if ' ' in joke:
                joke = joke.replace(' ', '')

        if '<A' in joke and '</A>' in joke:
                start = joke.index('<A')
                end = joke.index('</A>')
                exception_str = joke[start:end + 4]
                joke = joke.replace(exception_str, '')

        if '<IMG' in joke and '0>' in joke:
                start = joke.index('<IMG')
                end = joke.index('0>')
                img_str = joke[start:end + 2]
                joke = joke.replace(img_str, '')

        if '@' in joke:
                start = joke.index('@')
                author = joke[start]
                joke = joke.replace(author, '')

        if '“' in joke:
                joke = joke.replace('“', ' ')

        if '”' in joke:
                joke = joke.replace('”', ' ')
        if '"' in joke:
                joke = joke.replace('"', ' ')

        return joke

# 打印笑话信息
def print_joke(joke):
        if "<BR>" in joke:
                joke_array = joke.split("<BR>")
                for context in joke_array:
                        print(context)
        else:
                print(joke)

# 根据网页内容匹配指定的笑话信息
def find_jokes(content):
        reg = r'<P>[0-9]、(.+?)</P>'
        joke_re = re.compile(reg)
        jokes = re.findall(joke_re, content)
        return jokes

# 通过url地址来搜索页面的文本信息
def search_jokes_by_link(link_url):
        joke_content = requests.get(link_url)  # 访问第一个链接
        joke_content.encoding = 'gbk'
        return joke_content.text

# 根据网页上的信息获取链接地址
def get_joke_list(joke_text):
        joke_list = re.findall('/jokehtml/[\w]+/[0-9]+.htm', joke_text)  # 使用正则表达式找到所有笑话页面的链接
        return joke_list

爬虫结果数据:

男子的去体检,医生说:小伙子,裤子脱了我看看你有没有女朋友。
男子裤子脱了。
医生说:你没女朋友吧。男子好奇:你怎么知道的?
医生说:看到纸屑了,来转过来,让我看看你有没有男朋友!


同桌戴着一条一块硬币做的吊坠。
我问他:为啥不戴金银不戴玉,偏偏戴了个硬币!
同桌:因为没有它就没有我,它是我的守护神!
我:这话怎么说?
同桌:当初,我妈要用这硬币买套,却被我爸偷偷藏了起来,于是,就有了我!
我:......


甲: 我跟我心目中的女神表白了。
乙: 那她同意没有啊?
甲: 诶,同意了。  
乙: 那是好事啊,干嘛唉声叹气的.....
甲: 我当时大义凌然地说,有种,你就嫁给我。
乙: 嗯,虽不浪漫,但也够霸气的了,她怎么说啊?
甲: 我还真有了,不过不是你的。
乙:......


过节公司加餐,饭后又发一苹果。
下午饿了,拿出苹果正啃得高兴,被综管部拍照罚了两百。
我: 公司发的苹果,就在公司吃,怎么了?
综管领导: 公司发的钱,你怎么不全在公司花完?


表弟在公司推广的 光盘行动 中,连三天得了第一,他说把饭菜都能吃个精光。
我表示不信,说菜要是有骨头,鱼刺你也能吃掉?
表弟:说出来你不信,我在公司菜肴里,吃到最硬的东西就是花椒……


开会前,主任让我给他写演讲稿,主任强调:这次会议的内容很重要,我说的每一句话,都要有特别的味道!
我说:全是屁话,能有什么特别的味道啊?
同事:那屁是什么味你自己心里没数啊?


同事受伤住院,我们几个人一起去探望,天气不错,我们推着轮椅带同事出门晒晒太阳。
同事是个乐观的人,跟我们说:不就这点小伤嘛,没事,看我坐坐轮椅给你们来个漂移……
现在我们都在重症监护室门口等着……


员工:老板,每次迟到什么的,你都是扣奖金,扣工资不一样吗?
老板:你的意思我明白。不就是工资给老婆,奖金归你吗?
员工:是啊,老板,那能不能改一下?
老板:不行!
员工:为啥不行啊?
老板:你以为我没老婆,公司的钱我老婆管着,只有奖金是由我支配,从你们身上扣下的,我就可以攒点零花钱!

2.微信仿小艾智能提醒 ---- 哈哈,再也不会因为忘记重要日子,回家跪键盘啦

微信提醒代码:

 dream_data = DreamDB.query_dream_data_by_id()

    for row in dream_data:
        id = row[0]
        name = row[1]
        content = row[2]
        nick = row[3]
        date = row[4]
        finish = row[5]

        if finish == '' or finish is None:
            print(id, name, content, nick, date)
            hint_msg = '[梦想号] 您于 ' + date + " 放飞的梦想:\n\"" + content + "\"\n呼唤您----" + "为实现它努力,加油!"
            # hint_msg = '[梦想号] 您于' + date + "放飞的梦想:" + content + "呼唤您----" + "实现不梦想,不止是三分钟热度"
                notify_wechat_by_nick_name(hint_msg, nick)

# 向微信发送消息
def notify_wechat_by_nick_name(msg, nick):
    print(msg, nick)
    if nick == "" or nick is None:
        print("名字为空不进行发送")
    else:
        print('发消息给:' + nick)
        # 想给谁发信息,先查找到这个朋友
        users = itchat.search_friends(name=nick)
        # 找到UserName
        userName = users[0]['UserName']
        # 然后给他发消息
        itchat.send(msg, toUserName=userName)

微信提醒效果:


dream_hint_5_mins.png

3.RxAndroid RxJava ----- 快速线程切换,使你再也不怕UI卡顿啦

线程切换代码:

jokeApi.updateJokeBaseInfo(lastId, num).map(new HttpResultFunc<List<Joke>>())
  .map(new Func1<List<Joke>, Boolean>() {
       @Override
       public Boolean call(List<Joke> jokes) {
           if (null != jokes && jokes.size() > 0) {
               JokeDao jokeDao = DreamApp.getDreamApp().getDaoSession().getJokeDao();
               if (null != jokeDao) {

                   for (Joke joke : jokes) {
                       LogUtils.i("收到的笑话数据:" + joke.toString());
                       jokeDao.insertWithoutSettingPk(joke);
                   }

                   Joke update = jokes.get(0);
                   long updateId = update.getId();
                   SharedPreUtils.put(context, Constants.DATA_UPDATE_ID, String.valueOf(updateId));

                   HistoryDao historyDao = DreamApp.getDreamApp().getDaoSession().getHistoryDao();
                   History history = new History();
                   history.setUpDate(update.getDate());
                   SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                   String nowDate = sDateFormat.format(new java.util.Date());
                   history.setHisDate(nowDate);
                   historyDao.insertWithoutSettingPk(history);
                   SharedPreUtils.put(context, Constants.DATA_UPDATE_DATE, nowDate);


                   Thread thread = Thread.currentThread();
                   LogUtils.i("当前线程名:" + thread.getName());
                   return true;
               }
           }
           return false;
       }
   })
   .subscribeOn(Schedulers.io())
   .unsubscribeOn(Schedulers.io())
   .observeOn(AndroidSchedulers.mainThread())
   .subscribe(jokeSubscriber);

4.本地MockService ----- 实现Android前台开发与后台的完美分离,妈妈再也不用担心我的开发了

MockService代码:

public class DreamMockTxtService extends MockService{
    @Override
    public String getJsonData() {
        String resultStr =  MockUtils.readFromRaw(DreamApp.getDreamApp(), R.raw.dream_json);
        LogUtils.i("获得的json字符串为:" + resultStr);
        return resultStr;
    }
}

其中使用的dream_json如下:

{
    "code": 1,
    "msg": "查询成功",
    "data": [{
        "id": 1,
        "name": "2018技术",
        "content": "希望自己在2018年,可以在Android技术方面上一个大台阶",
        "nick": "JerryShen",
        "date": "2018-01-02 10:11:38"
    }, {
        "id": 2,
        "name": "艾融梦",
        "content": "看互联网金融,问苍茫大地,谁主沉浮?数风流人物,还看今朝",
        "nick": "Jerry",
        "date": "2018-01-02 10:27:13"
    }, {
        "id": 3,
        "name": "写博客",
        "content": "每个月写一篇有技术含量的博客",
        "nick": "Jerry",
        "date": "2018-01-02 13:40:33"
    }, {
        "id": 4,
        "name": "开源库",
        "content": "今年写一个好的Android开源库,星数达到1000星",
        "nick": "JerryShen",
        "date": "2018-01-02 13:40:33"
    }, {
        "id": 5,
        "name": "梦想",
        "content": "理想是力量的泉源、智慧的摇篮、冲锋的战旗、斩棘的利剑",
        "nick": "JerryShen",
        "date": "2018-01-02 13:40:33"
    }]
}

使用详情

笨鸟助手 ----- 自从使用它,经理再也不用担心,我忘记签到,签退啦

大赛终点也是新的起点

每天在指定的时间点,会发送一条微信给用户,提醒用户进行签到,签退,打卡操作

笨鸟提醒效果图:


sign_in_out.png

使用详情

目前正在内部测试阶段,欢迎大家报名试用,谢谢!

结束

送大家两句励志的话:

有志者事竞成,破釜沉舟,百二秦关终属楚

苦心人天不负,卧薪尝胆,三千越甲可吞吴

最后,祝大家在新的一年里,美梦成真,在梦想的道路上一帆风顺!

赞赏

we_chat.png
       alipay.png
上一篇下一篇

猜你喜欢

热点阅读