1+ <?php
2+ /**
3+ * Created by PhpStorm.
4+ * User: jinyi
5+ * Date: 2018/7/31
6+ * Time: 下午8:39
7+ */
8+
9+
10+ class PublicCore
11+ {
12+ /**
13+ * CURL GET请求
14+ * @param $url string 请求URL
15+ * @return mixed 返回获取信息
16+ */
17+ public function curl_get ($ url , $ user_agent )
18+ {
19+ $ ch = curl_init (); //初始化一个cURL会话
20+ curl_setopt ($ ch , CURLOPT_URL , $ url );//设置需要获取的 URL 地址
21+ curl_setopt ($ ch , CURLOPT_HTTPHEADER , $ user_agent ); // 设置浏览器的特定header
22+
23+ curl_setopt ($ ch , CURLOPT_RETURNTRANSFER , true );//不返回数据
24+
25+ if (empty ($ result = curl_exec ($ ch ))) {
26+ print_r ('无法连接 ' . $ url );
27+ die ();
28+ };//执行一个cURL会话
29+ return $ result ;
30+ }
31+
32+
33+ /**
34+ * 文件夹名
35+ * @param $string
36+ * @return string
37+ */
38+ public function new_dir_name ($ string )
39+ {
40+ $ path = FILE_PATH . DIRECTORY_SEPARATOR . date (DATE_FORMAT ) . "- " . $ string ;
41+ $ this ->dir_create ($ path );
42+ return $ path ;
43+ }
44+
45+ /**
46+ * 下载图片(单线程)多线程版容易请求太频繁
47+ * @param $file_url array array[文件名=下载链接]
48+ * @param $dir_name string 保存的文件夹
49+ */
50+ public function image_save ($ file_url , $ dir_name )
51+ { //下载
52+ foreach ($ file_url as $ images ) {
53+ foreach ($ images as $ key => $ value ) {
54+ print_r ($ key .PHP_EOL );
55+ if (file_exists ($ dir_name . DIRECTORY_SEPARATOR . $ key )) {//检测是否存在
56+ echo "已存在 " . PHP_EOL ;
57+ continue ;
58+ } else {
59+ if ($ image_save = file_get_contents ($ value )) {
60+ @file_put_contents ($ dir_name . DIRECTORY_SEPARATOR . $ key , $ image_save );
61+ } else {
62+ print_r ("下载错误: " . $ value );
63+ }
64+ }
65+ }
66+ }
67+ }
68+
69+ /**
70+ * 创建文件夹
71+ * @param $dir_name string 文件夹名
72+ */
73+ public function dir_create ($ dir_name )
74+ {
75+ if (!file_exists ($ dir_name )) {
76+ mkdir ($ dir_name , 0777 , true );//创建文件夹
77+ }
78+ }
79+
80+ /**
81+ * 获取提示并用户输入
82+ * @param $string
83+ * @return string
84+ */
85+ public function user_input ($ string , $ default )
86+ {
87+ print_r ($ string );
88+ $ input = trim (fgets (STDIN ));
89+ if (empty ($ input )) {
90+ print_r ($ default .PHP_EOL );
91+ return $ default ;
92+ }
93+ print_r ($ input .PHP_EOL );
94+ return $ input ;
95+
96+ }
97+
98+ /**
99+ * 初始化文件夹
100+ */
101+ public function init_dir ()
102+ {
103+ $ this ->dir_create (API_PATH );
104+ $ this ->dir_create (FILE_PATH );
105+ }
106+
107+ /**
108+ * 输出目录
109+ * @param $dir_path
110+ * @return array
111+ */
112+ public function print_dir ($ dir_path )
113+ {
114+ $ files = array ();
115+ if (@$ handle = opendir ($ dir_path )) { //注意这里要加一个@,不然会有warning错误提示:)
116+ while (($ file = readdir ($ handle )) !== false ) {
117+ if ($ file != ".. " && $ file != ". " ) { //排除根目录;
118+ $ files [] = $ file ;
119+ }
120+ }
121+ closedir ($ handle );
122+ return $ files ;
123+ }
124+ }
125+
126+ /**
127+ * 确认API文件存在
128+ * @param $filename
129+ * @return bool|string
130+ */
131+ public function check_api_file ($ filename )
132+ {
133+ $ file_path = API_PATH . DIRECTORY_SEPARATOR . $ filename ;
134+ if (!file_exists ($ file_path )) {
135+ touch ($ file_path );
136+ }
137+ $ file = file_get_contents ($ file_path );
138+ if (!empty ($ file )) {
139+ return $ file ;
140+ }
141+ return false ;
142+ }
143+
144+
145+ /**
146+ * 换行(没什么用的function)
147+ * @param $string
148+ * @return string
149+ */
150+ public function eol ($ string )
151+ {
152+ return PHP_EOL . $ string . PHP_EOL ;
153+ }
154+
155+ /**
156+ * 获取文件夹内拥有多少个文件
157+ * @param $dir
158+ * @return int
159+ */
160+ public function images_number ($ dir )
161+ {
162+ return count ($ this ->print_dir ($ dir ));
163+
164+ }
165+
166+ /**
167+ * 通过URL进行图片格式处理(只能分辨jpg/png)
168+ */
169+ public function image_url_format ($ image_url ,$ file_name ){
170+ if (strstr ($ image_url , "jpg " )) {
171+ $ file_name .= ".jpg " ;
172+ } elseif (strstr ($ image_url , "png " )) {
173+ $ file_name .= ".png " ;
174+ } else {
175+ $ file_name .= $ image_url .".jpeg " ;//不知道什么格式时的处理方式
176+ }
177+ return $ file_name ;
178+ }
179+
180+ /**
181+ * 一个下载调用其他函数的封装
182+ * @param $string
183+ * @param $images_arr
184+ */
185+ public function quick_down_img ($ string ,$ images_arr ){
186+ $ dir_path =$ this ->new_dir_name ($ string );//生成保存路径
187+ $ this ->image_save ($ images_arr ,$ dir_path );//下载图片
188+ print_r ("文件夹现在有: " .$ this ->images_number ($ dir_path )."张图片 " );
189+ }
190+
191+ /**
192+ * 输出菜单
193+ * @param array $spider
194+ * @return string 菜单
195+ */
196+ public function print_menu (array $ spider ){
197+ $ result ="" ;
198+ foreach ($ spider as $ key =>$ value ){
199+ $ result .= PHP_EOL . $ key . " : " . $ value . PHP_EOL ;
200+ }
201+ return $ result ;
202+ }
203+ }
0 commit comments