• 技术文章 >php教程 >PHP源码

    段子搬运工

    PHP中文网PHP中文网2016-05-26 08:19:04原创838
    作为开源中国首席段子手,必然有发布段子的特殊技巧

    段子搬运工

    从煎蛋获取最新的段子后,登录OSC并发表动弹。并不需要数据库的支持。

    配置项

    Joke.txt以及cookie.txt文件需要777权限

    需要知道您在OSC的加密后的密码和user_id和user_code

    再配合 crontab */5 * * * * /usr/bin/curl http://jokeporter.fans7.me/JokePorter.php

    每5分钟检测一次是否有新段子发布

    Github:https://github.com/wangkugou1983/JokePorter

    下一个计划 “开源中国点赞狂魔”

    <?php
    //段子搬运工
    class JokePorter{
        public function index(){
            $this->get_joke(); //获得段子
        }
        //获得段子
        private function get_joke(){
            $html = file_get_contents('http://jandan.net/duan',NULL,NULL,-1,10000);
            preg_match_all('/<p>[\s\S]*?<\/p>/',$html,$res);
            $joke = strip_tags($res[0][2]); //得到段子
            $file = file_get_contents('./Joke.txt'); //本地段子
            $joke != $file ? $this->stash_joke($joke) : ''; //如果段子比本地新,储存段子在本地
        }
        //储存段子
        private function stash_joke($joke){
            $handle = fopen('./Joke.txt',"w");
            fwrite($handle,$joke);
            fclose($handle);
            $this->login_osc(); //登录OSC
        }
        //登录OSC
        private function login_osc(){
            //登录
            $post = array('email' => '你的OSC邮箱账号','pwd' => '加密后的密码','save_login' => '1');
            $curl = curl_init(); //初始化curl模块
            curl_setopt($curl,CURLOPT_URL,'https://www.oschina.net/action/user/hash_login'); //登录提交的地址
            curl_setopt($curl,CURLOPT_HEADER,0); //是否显示头信息
            curl_setopt($curl,CURLOPT_RETURNTRANSFER,0);
            curl_setopt($curl,CURLOPT_COOKIEJAR,'./cookie.txt'); //设置cookie信息保存在指定的文件中
            curl_setopt($curl,CURLOPT_POST,1); //post方式提交
            curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($post)); //要提交的信息
            $res = curl_exec($curl); //执行cURL
            $res ? $this->push_joke($curl) : curl_close($curl);
        }
        //发布段子
        private function push_joke($curl){
            $file = file_get_contents('./Joke.txt'); //本地段子
            $send = array('msg' => $file,'user' => '你的user_id','user_code' => '你的user_code');
            curl_setopt($curl,CURLOPT_URL,'https://www.oschina.net/action/tweet/pub');
            curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); //curl_exec将结果返回,而不是执行
            curl_setopt($curl,CURLOPT_POST,1); //post方式提交
            curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($send)); //要提交的信息
            curl_exec($curl); //执行cURL
            curl_close($curl);
        }
    }
    $JokePorter = new JokePorter();
    $JokePorter->index();

    以上就是段子搬运工的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:段子,搬运工
    上一篇:旗舰版Modoer3.5点评系统Modoer_3.5_MC最新20150313 下一篇:Session Manager by Redis
    Web大前端开发直播班

    相关文章推荐

    • ZF框架Db类的一些遍历结果集和对表操作的最基本用法• JQuery中Bind()事件用法分析_jquery• 极简的创建文件夹函数 • PHP读取文本文件并逐行输出该行使用最多的字符串及对应次数• php用正则判断是否为数字的方法
    1/1

    PHP中文网