From a20f5661badc5999bef8f667e57856ef544e4510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=B0=8F=E8=88=AA?= Date: Mon, 4 Oct 2021 21:05:57 +0800 Subject: [PATCH] thinkphp5.1 --- .cache/carousel.json | 48 -- .cache/indexM.json | 1 - .cache/indexT.json | 1 - .cache/nowplaying.json | 1 - .gitignore | 7 + .travis.yml | 42 + .vs/slnx.sqlite | Bin 0 -> 90112 bytes .vs/tp/v16/.suo | Bin 0 -> 12800 bytes CHANGELOG.md | 946 +++++++++++++++++++++ LICENSE | 21 - LICENSE.txt | 32 + README.md | 195 ++++- application/.htaccess | 1 + application/command.php | 12 + application/common.php | 12 + application/movie/controller/Celebrity.php | 86 ++ application/movie/controller/Info.php | 51 ++ application/movie/controller/Movies.php | 19 + application/movie/controller/Photos.php | 14 + application/movie/controller/Search.php | 26 + application/movie/controller/Tag.php | 20 + application/provider.php | 14 + application/tags.php | 28 + build.php | 26 + class/class.Celebrity.php | 198 ----- class/class.DouBan.php | 120 --- class/class.Movie.php | 26 - class/class.MovieComment.php | 58 -- class/class.MovieItem.php | 531 ------------ class/class.MovieReview.php | 109 --- class/class.MovieSearch.php | 97 --- class/class.MovieTag.php | 141 --- composer.json | 33 + composer.lock | 125 +++ config/app.php | 146 ++++ config/cache.php | 25 + config/console.php | 20 + config/cookie.php | 30 + config/database.php | 63 ++ config/log.php | 30 + config/middleware.php | 18 + config/session.php | 26 + config/template.php | 35 + config/trace.php | 18 + extend/.gitignore | 2 + index.php | 235 ----- public/.htaccess | 8 + public/favicon.ico | Bin 0 -> 1150 bytes public/index.php | 23 + public/robots.txt | 2 + public/router.php | 17 + public/static/.gitignore | 2 + route/route.php | 48 ++ runtime/.gitignore | 2 + think | 22 + 55 files changed, 2185 insertions(+), 1628 deletions(-) delete mode 100644 .cache/carousel.json delete mode 100644 .cache/indexM.json delete mode 100644 .cache/indexT.json delete mode 100644 .cache/nowplaying.json create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 .vs/slnx.sqlite create mode 100644 .vs/tp/v16/.suo create mode 100644 CHANGELOG.md delete mode 100644 LICENSE create mode 100644 LICENSE.txt create mode 100644 application/.htaccess create mode 100644 application/command.php create mode 100644 application/common.php create mode 100644 application/movie/controller/Celebrity.php create mode 100644 application/movie/controller/Info.php create mode 100644 application/movie/controller/Movies.php create mode 100644 application/movie/controller/Photos.php create mode 100644 application/movie/controller/Search.php create mode 100644 application/movie/controller/Tag.php create mode 100644 application/provider.php create mode 100644 application/tags.php create mode 100644 build.php delete mode 100644 class/class.Celebrity.php delete mode 100644 class/class.DouBan.php delete mode 100644 class/class.Movie.php delete mode 100644 class/class.MovieComment.php delete mode 100644 class/class.MovieItem.php delete mode 100644 class/class.MovieReview.php delete mode 100644 class/class.MovieSearch.php delete mode 100644 class/class.MovieTag.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/app.php create mode 100644 config/cache.php create mode 100644 config/console.php create mode 100644 config/cookie.php create mode 100644 config/database.php create mode 100644 config/log.php create mode 100644 config/middleware.php create mode 100644 config/session.php create mode 100644 config/template.php create mode 100644 config/trace.php create mode 100644 extend/.gitignore delete mode 100644 index.php create mode 100644 public/.htaccess create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/robots.txt create mode 100644 public/router.php create mode 100644 public/static/.gitignore create mode 100644 route/route.php create mode 100644 runtime/.gitignore create mode 100644 think diff --git a/.cache/carousel.json b/.cache/carousel.json deleted file mode 100644 index f95264e..0000000 --- a/.cache/carousel.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "xs": [ - { - "id": "30228394", - "img": "//liangcang-material.alicdn.com/prod/upload/a9840124460f47d2893b4db914aa60a6.jpg?x-oss-process=image/resize,w_1125/format,webp/interlace,1", - "name": "【觉醒年代】" - }, - { - "id": "27073752", - "img": "//liangcang-material.alicdn.com/prod/upload/aff6c84d4f9649d0b3bbd45c33a17e41.jpg?x-oss-process=image/resize,w_1125/format,webp/interlace,1", - "name": "【神奇女侠1984】" - }, - { - "id": "27592484", - "img": "//liangcang-material.alicdn.com/prod/upload/fe453a9184904dcdac569898cd9046d9.jpg?x-oss-process=image/resize,w_1125/format,webp/interlace,1", - "name": "【热气球飞行家】" - }, - { - "id": "1652587", - "img": "//puui.qpic.cn/tv/0/1229644004_1080607/0?max_age=7776000", - "name": "【阿凡达】" - } - ], - "md": [ - { - "id": "30228394", - "img": "//liangcang-material.alicdn.com/prod/upload/95b27ac0cfb94784bb6eba930d7c183e.jpg?x-oss-process=image/resize,w_2074/interlace,1/quality,Q_80/sharpen,100", - "name": "【觉醒年代】" - }, - { - "id": "35390421", - "img": "//liangcang-material.alicdn.com/prod/upload/d767cc0e46134eeb9f230b2751b0c52e.jpg?x-oss-process=image/resize,w_2074/interlace,1/quality,Q_80/sharpen,100", - "name": "【巨鲨之夺命鲨滩】" - }, - { - "id": "27605542", - "img": "//liangcang-material.alicdn.com/prod/upload/3af5e9bbcf5c4eeb95a4bcf4f139dc6b.jpg?x-oss-process=image/resize,w_2074/interlace,1/quality,Q_80/sharpen,100", - "name": "【司藤】" - }, - { - "id": "35172526", - "img": "//liangcang-material.alicdn.com/prod/upload/753576b361b545c7b01f19bb726063f9.jpg?x-oss-process=image/resize,w_2074/interlace,1/quality,Q_80/sharpen,100", - "name": "【同一屋檐下】" - } - ], - "ad": "1.4.1 版本已经更新!", - "type": "success" -} \ No newline at end of file diff --git a/.cache/indexM.json b/.cache/indexM.json deleted file mode 100644 index dff4821..0000000 --- a/.cache/indexM.json +++ /dev/null @@ -1 +0,0 @@ -{"subjects":[{"episodes_info":"","rate":"6.9","cover_x":1200,"title":"致命感应","url":"https:\/\/movie.douban.com\/subject\/25909236\/","playable":true,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2672792129.jpg","id":"25909236","cover_y":1778,"is_new":true},{"episodes_info":"","rate":"7.0","cover_x":1500,"title":"灵媒","url":"https:\/\/movie.douban.com\/subject\/35208823\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2661923862.jpg","id":"35208823","cover_y":2149,"is_new":false},{"episodes_info":"","rate":"6.2","cover_x":1400,"title":"地陷","url":"https:\/\/movie.douban.com\/subject\/33446375\/","playable":false,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675569874.jpg","id":"33446375","cover_y":2006,"is_new":true},{"episodes_info":"","rate":"7.2","cover_x":3000,"title":"关于我妈的一切","url":"https:\/\/movie.douban.com\/subject\/35196097\/","playable":false,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2680912124.jpg","id":"35196097","cover_y":4286,"is_new":true},{"episodes_info":"","rate":"7.9","cover_x":1500,"title":"小妈妈","url":"https:\/\/movie.douban.com\/subject\/35225859\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2677331311.jpg","id":"35225859","cover_y":2222,"is_new":true},{"episodes_info":"","rate":"6.7","cover_x":1400,"title":"密室逃生2","url":"https:\/\/movie.douban.com\/subject\/30469922\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2657211583.jpg","id":"30469922","cover_y":2100,"is_new":false},{"episodes_info":"","rate":"7.0","cover_x":1876,"title":"白蛇2:青蛇劫起","url":"https:\/\/movie.douban.com\/subject\/30435124\/","playable":true,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2676545572.jpg","id":"30435124","cover_y":3000,"is_new":false},{"episodes_info":"","rate":"6.6","cover_x":1400,"title":"屏住呼吸2","url":"https:\/\/movie.douban.com\/subject\/26915921\/","playable":false,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2669130875.jpg","id":"26915921","cover_y":2100,"is_new":false},{"episodes_info":"","rate":"6.3","cover_x":1500,"title":"凯特","url":"https:\/\/movie.douban.com\/subject\/27177908\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675197481.jpg","id":"27177908","cover_y":2222,"is_new":true},{"episodes_info":"","rate":"6.0","cover_x":1701,"title":"明日之战","url":"https:\/\/movie.douban.com\/subject\/30459571\/","playable":false,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2678875868.jpg","id":"30459571","cover_y":2721,"is_new":false},{"episodes_info":"","rate":"6.3","cover_x":3158,"title":"老去","url":"https:\/\/movie.douban.com\/subject\/35017064\/","playable":false,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2652833060.jpg","id":"35017064","cover_y":5000,"is_new":false},{"episodes_info":"","rate":"8.7","cover_x":1448,"title":"花束般的恋爱","url":"https:\/\/movie.douban.com\/subject\/34874432\/","playable":false,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2623936924.jpg","id":"34874432","cover_y":2048,"is_new":false},{"episodes_info":"","rate":"7.4","cover_x":1500,"title":"犬之力","url":"https:\/\/movie.douban.com\/subject\/33437152\/","playable":false,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2678298618.jpg","id":"33437152","cover_y":2222,"is_new":true},{"episodes_info":"","rate":"6.0","cover_x":4370,"title":"兔子暴力","url":"https:\/\/movie.douban.com\/subject\/30289828\/","playable":true,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675924254.jpg","id":"30289828","cover_y":6201,"is_new":false},{"episodes_info":"","rate":"6.3","cover_x":864,"title":"黑寡妇","url":"https:\/\/movie.douban.com\/subject\/25828589\/","playable":false,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2665872718.jpg","id":"25828589","cover_y":1280,"is_new":false},{"episodes_info":"","rate":"6.9","cover_x":4217,"title":"宝可梦:皮卡丘和可可的冒险","url":"https:\/\/movie.douban.com\/subject\/34943015\/","playable":false,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681086310.jpg","id":"34943015","cover_y":6043,"is_new":false},{"episodes_info":"","rate":"8.6","cover_x":1600,"title":"健听女孩","url":"https:\/\/movie.douban.com\/subject\/35048413\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2665001891.jpg","id":"35048413","cover_y":2400,"is_new":false},{"episodes_info":"","rate":"8.1","cover_x":2765,"title":"X特遣队:全员集结","url":"https:\/\/movie.douban.com\/subject\/26741632\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2637084112.jpg","id":"26741632","cover_y":4096,"is_new":false},{"episodes_info":"","rate":"7.1","cover_x":1013,"title":"静水城","url":"https:\/\/movie.douban.com\/subject\/34614665\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2654990612.jpg","id":"34614665","cover_y":1500,"is_new":false},{"episodes_info":"","rate":"6.7","cover_x":1500,"title":"偷窥者","url":"https:\/\/movie.douban.com\/subject\/34981939\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681328483.jpg","id":"34981939","cover_y":2222,"is_new":true},{"episodes_info":"","rate":"6.5","cover_x":1434,"title":"南巫","url":"https:\/\/movie.douban.com\/subject\/30359340\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2635906761.jpg","id":"30359340","cover_y":2048,"is_new":false},{"episodes_info":"","rate":"8.3","cover_x":1535,"title":"偶然与想象","url":"https:\/\/movie.douban.com\/subject\/35360296\/","playable":false,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2633273330.jpg","id":"35360296","cover_y":2126,"is_new":false},{"episodes_info":"","rate":"7.4","cover_x":1080,"title":"夏日友晴天","url":"https:\/\/movie.douban.com\/subject\/35161768\/","playable":false,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675958609.jpg","id":"35161768","cover_y":1542,"is_new":false},{"episodes_info":"","rate":"6.8","cover_x":1500,"title":"怪奇宅","url":"https:\/\/movie.douban.com\/subject\/35477218\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2670777611.jpg","id":"35477218","cover_y":2138,"is_new":false}]} \ No newline at end of file diff --git a/.cache/indexT.json b/.cache/indexT.json deleted file mode 100644 index 66738bb..0000000 --- a/.cache/indexT.json +++ /dev/null @@ -1 +0,0 @@ -{"subjects":[{"episodes_info":"更新至16集","rate":"6.7","cover_x":1080,"title":"一生一世","url":"https:\/\/movie.douban.com\/subject\/35095274\/","playable":true,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2626552924.jpg","id":"35095274","cover_y":1920,"is_new":false},{"episodes_info":"","rate":"8.1","cover_x":1500,"title":"鱿鱼游戏","url":"https:\/\/movie.douban.com\/subject\/34812928\/","playable":false,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2677934359.jpg","id":"34812928","cover_y":2222,"is_new":true},{"episodes_info":"","rate":"9.6","cover_x":755,"title":"9月11日:美国的一天","url":"https:\/\/movie.douban.com\/subject\/35478723\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681862181.jpg","id":"35478723","cover_y":979,"is_new":true},{"episodes_info":"","rate":"9.3","cover_x":1500,"title":"性爱自修室 第三季","url":"https:\/\/movie.douban.com\/subject\/34966169\/","playable":false,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2677963424.jpg","id":"34966169","cover_y":2222,"is_new":true},{"episodes_info":"25集全","rate":"6.9","cover_x":3000,"title":"我家无难事","url":"https:\/\/movie.douban.com\/subject\/35201546\/","playable":true,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2680058456.jpg","id":"35201546","cover_y":4500,"is_new":true},{"episodes_info":"","rate":"8.6","cover_x":2000,"title":"逆局","url":"https:\/\/movie.douban.com\/subject\/35240435\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681444031.jpg","id":"35240435","cover_y":2798,"is_new":false},{"episodes_info":"16集全","rate":"7.3","cover_x":1920,"title":"双探","url":"https:\/\/movie.douban.com\/subject\/34807868\/","playable":true,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2679107810.jpg","id":"34807868","cover_y":3413,"is_new":false},{"episodes_info":"16集全","rate":"6.5","cover_x":1080,"title":"云南虫谷","url":"https:\/\/movie.douban.com\/subject\/35042912\/","playable":true,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2623867432.jpg","id":"35042912","cover_y":1804,"is_new":false},{"episodes_info":"24集全","rate":"7.4","cover_x":600,"title":"周生如故","url":"https:\/\/movie.douban.com\/subject\/35480932\/","playable":true,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2677154890.jpg","id":"35480932","cover_y":1066,"is_new":false},{"episodes_info":"","rate":"9.2","cover_x":1063,"title":"不眠","url":"https:\/\/movie.douban.com\/subject\/34953711\/","playable":false,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681367835.jpg","id":"34953711","cover_y":1500,"is_new":false},{"episodes_info":"","rate":"9.0","cover_x":2000,"title":"海岸村恰恰恰","url":"https:\/\/movie.douban.com\/subject\/35296153\/","playable":false,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675934255.jpg","id":"35296153","cover_y":2825,"is_new":false},{"episodes_info":"28集全","rate":"7.3","cover_x":1056,"title":"扫黑风暴","url":"https:\/\/movie.douban.com\/subject\/35202793\/","playable":true,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2623884456.jpg","id":"35202793","cover_y":1408,"is_new":false},{"episodes_info":"36集全","rate":"7.8","cover_x":3764,"title":"乔家的儿女","url":"https:\/\/movie.douban.com\/subject\/34792295\/","playable":true,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2676263914.jpg","id":"34792295","cover_y":5500,"is_new":false},{"episodes_info":"","rate":"9.5","cover_x":960,"title":"机智医生生活 第二季","url":"https:\/\/movie.douban.com\/subject\/35049544\/","playable":false,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2649727974.jpg","id":"35049544","cover_y":1360,"is_new":false},{"episodes_info":"更新至18集","rate":"","cover_x":514,"title":"光芒","url":"https:\/\/movie.douban.com\/subject\/35020491\/","playable":true,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681691302.jpg","id":"35020491","cover_y":720,"is_new":false},{"episodes_info":"更新至12集","rate":"","cover_x":5906,"title":"启航:当风起时","url":"https:\/\/movie.douban.com\/subject\/35182804\/","playable":true,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681871548.jpg","id":"35182804","cover_y":9055,"is_new":true},{"episodes_info":"更新至4集","rate":"9.6","cover_x":945,"title":"无穷之路","url":"https:\/\/movie.douban.com\/subject\/35574495\/","playable":true,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2678041238.jpg","id":"35574495","cover_y":1350,"is_new":true},{"episodes_info":"","rate":"9.2","cover_x":1536,"title":"D.P:逃兵追缉令","url":"https:\/\/movie.douban.com\/subject\/35028876\/","playable":false,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2676491350.jpg","id":"35028876","cover_y":2276,"is_new":false},{"episodes_info":"","rate":"9.4","cover_x":1462,"title":"俗女养成记2","url":"https:\/\/movie.douban.com\/subject\/35215517\/","playable":false,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2676295767.jpg","id":"35215517","cover_y":2048,"is_new":false},{"episodes_info":"","rate":"9.1","cover_x":960,"title":"平家物语","url":"https:\/\/movie.douban.com\/subject\/35590029\/","playable":false,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2682264910.jpg","id":"35590029","cover_y":1280,"is_new":true},{"episodes_info":"","rate":"8.8","cover_x":1080,"title":"再见爱人","url":"https:\/\/movie.douban.com\/subject\/35438177\/","playable":true,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2673374680.jpg","id":"35438177","cover_y":1920,"is_new":false},{"episodes_info":"","rate":"7.5","cover_x":600,"title":"披荆斩棘的哥哥","url":"https:\/\/movie.douban.com\/subject\/35161214\/","playable":true,"cover":"https://img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675460635.jpg","id":"35161214","cover_y":840,"is_new":false},{"episodes_info":"","rate":"7.5","cover_x":1080,"title":"脱口秀大会 第四季","url":"https:\/\/movie.douban.com\/subject\/35206452\/","playable":true,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675827902.jpg","id":"35206452","cover_y":1920,"is_new":false},{"episodes_info":"","rate":"8.1","cover_x":2028,"title":"公寓大楼里的谋杀案 第一季","url":"https:\/\/movie.douban.com\/subject\/35169965\/","playable":false,"cover":"https://img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2662287483.jpg","id":"35169965","cover_y":3004,"is_new":false}]} \ No newline at end of file diff --git a/.cache/nowplaying.json b/.cache/nowplaying.json deleted file mode 100644 index 3f41a64..0000000 --- a/.cache/nowplaying.json +++ /dev/null @@ -1 +0,0 @@ -{"0":{"id":"35231370","name":"峰爆","rating":"0","release":"2021","duration":"114分钟","region":"中国大陆","director":"李骏","actors":"朱一龙 \/ 黄志忠 \/ 陈数","votecount":"43030","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2680735532.jpg"},"1":{"id":"35196097","name":"关于我妈的一切","rating":"7.2","release":"2021","duration":"120分钟","region":"中国大陆","director":"赵天宇","actors":"徐帆 \/ 张婧仪 \/ 许亚军","votecount":"3062","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2680912124.jpg"},"2":{"id":"35470753","name":"1950他们正年轻","rating":"9.0","release":"2021","duration":"98分钟","region":"中国大陆","director":"宋坤儒","actors":"任红举 \/ 周有春 \/ 马世勋","votecount":"13887","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2677935131.jpg"},"3":{"id":"25920326","name":"我的青春有个你","rating":"0","release":"2021","duration":"96分钟","region":"中国大陆","director":"林子平 孙睿","actors":"王可如 \/ 刘冬沁 \/ 李欢","votecount":"195","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2682258967.jpg"},"4":{"id":"30337388","name":"失控玩家","rating":"7.8","release":"2021","duration":"115分钟","region":"美国 加拿大","director":"肖恩·利维","actors":"瑞安·雷诺兹 \/ 朱迪·科默 \/ 乔·基瑞","votecount":"323482","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2677520025.jpg"},"5":{"id":"30459571","name":"明日之战","rating":"6.0","release":"2021","duration":"138分钟","region":"美国","director":"克里斯·麦凯","actors":"克里斯·帕拉特 \/ 伊冯娜·斯特拉霍夫斯基 \/ J·K·西蒙斯","votecount":"67882","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2678875868.jpg"},"6":{"id":"33440244","name":"一直游到海水变蓝","rating":"6.8","release":"2020","duration":"112分钟","region":"中国大陆","director":"贾樟柯","actors":"贾平凹 \/ 余华 \/ 梁鸿","votecount":"4578","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2679356779.jpg"},"7":{"id":"35209748","name":"珍珠","rating":"6.3","release":"2020","duration":"98分钟","region":"中国大陆","director":"李云波","actors":"胡向真","votecount":"831","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2678743196.jpg"},"8":{"id":"30209018","name":"陪你很久很久","rating":"5.2","release":"2019","duration":"103分钟(中国大陆)","region":"中国台湾","director":"赖孟杰","actors":"李淳 \/ 邵雨薇 \/ 蔡瑞雪","votecount":"4008","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2678123003.jpg"},"9":{"id":"34943015","name":"宝可梦:皮卡丘和可可的冒险","rating":"6.9","release":"2020","duration":"98分钟","region":"日本","director":"矢岛哲生","actors":"松本梨香 \/ 大谷育江 \/ 林原惠美","votecount":"6430","image":"https:\/\/img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681086310.jpg"},"10":{"id":"30174085","name":"怒火·重案","rating":"7.5","release":"2021","duration":"128分钟","region":"中国香港 中国大陆","director":"陈木胜","actors":"甄子丹 \/ 谢霆锋 \/ 秦岚","votecount":"251583","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2673412189.jpg"},"11":{"id":"32568661","name":"妈妈的神奇小子","rating":"7.2","release":"2021","duration":"102分钟(中国大陆)","region":"中国香港 中国大陆","director":"尹志文","actors":"吴君如 \/ 张继聪 \/ 梁仲恒","votecount":"5344","image":"https:\/\/img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2676932860.jpg"},"12":{"id":"26823520","name":"日常幻想指南","rating":"0","release":"2021","duration":"98分钟","region":"中国大陆","director":"梁栋","actors":"王彦霖 \/ 焦俊艳 \/ 高捷","votecount":"1040","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2681329662.jpg"},"13":{"id":"30435124","name":"白蛇2:青蛇劫起","rating":"7.0","release":"2021","duration":"131分钟","region":"中国大陆","director":"黄家康","actors":"唐小喜 \/ 歪歪 \/ 魏超","votecount":"258365","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2676545572.jpg"},"14":{"id":"35161768","name":"夏日友晴天","rating":"7.4","release":"2021","duration":"95分钟","region":"美国","director":"埃里康·卡萨罗萨","actors":"雅各布·特伦布莱 \/ 杰克·迪伦·格雷泽 \/ 艾玛·伯曼","votecount":"71580","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675958609.jpg"},"15":{"id":"30122648","name":"悬崖","rating":"0","release":"2021","duration":"87分钟","region":"中国大陆","director":"韩志","actors":"王迅 \/ 李易祥 \/ 张磊","votecount":"131","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2656941231.jpg"},"16":{"id":"35547528","name":"梦境人生","rating":"0","release":"2021","duration":"106分钟","region":"中国大陆","director":"段祺华","actors":"赵文瑄 \/ 王琳 \/ 王佳佳","votecount":"919","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2680025206.jpg"},"17":{"id":"35596670","name":"守望青春","rating":"0","release":"2021","duration":"105分钟","region":"中国大陆","director":"王野","actors":"林永健 \/ 代超 \/ 罗辑","votecount":"100","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2682179913.jpg"},"18":{"id":"35086539","name":"狗果定理","rating":"0","release":"2021","duration":"90分钟","region":"中国大陆","director":"周翀","actors":"于谦 \/ 贾冰 \/ 印小天","votecount":"23","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2679356037.jpg"},"19":{"id":"26754627","name":"山海经之小人国","rating":"0","release":"2018","duration":"90分钟","region":"中国大陆 美国 加拿大 挪威","director":"凯文·门罗 克里斯蒂安·坎普","actors":"冯岚 \/ 云鹤追 \/ 尊龙","votecount":"48","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2669123766.jpg"},"20":{"id":"35158124","name":"盛夏未来","rating":"7.4","release":"2021","duration":"115分钟","region":"中国大陆","director":"陈正道","actors":"张子枫 \/ 吴磊 \/ 郝蕾","votecount":"132234","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2673420377.jpg"},"21":{"id":"26884443","name":"最后一间房","rating":"0","release":"2017","duration":"90分钟","region":"中国大陆","director":"高博","actors":"宋伊人 \/ 倪虹洁 \/ 陶慧","votecount":"501","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2676977463.jpg"},"22":{"id":"34813222","name":"麦哲伦环游历险记","rating":"0","release":"2019","duration":"90分钟","region":"西班牙","director":"Ángel Alonso","actors":" \/ 因阿基·贝拉尔特 \/ Aintzane Krujeiras","votecount":"77","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2567725391.jpg"},"23":{"id":"35582175","name":"幕后人","rating":"0","release":"2021","duration":"94分钟","region":"中国大陆","director":"史强","actors":"林笑石 \/ 湛雅书 \/ 焦麒睿","votecount":"8","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2680884336.jpg"},"24":{"id":"30238680","name":"高卢英雄:魔法的秘密","rating":"6.9","release":"2018","duration":"85分钟","region":"法国","director":"亚历山德拉·阿斯提耶尔 路易斯·克里希","actors":"克里斯蒂昂·克拉维埃 \/ Guillaume Briat \/ 亚历克斯·鲁茨","votecount":"501","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2678123161.jpg"},"25":{"id":"26997969","name":"小小港湾","rating":"7.1","release":"2017","duration":"85分钟","region":"斯洛伐克 捷克","director":"伊韦塔·格罗福娃","actors":"瓦妮莎·萨穆赫洛娃 \/ 马图斯·巴奇辛 \/ 卡塔琳娜·卡门佐娃","votecount":"2009","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2678201497.jpg"},"26":{"id":"35087699","name":"中国医生","rating":"6.9","release":"2021","duration":"129分钟","region":"中国大陆","director":"刘伟强","actors":"张涵予 \/ 袁泉 \/ 朱亚文","votecount":"159802","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2666591984.jpg"},"27":{"id":"30394018","name":"忠犬流浪记","rating":"0","release":"2021","duration":"90分钟","region":"中国大陆","director":"桑凯·维杜朗","actors":"叮当 \/ 应昊茗 \/ 王硕","votecount":"927","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2567862389.jpg"},"28":{"id":"35213205","name":"小花仙大电影:奇迹少女","rating":"0","release":"2021","duration":"100分钟","region":"中国大陆","director":"岳淑馨","actors":"醋醋 \/ 冯骏骅 \/ 黑石稔","votecount":"346","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2673157703.jpg"},"29":{"id":"35388993","name":"探探猫人鱼公主","rating":"0","release":"2021","duration":"85分钟","region":"中国大陆","director":"宋庭辉","actors":"李凤良 \/ 李娇 \/ 张懿涵","votecount":"3","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2634896515.jpg"},"30":{"id":"35408051","name":"何以飞翔","rating":"0","release":"2021","duration":"93分钟","region":"中国大陆 中国澳门","director":"陈尚实","actors":"邓加乐 \/ 邓嘉欣 \/ 秦显伟","votecount":"211","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2679716121.jpg"},"31":{"id":"34949741","name":"青春再见青春","rating":"0","release":"2021","duration":"90分钟","region":"中国大陆","director":"蒙汉","actors":"赵楚纶 \/ 高姝瑶 \/ 程实","votecount":"15","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2679342421.jpg"},"32":{"id":"35268865","name":"非常·主播","rating":"0","release":"2021","duration":"100分钟","region":"中国大陆","director":"黄剑波","actors":"丁溪鹤 \/ 蒲萄 \/ 秦沛","votecount":"34","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2675815117.jpg"},"33":{"id":"34884711","name":"流浪猫鲍勃2:鲍勃的礼物","rating":"6.7","release":"2020","duration":"92分钟","region":"英国","director":"查尔斯·马丁·史密斯","actors":"卢克·崔德威 \/ 猫鲍勃 \/ 克里斯蒂娜·托内瑞·杨","votecount":"15148","image":"https:\/\/img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2674289979.jpg"},"34":{"id":"26586759","name":"白马王子","rating":"5.7","release":"2018","duration":"86分钟","region":"加拿大 美国","director":"罗斯·维诺库尔","actors":"塔拉·斯特朗 \/ 维尔摩·瓦尔德拉玛 \/ 阿什丽·提斯代尔","votecount":"697","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2676929296.jpg"},"35":{"id":"35571114","name":"清晨车站","rating":"0","release":"2021","duration":"88分钟","region":"中国大陆","director":"张嘉铭","actors":"虞绘巧 \/ 徐江帅 \/ 申晓雨","votecount":"4","image":"https:\/\/img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2679347410.jpg"},"36":{"id":"35177259","name":"我的爸爸是森林之王2","rating":"6.0","release":"2020","duration":"89分钟","region":"比利时 法国","director":"杰里米·德格鲁森 本·斯塔森","actors":"罗杰·克莱格·史密斯 \/ 杰斯·诺曼 \/ 戴维·洛奇","votecount":"647","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2674166864.jpg"},"37":{"id":"33437509","name":"贝肯熊2:金牌特工","rating":"4.8","release":"2021","duration":"95分钟","region":"中国大陆","director":"张扬","actors":"汤水雨 \/ 孟子焱 \/ 徐佳琦","votecount":"2270","image":"https:\/\/img9.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2654242565.jpg"},"38":{"id":"1464618","name":"狼牙山五壮士","rating":"7.3","release":"1958","duration":"82分钟","region":"中国大陆","director":"史文炽","actors":"李长华 \/ 高保成 \/ 李力","votecount":"11171","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2532680861.jpg"},"39":{"id":"35445373","name":"巧虎魔法岛历险记","rating":"0","release":"2021","duration":"80分钟","region":"中国大陆","director":"河村友宏","actors":"李晔 \/ 沈达威 \/ 罗玉婷","votecount":"358","image":"https:\/\/img2.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2668649931.jpg"}} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2b6f52c --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +/.idea +/.vscode +/vendor +*.log +thinkphp +.env +.DS_Store diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..36f7b6f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,42 @@ +sudo: false + +language: php + +branches: + only: + - stable + +cache: + directories: + - $HOME/.composer/cache + +before_install: + - composer self-update + +install: + - composer install --no-dev --no-interaction --ignore-platform-reqs + - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip . + - composer require --update-no-dev --no-interaction "topthink/think-image:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0" + - composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0" + - composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0" + - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip . + +script: + - php think unit + +deploy: + provider: releases + api_key: + secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw= + file: + - ThinkPHP_Core.zip + - ThinkPHP_Full.zip + skip_cleanup: true + on: + tags: true diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..76d7a905c44d9018344cf039461d80237dde1158 GIT binary patch literal 90112 zcmeI4&u<&Y6~{?Y)=HFUDnDc%bjTh8SX+ydCB*^iAV4W{Wp7N86o1GORDxKEYkLuL zX_G6*0&=0<7-$R_$e++tbM0TyOMw0l&9#T#dMHpJ$fYy8JNsjHX)jMigVQSc3dqBR}l*9{DiK4#<1l_j%OE zL~P?D@d_1A|3qcpP5-p?-O}>nz2xhKSMxsziMfNsw=+M^RA)XL)dkM~&k&fWmJUC> zDrD|w$-B6*cdVfm)Gb{rhGDGgUrLMBhlyc2C^N$qOU#$6p_oToX)Br4bx^W|cZ`dTXI zb2VA|`qL#Llg-Az$(rg(N8?@Rk5i5@_1tbzj_^E{T(h}^AS&%9;aivQ$W^gYRrYh$ zBk`VmB<33RvQi@5?#rb*v5NdOip6!OmrB3)RBvm2zc!PxMd&0{Xe!7>*=u6P*Z@n1xoZAyuDZ5;>z3pi%yDHZ zduN@_`N5gm(I4nqJF0`=d@#LxBuYG9%wyJ?J3Z9~1N}trP#0aSycidQAvw=wKR}u& zwex|gbzOw~DT-3`v@gQ4*gI8eepY*5j&^_v<$Im8t`U|?C8go!qL68kylPo_Wm$Tv z8iv--tEZ2&R@ihq%Xq=1V3zUCBm42?9Ir!SFFblvdeKN)8TYbjWgM@?A1?+oj&CO8 zvy9`L{5dm0#yJxjWpgNU0vTtGJ3e6EE?!t#`<-I(9dHQ;q@-TaNX#w>nN2DFJZ(iH8 zg^{(~w-rVutyGzr%iOpTKe8fc@Pw?A$D{Oy2MU z0T2KI5C8!X009sH0T2KI5C8!X_~i&(OU%YL(+Yi7O75-FhfVq3nPF~SpP7wick+Er zHMMrR-+0`nAGU68-rU~YzPY_6Zhd@v=hwGyesnE98@ryVktZ-+)wwIXwXw5ti|+s9 z>3_z^KfFKy1V8`;KmY_l00ck)1V8`;KmY`$hrnVyu^M;2gOErPzY^*1W9h%9zfb>T zdYptOAOHd&00JNY0w4eaAOHd&00JN|Z3I>loAJ40W-^q>kEM|0nq3F zZ6%TisV%;h2@*#+Hr8$rZikh37I@G^G>vxCAF(X8+Ub#ah~QFlc-=*%$JKr z>T9W-&(&n<>ra=2Og0<;CTprE9gTOLKTbKu)N{KGb9UMl_GQ@ySA{n|{%7NL_+mG|VTT*}Ke z@tA4IhN+w9%{BJ~=|b{U$h}i2BzA5+!Sf?s4M%Vl9GBwBQd)mWHzPv^RyL-Y*^Y~i~eFKY{Qby zv^Gl0LBqZBFd0|L7hbH*ag1DJ*csbou8_E`hgyF?5-n8upU38fj3mWhd}75R>&)&x zc(f3V!C<2=0$GE9k|u~eJ2G5@ZFjsfdvk1+W#hW8PNGbw?6x3eby=aXO;=P0*&S2?wpYMf>ge9uk!h_&>1?c>8pP} zal!G&SpxBDV|p9o+Z&u%x#C|Ig@&b6q79xKW3Z<=#<(c((u=#Zc9G6|McPM;xARIc zLHK50ittSrOBLH@FUluaiHw{Buhv<0jIO8X>jF!Hx2y2VfU;?dyGnQ&SX2jQ`DCE= zpK4@TqpFOp_$=V$(d%5Ra@{d5r`YEam^sXzfLrz z;hngUSzV1k*Q`Dr+nl$VKp)4>SzpLGXD%($4%N;XnMW=rRn7M>##pm)hOIXYNGrDiQ;himT%nPVwF zJmOXr1=UnX?t(l%RP0)?lm;6|_7QoRrrps(>-E7fH>KY_d)HdP{{9AcjiyST0zFy@ z*2rL^uT%ybE>_#MD7hMoGMYp_+C?5aCYUAE{3f`A;?m2yU zRlvg!g+9~ql@|V?#mJo+9)95A$A#{6yyX&%J=ggEd-#FB|G)H`92gJ;KmY_l00ck) z1V8`;KmY_l00b_b0QUcvjvNDm00@8p2!H?xfB*=900@8p2!Oz)6Ttufcj?G6AP9f} z2!H?xfB*=900@8p2!H?xTsi?f|G#wP7!U+N00ck)1V8`;KmY_l00ck)1TLMxzX6HA Bh=~9I literal 0 HcmV?d00001 diff --git a/.vs/tp/v16/.suo b/.vs/tp/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..034a0ea9cb87e2f0b33c2e480dc43d0d8c67a122 GIT binary patch literal 12800 zcmeHN%W@k<6uou`5D1TuU?3P`f(Zs9W6O>op-3fuBv2qi*^bS^8|z_PSh7`;od+wv zfIUn804S>1rT76V?AXFTP}xw#oYOrmwMLpzOR~neP^<1tPj^qBzTNlL)B5efsXxB^ z;q0H{OIPHWJla1Yk6YzER$iVLc>&KXd$hm5&no7T?WQ9%0}HZ)->wYEylmrMlzUuC z=hP?1%WHnT!CNEue|)(4^Y1-Rqunph=*FJ|aYw$CkAc39+`Qav&`Wi7pY)dTIqlW8 z^`9nC4DnUT;1jnXIgFqv8PFo;Vhxn>+6CPPrMJgk?x1#d`9(Z@;}zVLJ)qRbQ==Evj|FIcBzR&B6#b>PiN#wa~&w`!E4gl49vje?Z}qo;q8jJyZSvWyGs4=KaBe*C*)k0hF`}}J>)f6 z0&WSopTgIb;0YIHQ~BUsNh!}*3hzqj|Bj&z<<%8Gj<%F-Ci;DP`67Jp8vO8ej3bBV zl9u zKY|Jp(@jYt`bz+epm7>#f&X{WE#pciKmH8Hkii(X5RLC(MW}OO;}`<}lx6C(EC27Ht+79TeAs_F%5_&-gA#{xlLjvEB(^gC-PUpXvSRiCAhU$e)V8 zx!-feXN<{slgZ{R0llXe)|O}({*SV_t@PkJaMzTVtX>JqKXFacy@p?jO`pLOhQAEt zB6wzuk}O9kd?St0O=Xv^di*zo&v?byzcBn2WrerlBMTUbo(DB(>k@B)fBHV-|HJTS zVF9!xg5?nqe>J`S9GJlm z9Apy}X6<=z;7+73Q#VGz+qu#T}6<4ew&|N9T^KI1>*gJ=gR3$#g$Nf;NO1-%OD z2fYS*9dr&f0D1#-9`q(?5cC%40w`!qG1Lu*)SLJ0IqBwuXMk%;eQY(g`#$YZJNUGt ze8191;VK@TQ@i7L1`23c8FxSfhhnprv75G2X7}To=Q^%~=H#-hs=ZVR-hw-7eo@$i z$K)=OHM6)HYhFS=ffl-SRK}s(ahb+-3_HXTTqn_jQ9uekv6l><1<%nSrQ|k7PeevN zQSg?BZzHe8Nck)w+T~hwZVgi^l3E1{_Y|F6LqF18nSfkHiO4T$d4;&!A*u26n1XIm zM;NV=(?UeJS!n1K=9ic}x9fz47_N-u=(DmdaLhfrmfB9)13xyS;asHL-o~nOb&J5w zVi&@h{wkuGCUy~4m)~HrYVSq#PRTS+TXR5J2WrJmnCGZ*^=P8wx7NpDsvS~~75O+c zuW4fT;WZVG1&m+%LG#M*Uz5sj73*10@*37vyYUadWB!c|_2Br}^x9bb(sXP+9-oel zPmaZ7Yg6e=ES^kGj;50nQ`3`a6(&|A^4lrNiy--Fk_|{FIsRdM5ia3gQ*g^`^%3I~ z`xh%eh3D*dm_MAv{aXS$u6Ndq)#$w#u@%ZEAR-^)-$49o@j=ZX8TWDTS7&NfX`{;* z54gK*Jq?Qg1gj(ih$lItqgXv&!xGoEo%Ha={c}I9?tS}LE`R2eUuW*L)7N3VYxc|a z?nin5Pky?o@eKI2M_Yi#|9djB+CBf(-@lLQ`S1Vz`)@)P0e7fiV uO`QKX{r|%u2w%|otNA|?&)}mt|L?~C#uBu4ryb}1krt(u`2Vo?5B~zcya)pT literal 0 HcmV?d00001 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8f49a88 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,946 @@ +## V5.1.41 LTS(2021-1-11) + +本版本为PHP8兼容更新 + +## V5.1.40 LTS(2020-10-09) +本版本为常规更新,主要包括: +* 改进redis驱动`has`方法 +* 修正XA事务 +* 修正`HasManyThrough`关联 +* 增加mysql json类型字段->>方式获取支持 +* 改进路由加载 避免加载编辑器临时文件影响 +* 修复关联模型的属性直接附加到当前模型,当关联模型字段名为name时获取的值为模型的属性name值 +* 修复多态关联预加载`field`无效 +* 改进Collection类的`column`方法的PHP兼容性问题 +* 改进mysql驱动 +* 改进`parseclosure`方法 +* SoftDelete删除条件做空判断 +* 改进验证类`append`方法 + +## V5.1.39 LTS(2019-11-18) + +本次更新为常规更新,主要包括: + +* 修正`memcached`驱动 +* 改进`HasManyThrough`关联查询 +* 改进`Request`类`isJson`方法 +* 改进关联查询 +* 改进`redis`驱动 +* 增加 Model类`getWhere`方法对复合主键的支持 +* 改进`newQuery`方法 +* 改进闭包查询的参数绑定 +* 修正`Validate` +* 修复某些情况下URL会多一个冒号 +* 调整composer.json +* 修复使用`Cache::clear()`时,报错缓存文件不存在问题 +* 使用File类的unlink方法进行文件删除 +* 改进`paraseData`方法 +* 修正image验证方法 +* 改进Url生成 +* 改进空操作对数字的支持 +* 改进一处PHP7.4兼容性问题 + +## V5.1.38 LTS(2019-8-8) + +本次更新为常规更新,主要包括: + +* `Request`类增加`isJson`方法 +* 改进浮点型查询 +* 修正关联查询关联外键为空的查询错误 +* 远程一对多支持关联统计和预载入查询 +* 远程一对多关联支持`has`/`hasWhere`查询 +* 优化`parseIn`解析 +* 改进`parseLike`查询 +* 改进Url生成 +* 改进模型的`toArray`方法 +* 修正`notIn`查询 +* 改进`JSON`字段查询 +* 改进Controller类`display`/`fetch`方法返回`ViewResponse`对象 +* 改进`param`方法 +* 改进`mysql`驱动`getExplain`方法 +* 改进时间查询 +* 改进模型关联的`has`/`hasWhere`方法对软删除的支持 +* 修正社区反馈的BUG + +## V5.1.37 LTS(2019-5-26) + +本次更新为常规更新,主要更新如下: + +* 改进关联数据更新 +* 修正关联动态获取器 +* 改进`redis`驱动 +* 修复验证规则里面出现二维数组时的错误 +* 改进跨域请求支持 +* 完善模型`hidden`方法对关联属性的支持 +* 改进`where`查询方法传入`Query`对象的支持`bind`数据 +* 改进数据集对象的`load`方法 +* 修正缓存类`clear`方法对`tag`的支持 + +## V5.1.36 LTS(2019-4-28) + +本次更新为常规更新,主要更新如下: + +* 修正`chunk`方法一处异常抛出的错误 +* 修正模型输出的`visible` +* 改进环境变量加载 +* 改进命令行日志的`level`配置支持 +* 修复设置有缓存前缀时,无法清空缓存标签的问题 +* HasMony对象`saveAll`方法兼容`Collection`格式参数格式 +* 修正`whereOr`查询使用字符串的问题 +* 改进`dateFormat`设置对写入数据的影响 +* 修正查询缓存 +* 记住指定的跳转地址 +* 改进软删除 +* 改进聚合查询SQL去除limit 1 +* 改进缓存驱动 + +## V5.1.35 LTS(2019-3-2) + +本次主要为常规更新,修正了一些反馈的问题。 + +* 修正验证类自定义验证方法执行两次的问题 +* 模型增加`isEmpty`方法用于判断是否空模型 +* 改进获取器对`append`的支持 +* 修正一对多关联的`withCount`自关联问题 +* facade类注释调整 +* 改进关联属性的`visible`和`hidden`判断 +* 修正路由分组的`MISS`路由 +* 改进pgsql.sql + +## V5.1.34 LTS(2019-1-30) + +本次更新为常规更新,修正了一些反馈的问题。 + +* 改进Request类的`has`方法,支持`patch` +* 改进`unique`验证的多条件支持 +* 修复自定义上传验证,检测文件大小 +* 改进`in`查询支持表达式 +* 改进路由的`getBind`方法 +* 改进验证类的错误信息获取 +* 改进`response`助手函数默认值 +* 修正mysql的`regexp`查询 +* 改进模型类型强制转换写入对`Expression`对象的支持 + +## V5.1.33 LTS(2019-1-16) + +* 修复路由中存在多个相同替换的正则BUG +* 修正whereLike查询 +* join方法支持参数绑定 +* 改进union方法 +* 修正多对多关联的attach方法 +* 改进验证类的正则规则自定义 +* 改进Request类method方法 +* 改进File日志类型的CLI日志写入 +* 改进文件日志time_format配置对JSON格式的支持 + +## V5.1.32 LTS(2018-12-24) + +本次主要为常规更新,修正了一些反馈的问题。 + + +* 改进多对多关联的`attach`方法 +* 改进聚合查询的`field`处理 +* 改进关联的`save`方法 +* 修正模型`exists`方法返回值 +* 改进时间字段写入和输出 +* 改进控制器中间件的调用 +* 改进路由变量替换的性能 +* 改进缓存标签的处理机制 + +## V5.1.31 LTS (2018-12-9) + +本次版本包含一个安全更新,建议升级。 + +* 改进`field`方法 +* 改进`count`方法返回类型 +* `download`函数增加在浏览器中显示文件功能 +* 修正多对多模型的中间表数据写入 +* 改进`sqlsrv`驱动支持多个Schemas模式查询 +* 统一助手函数与\think\response\Download函数文件过期时间 +* 完善关联模型的`save`方法 增加`make`方法仅创建对象不保存 +* 修改条件表达式对静态变量的支持 +* 修正控制器名获取 +* 改进view方法的`field`解析 + +## V5.1.30 LTS(2018-11-30) + +该版本为常规更新,修正了一些社区反馈的问题。 + +主要更新如下: + +* 改进查询类的`execute`方法 +* 判断路由规则定义添加对请求类型的判断 +* 修复`orderRaw`异常 +* 修正 `optimize:autoload`指令 +* 改进软删除的`destroy`方法造成重复执行事件的问题 +* 改进验证类对扩展验证规则 始终验证 不管是否`require` +* 修复自定义验证`remove`所有规则的异常 +* 改进时间字段的自动写入支持微秒数据 +* 改进`Connection`类的`getrealsql`方法 +* 修正`https`地址的URL生成 +* 修复 `array_walk_recursive` 在低于PHP7.1消耗内部指针问题 +* 改进手动参数绑定使用 +* 改进聚合查询方法的`field`参数支持`Expression` + +## V5.1.29 LTS(2018-11-11) + +该版本主要改进了参数绑定的解析问题和提升性能,并修正了一些反馈的问题。 + +* 改进手动参数绑定 +* 修正MISS路由的分组参数无效问题 +* 行为支持对象的方法 +* 修正全局查询范围 +* 改进`belongsto`关联的`has`方法 +* 改进`hasMany`关联 +* 改进模型观察者多次注册的问题 +* 改进`query`类的默认查询参数处理 +* 修正`parseBetween`解析方法 +* 改进路由地址生成的本地域名支持 +* 改进参数绑定的实际URL解析性能 +* 改进`Env`类的`getEnv`和`get`方法 +* 改进模板缓存的生成优化 +* 修复验证类的多语言支持 +* 修复自定义场景验证`remove`规则异常 +* File类添加是否自动补全扩展名的选项 +* 改进`strpos`对子串是否存在的判断 +* 修复`choice`无法用值选择第一个选项问题 +* 验证器支持多维数组取值验证 +* 改进解析`extend`和`block`标签的正则 + +## V5.1.28 LTS(2018-10-29) + +该版本主要修正了上一个版本存在的一些问题,并改进了关联查询 + +* 改进聚合查询方法的字段支持DISTINCT +* 改进定义路由后url函数的端口生成 +* 改进控制器中间件对`swoole`等的支持 +* 改进Log类`save`方法 +* 改进验证类的闭包验证参数 +* 多对多关联支持指定中间表数据的名称 +* 关联聚合查询支持闭包方式指定聚合字段 +* 改进Lang类`get`方法 +* 多对多关联增加判断关联数据是否存在的方法 +* 改进关联查询使用`fetchsql`的情况 +* 改进修改器的是否已经执行判断 +* 增加`afterWith`和`beforeWith`验证规则 用于比较日期字段 + +## V5.1.27 LTS(2018-10-22) + +该版本主要修正了路由绑定的参数,改进了修改器的执行多次问题,并正式宣布为LTS版本! + + +* 修正路由绑定的参数丢失问题 +* 修正路由别名的参数获取 +* 改进修改器会执行多次的问题 + +## V5.1.26(2018-10-12) + +该版本主要修正了上一个版本的一些问题,并改进了全局查询范围的支持,同时包含了一个安全更新。 + + +* 修正单一模块下注解路由无效的问题 +* 改进数据库的聚合查询的字段处理 +* 模型类增加`globalScope`属性定义 用于指定全局的查询范围 +* 模型的`useGlobalScope`方法支持传入数组 用于指定当前查询需要使用的全局查询范围 +* 改进数据集的`order`方法对数字类型的支持 +* 修正上一个版本`order`方法解析的一处BUG +* 排序字段不合法或者错误的时候抛出异常 +* 改进`Request`类的`file`方法对上传文件的错误判断 + +## V5.1.25(2018-9-21) + +该版本主要改进了查询参数绑定的性能和对浮点型的支持,以及一些细节的完善。 + +* 修正一处命令行问题 +* 改进`Socketlog`日志驱动,支持自定义默认展开日志类别 +* 修正`MorphMany`一处bug +* 跳转到上次记住的url,并支持默认值 +* 改进模型的异常提示 +* 改进参数绑定对浮点型的支持 +* 改进`order`方法解析 +* 改进`json`字段数据的自动编码 +* 改进日志`log_write`可能造成的日志写入死循环 +* Log类增加`log_level`行为标签位置,用于对某个类型的日志进行处理 +* Route类增加`clear`方法清空路由规则 +* 分布式数据库配置支持使用数组 +* 单日志文件也支持`max_files`参数 +* 改进查询参数绑定的性能 +* 改进别名路由的URL后缀参数检测 +* 控制器前置方法和控制器中间件的`only`和`except`定义不区分大小写 + +## V5.1.24(2018-9-5) + +该版本主要增加了命令行的表格输出功能,并增加了查看路由定义的指令,以及修正了社区的一些反馈问题。 + +* 修正`Request`类的`file`方法 +* 修正路由的`cache`方法 +* 修正路由缓存的一处问题 +* 改进上传文件获取的异常处理 +* 改进`fetchCollection`方法支持传入数据集类名 +* 修正多级控制器的注解路由生成 +* 改进`Middleware`类`clear`方法 +* 增加`route:list`指令用于[查看定义的路由](752690) 并支持排序 +* 命令行增加`Table`输出类 +* `Command`类增加`table`方法用于输出表格 +* 改进搜索器查询方法支持别名定义 +* 命令行配置增加`auto_path`参数用于定义自动载入的命令类路径 +* 增加`make:command`指令用于[快速生成指令](354146) +* 改进`make:controller`指令对操作方法后缀的支持 +* 改进命令行的定义文件支持索引数组 用于指令对象的惰性加载 +* 改进`value`和`column`方法对后续查询结果的影响 +* 改进`RuleName`类的`setRule`方法 + +## V5.1.23(2018-8-23) + +该版本主要改进了数据集对象的处理,增加了`findOrEmpty`方法,并且修正了一些社区反馈的BUG。 + +* 数据集类增加`diff`/`intersect`方法用于获取差集和交集(默认根据主键值比较) +* 数据集类增加`order`方法支持指定字段排序 +* 数据集类增加`map`方法使用回调函数处理数据并返回新的数据集对象 +* Db增加`allowEmpty`方法允许`find`方法在没有数据的时候返回空数组或者空模型对象而不是null +* Db增加`findOrEmpty`方法 +* Db增加`fetchCollection`方法用于指定查询返回数据集对象 +* 改进`order`方法的数组方式解析,增强安全性 +* 改进`withSearch`方法,支持第三个参数传入字段前缀标识,用于多表查询字段搜索 +* 修正`optimize:route`指令开启类库后缀后的注解路由生成 +* 修正redis缓存及session驱动 +* 支持指定`Yaconf`的独立配置文件 +* 增加`yaconf`助手函数用于配置文件 + + +## V5.1.22(2018-8-9) + +该版本主要增加了模型搜索器和`withJoin`方法,完善了模型输出和对`Yaconf`的支持,修正了一些社区反馈的BUG。 + +* 改进一对一关联的`table`识别问题 +* 改进内置`Facade`类 +* 增加`withJoin`方法支持`join`方式的[一对一关联](一对一关联.md)查询 +* 改进`join`预载入查询的空数据问题 +* 改进`Config`类的`load`方法支持快速加载配置文件 +* 改进`execute`方法和事务的断线重连 +* 改进`memcache`驱动的`has`方法 +* 模型类支持定义[搜索器](搜索器.md)方法 +* 完善`Config`类对`Yaconf`的支持 +* 改进模型的`hidden/visible/append/withAttr`方法,支持在[查询前后调用](数组访问.md),以及支持数据集对象 +* 数据集对象增加`where`方法根据字段或者关联数据[过滤数据](模型数据集.md) +* 改进AJAX请求的`204`判断 + + +## V5.1.21(2018-8-2) + +该版本主要增加了下载响应对象和数组查询对象的支持,并修正了一些社区反馈的问题。 + +* 改进核心对象的无用信息调试输出 +* 改进模型的`isRelationAttr`方法判断 +* 模型类的`get`和`all`方法并入Db类 +* 增加[下载响应对象](文件下载.md)和`download`助手函数 +* 修正别名路由配置定义读取 +* 改进`resultToModel`方法 +* 修正开启类库后缀后的注解路由生成 +* `Response`类增加`noCache`快捷方法 +* 改进路由对象在`Swoole`/`Workerman`下面参数多次合并问题 +* 修正路由`ajax`/`pjax`参数后路由变量无法正确获取的问题 +* 增加清除中间件的方法 +* 改进依赖注入的参数规范自动识别(便于对接前端小写+下划线规范) +* 改进`hasWhere`的数组条件的字段判断 +* 增加[数组查询对象](高级查询.md)`Where`支持(喜欢数组查询的福音) +* 改进多对多关联的闭包支持 + +## V5.1.20(2018-7-25) + +该版本主要增加了Db和模型的动态获取器的支持,并修正了一些已知问题。 + +* Db类添加[获取器支持](703981) +* 支持模型及关联模型字段[动态定义获取器](354046) +* 动态获取器支持`JSON`字段 +* 改进路由的`before`行为执行(匹配后执行) +* `Config`类支持`Yaconf` +* 改进Url生成的端口问题 +* Request类增加`setUrl`和`setBaseUrl`方法 +* 改进页面trace的信息显示 +* 修正`MorphOne`关联 +* 命令行添加[查看版本指令](703994) + +## V5.1.19 (2018-7-13) + +该版本是一个小幅改进版本,针对`Swoole`和`Workerman`的`Cookie`支持做了一些改进,并修正了一些已知的问题。 + + +* 改进query类`delete`方法对软删除条件判断 +* 修正分表查询的软删除问题 +* 模型查询的时候同时传入`table`和`name`属性 +* 容器类增加`IteratorAggregate`和`Countable`接口支持 +* 路由分组支持对下面的资源路由统一设置`only/except/vars`参数 +* 改进Cookie类更好支持扩展 +* 改进Request类`post`方法 +* 改进模型自关联的自动识别 +* 改进Request类对`php://input`数据的处理 + + +## V5.1.18 (2018-6-30) + +该版本主要完善了对`Swoole`和`Workerman`的`HttpServer`运行支持,改进`Request`类,并修正了一些已知的问题。 + +* 改进关联`append`方法的处理 +* 路由初始化和检测方法分离 +* 修正`destroy`方法强制删除 +* `app_init`钩子位置移入`run`方法 +* `think-swoole`扩展更新到2.0版本 +* `think-worker`扩展更新到2.0版本 +* 改进Url生成的域名自动识别 +* `Request`类增加`setPathinfo`方法和`setHost`方法 +* `Request`类增加`withGet`/`withPost`/`withHeader`/`withServer`/`withCookie`/`withEnv`方法进行赋值操作 +* Route类改进`host`属性的获取 +* 解决注解路由配置不生效的问题 +* 取消Test日志驱动,改为使用`close`设置关闭全局日志写入 +* 修正路由的`response`参数 +* 修正204响应输出的判断 + +## V5.1.17 (2018-6-18) + +该版本主要增加了控制器中间件的支持,改进了路由功能,并且修正了社区反馈的一些问题。 + +* 修正软删除的`delete`方法 +* 修正Query类`Count`方法 +* 改进多对多`detach`方法 +* 改进Request类`Session`方法 +* 增加控制器中间件支持 +* 模型类增加`jsonAssoc`属性用于定义json数据是否返回数组 +* 修正Request类`method`方法的请求伪装 +* 改进静态路由的匹配 +* 分组首页路由自动完整匹配 +* 改进sqlsrv的`column`方法 +* 日志类的`apart_level`配置支持true自动生成对应类型的日志文件 +* 改进`204`输出判断 +* 修正cli下页面输出的BUG +* 验证类使用更高效的`ctype`验证机制 +* 改进Request类`cookie`方法 +* 修正软删除的`withTrashed`方法 +* 改进多态一对多的预载入查询 +* 改进Query类`column`方法的缓存读取 +* Query类增加`whereBetweenTimeField`方法 +* 改进分组下多个相同路由规则的合并匹配问题 +* 路由类增加`getRule`/`getRuleList`方法获取定义的路由 + +## V5.1.16 (2018-6-7) + +该版本主要修正了社区反馈的一些问题,并对Request类做了进一步规范和优化。 + +* 改进Session类的`boot`方法 +* App类的初始化方法可以单独执行 +* 改进Request类的`param`方法 +* 改进资源路由的变量替换 +* Request类增加`__isset`方法 +* 改进`useGlobalScope`方法对软删除的影响 +* 修正命令行调用 +* 改进Cookie类`init`方法 +* 改进多对多关联删除的返回值 +* 一对多关联写入支持`replace` +* 路由增加`filter`检测方法,用于通过请求参数检测路由是否匹配 +* 取消Request类`session/env/server`方法的`filter`参数 +* 改进关联的指定属性输出 +* 模型删除操作删除后不清空对象数据仅作标记 +* 调整模型的`save`方法返回值为布尔值 +* 修正Request类`isAjax`方法 +* 修正中间件的模块配置读取 +* 取消Request类的请求变量的设置功能 +* 取消请求变量获取的默认修饰符 +* Request类增加`setAction/setModule/setController`方法 +* 关联模型的`delete`方法调用Query类 +* 改进URL生成的域名识别 +* 改进URL检测对已定义路由的域名判断 +* 模型类增加`isExists`和`isForce`方法 +* 软删除的`destroy`和`restore`方法返回值调整为布尔值 + +## V5.1.15 (2018-6-1) + +该版本主要改进了路由缓存的性能和缓存方式设置,增加了JSON格式文件日志的支持,并修正了社区反馈的一些问题。 + +* 容器类增加`exists`方法 仅判断是否存在对象实例 +* 取消配置类的`autoload`方法 +* 改进路由缓存大小提高性能 +* 改进Dispatch类`init`方法 +* 增加`make:validate`指令生成验证器类 +* Config类`get`方法支持默认值参数 +* 修正字段缓存指令 +* 改进App类对`null`数据的返回 +* 改进模型类的`__isset`方法判断 +* 修正`Query`类的`withAggregate`方法 +* 改进`RuleItem`类的`setRuleName`方法 +* 修正依赖注入和参数的冲突问题 +* 修正Db类对第三方驱动的支持 +* 修正模型类查询对象问题 +* 修正File缓存驱动的`has`方法 +* 修正资源路由嵌套 +* 改进Request类对`$_SERVER`变量的读取 +* 改进请求缓存处理 +* 路由缓存支持指定单独的缓存方式和参数 +* 修正资源路由的中间件多次执行问题 +* 修正`optimize:config`指令 +* 文件日志支持`JSON`格式日志保存 +* 修正Db类`connect`方法 +* 改进Log类`write`方法不会自动写入之前日志 +* 模型的关联操作默认启用事务 +* 改进软删除的事件响应 + +## V5.1.14 (2018-5-18) + +该版本主要对底层容器进行了一些优化改进,并增加了路由缓存功能,可以进一步提升路由性能。 + +* 依赖注入的对象参数传入改进 +* 改进核心类的容器实例化 +* 改进日期字段的读取 +* 改进验证类的`getScene`方法 +* 模型的`create`方法和`save`方法支持`replace`操作 +* 改进`Db`类的调用机制 +* App类调整为容器类 +* 改进容器默认绑定 +* `Loader`类增加工厂类的实例化方法 +* 增加路由变量默认规则配置参数 +* 增加路由缓存设计 +* 错误处理机制改进 +* 增加清空路由缓存指令 + + +## V5.1.13 (2018-5-11) + +该版本主要增加了MySQL的XA事务支持,模型事件支持观察者,以及对Facade类的改进。 + +* 改进自动缓存 +* 改进Url生成 +* 修正数据缓存 +* 修正`value`方法的缓存 +* `join`方法和`view`方法的条件支持使用`Expression`对象 +* 改进驱动的`parseKey`方法 +* 改进Request类`host`方法和`domain`方法对端口的处理 +* 模型增加`withEvent`方法用于控制当前操作是否需要执行模型事件 +* 模型`setInc/setDec`方法支持更新事件 +* 模型添加`before_restore/after_restore`事件 +* 增加模型事件观察者 +* 路由增加`mobile`方法设置是否允许手机访问 +* 数据库XA事务支持 +* 改进索引数组查询对`IN`查询的支持 +* 修正`invokeMethod`方法 +* 修正空数据写入返回值的BUG +* redis驱动支持`predis` +* 改进`parseData`方法 +* 改进模块加载 +* App类初始化方法调整 +* 改进数组查询对表达式`Expression`对象支持 +* 改进闭包的依赖注入调用 +* 改进多对多关联的中间表模型更新 +* 增加容器中对象的自定义实例化 + +## V5.1.12 (2018-4-25) + +该版本主要改进了主从查询的及时性,并支持动态设置请求数据。 + +* 支持动态设置请求数据 +* 改进`comment`方法解析 +* 修正App类`__unset`方法 +* 改进url生成的域名绑定 +* 改进主从查询的及时性 +* 修正`value`的数据缓存功能 +* 改进分页类的集合对象方法调用 +* 改进Db类的代码提示 +* SQL日志增加主从标记 + +## V5.1.11 (2018-4-19) + +该版本为安全和修正版本,改进了JSON查询的参数绑定问题和容器类对象实例获取,并包含一处可能的安全隐患,建议更新。 + +* 支持指定JSON数据查询的字段类型 +* 修正`selectInsert`方法 +* `whereColumn`方法支持数组方式 +* 改进容器类`make`方法 +* 容器类`delete`方法支持数组 +* 改进`composer`自动加载 +* 改进模板引擎 +* 修正`like`查询的一处安全隐患 + +## V5.1.10 (2018-4-16) + +该版本为修正版本,修正上一个版本的一些BUG,并增强了`think clear`指令。 + +* 改进`orderField`方法 +* 改进`exists`查询 +* 修改cli模式入口文件位置计算 +* 修正`null`查询 +* 改进`parseTime`方法 +* 修正关联预载入查询 +* 改进`mysql`驱动 +* 改进`think clear`指令 支持 `-c -l -r `选项 +* 改进路由规则对`/`结尾的支持 + +## V5.1.9 (2018-4-12) + +该版本主要是一些改进和修正,并包含一个安全更新,是一个推荐更新版本。 + +* 默认模板渲染规则支持配置保持操作方法名 +* 改进`Request`类的`ip`方法 +* 支持模型软删除字段的默认值定义 +* 改进路由变量规则对中文的支持 +* 使用闭包查询的时候使用`cache(true)` 抛出异常提示 +* 改进`Loader`类`loadComposerAutoloadFiles`方法 +* 改进查询方法安全性 +* 修正路由地址中控制器名驼峰问题 +* 调整上一个版本的`module_init`和`app_begin`的钩子顺序问题 +* 改进CLI命令行执行的问题 +* 修正社区反馈的其它问题 + +## V5.1.8 (2018-4-5) + +该版本主要改进了中间件的域名和模块支持,并同时修正了几个已知问题。 + +* 增加`template.auto_rule` 参数设置默认模板渲染的操作名自动转换规则 +* 默认模板渲染规则改由视图驱动实现 +* 修正路由标识定义 +* 修正控制器路由方法 +* 改进Request类`ip`方法支持自定义代理IP参数 +* 路由注册中间件支持数组方式别名 +* 改进命令行执行下的`composer`自动加载 +* 添加域名中间件注册支持 +* 全局中间件支持模块定义文件 +* Log日志配置支持`close`参数可以全局关闭日志写入 +* 中间件方法中捕获`HttpResponseException`异常 +* 改进中间件的闭包参数传入 +* 改进分组路由的延迟解析 +* 改进URL生成对域名绑定的支持 +* 改进文件缓存和文件日志驱动的并发支持 + +## V5.1.7 (2018-3-28) + +该版本主要修正了路由的一些问题,并改进了查询的安全性。 + +* 支持`middleware`配置文件预先定义中间件别名方便路由调用 +* 修正资源路由 +* 改进`field`方法 自动识别`fieldRaw` +* 增加`Expression`类 +* Query类增加`raw`方法 +* Query类的`field`/ `order` 和` where`方法都支持使用`raw`表达式查询 +* 改进`inc/dec`查询 支持批量更新 +* 改进路由分组 +* 改进Response类`create`方法 +* 改进composer自动加载 +* 修正域名路由的`append`方法 +* 修正操作方法的初始化方法获取不到问题 + +## V5.1.6 (2018-3-26) + +该版本主要改进了路由规则的匹配算法,大幅提升了路由性能。并正式引入了中间件的支持,可以在路由中定义或者全局定义。另外包含了一个安全更新,是一个建议更新版本。 + +* 改进URL生成对路由`ext`方法的支持 +* 改进查询缓存对不同数据库相同表名的支持 +* 改进composer自动加载的性能 +* 改进空路由变量对默认参数的影响 +* mysql的`json`字段查询支持多级 +* Query类增加`option`方法 +* 优化路由匹配 +* 修复验证规则数字键名丢失问题 +* 改进路由Url生成 +* 改进一对一关联预载入查询 +* Request类增加`rootDomain`方法 +* 支持API资源控制器生成 `make:controller --api` +* 优化Template类的标签解析 +* 容器类增加删除和清除对象实例的方法 +* 修正MorphMany关联的`eagerlyMorphToMany`方法一处错误 +* Container类的异常捕获改进 +* Domain对象支持`bind`方法 +* 修正分页参数 +* 默认模板的输出规则不受URL影响 +* 注解路由支持多级控制器 +* Query类增加`getNumRows`方法获取前次操作影响的记录数 +* 改进查询条件的性能 +* 改进模型类`readTransform`方法对序列化类型的处理 +* Log类增加`close`方法可以临时关闭当前请求的日志写入 +* 文件日志方式增加自动清理功能(设置`max_files`参数) +* 修正Query类的`getPk`方法 +* 修正模板缓存的布局开关问题 +* 修正Query类`select`方法的缓存 +* 改进input助手函数 +* 改进断线重连的信息判断 +* 改进正则验证方法 +* 调整语言包的加载顺序 放到`app_init`之前 +* controller类`fetch`方法改为`final` +* 路由地址中的变量支持使用``方式 +* 改进XMLResponse 支持传入编码过的xml内容 +* 修正Query类`view`方法的数组表名支持 +* 改进路由的模型闭包绑定 +* 改进分组变量规则的继承 +* 改进`cli-server`模式下的`composer`自动加载 +* 路由变量规则异常捕获 +* 引入中间件支持 +* 路由定义增加`middleware`方法 +* 增加生成中间件指令`make:middleware` +* 增加全局中间件定义支持 +* 改进`optimize:config`指令对全局中间件的支持 +* 改进config类`has`方法 +* 改进时间查询的参数绑定 +* 改进`inc/dec/exp`查询的安全性 + + +## V5.1.5 (2018-1-31) + +该版本主要增强了数据库的JSON查询,并支持JSON字段的聚合查询,改进了一些性能问题,修正了路由的一些BUG,主要更新如下: + +* 改进数据集查询对`JSON`数据的支持 +* 改进聚合查询对`JSON`字段的支持 +* 模型类增加`getOrFail`方法 +* 改进数据库驱动的`parseKey`方法 +* 改进Query类`join`方法的自关联查询 +* 改进数据查询不存在不生成查询缓存 +* 增加`run`命令行指令启动内置服务器 +* `Request`类`pathinfo`方法改进对`cli-server`支持 +* `Session`类增加`use_lock`配置参数设置是否启用锁机制 +* 优化`File`缓存自动生成空目录的问题 +* 域名及分组路由支持`append`方法传递隐式参数 +* 改进日志的并发写入问题 +* 改进`Query`类的`where`方法支持传入`Query`对象 +* 支持设置单个日志文件的文件名 +* 修正路由规则的域名条件约束 +* `Request`类增加`subDomain`方法用于获取当前子域名 +* `Response`类增加`allowCache`方法控制是否允许请求缓存 +* `Request`类增加`sendData`方法便于扩展 +* 改进`Env`类不依赖`putenv`方法 +* 改进控制台`trace`显示错误 +* 改进`MorphTo`关联 +* 改进完整路由匹配后带斜线访问出错的情况 +* 改进路由的多级分组问题 +* 路由url地址生成支持多级分组 +* 改进路由Url生成的`url_convert`参数的影响 +* 改进`miss`和`auto`路由内部解析 +* 取消预载入关联查询缓存功能 + +## V5.1.4 (2018-1-19) + +该版本主要增强了数据库和模型操作,主要更新如下: + +* 支持设置 `deleteTime`属性为`false` 关闭软删除 +* 模型增加`getError`方法 +* 改进Query类的`getTableFields`/`getFieldsType`方法 支持表名自动获取 +* 模型类`toCollection`方法增加参数指定数据集类 +* 改进`union`查询 +* 关联预载入`with`方法增加缓存参数 +* 改进模型类的`get`和`all`方法的缓存 支持关联缓存 +* 支持`order by field`操作 +* 改进`insertAll`分批写入 +* 改进`json`字段数据支持 +* 增加JSON数据的模型对象化操作 +* 改进路由`ext`参数检测 +* 修正`rule`方法的`method`参数使用 `get|post` 方式注册路由的问题 + +## V5.1.3 (2018-1-12) + +该版本主要改进了路由及调整函数加载顺序,主要更新如下: + +* 增加`env`助手函数; +* 增加`route`助手函数; +* 增加视图路由方法; +* 增加路由重定向方法; +* 路由默认区分最后的目录斜杆(支持设置不区分); +* 调整公共文件和配置文件的加载顺序(可以在配置文件中直接使用助手函数); +* 视图类增加`filter`方法设置输出过滤; +* `view`助手函数增加`filter`参数; +* 改进缓存生成指令; +* Session类的`get`方法支持获取多级; +* Request类`only`方法支持指定默认值; +* 改进路由分组; +* 修正使用闭包查询的时候自动数据缓存出错的情况; +* 废除`view_filter`钩子位置; +* 修正分组下面的资源路由; +* 改进session驱动; + +## V5.1.2 (2018-1-8) + +该版本改进了配置类及数据库类,主要更新如下: + +* 修正嵌套路由分组; +* 修正自定义模板标签界定符后表达式语法出错的情况; +* 修正自关联的多次调用问题; +* 修正数组查询的`null`条件查询; +* 修正Query类的`order`及`field`的一处可能的BUG; +* 配置参数设置支持三级; +* 配置对象支持`ArrayAccess`; +* App类增加`path`方法用于设置应用目录; +* 关联定义增加`selfRelation`方法用于设置是否为自关联; + +## V5.1.1 (2018-1-3) + +修正一些反馈的BUG,包括: + +* 修正Cookie类存取数组的问题 +* 修正Controller的`fetch`方法 +* 改进跨域请求 +* 修正`insertAll`方法 +* 修正`chunk`方法 + +## V5.1.0 (2018-1-1) + +主要更新如下: + +* 增加注解路由支持 +* 路由支持跨域请求设置 +* 增加`app_dispatch`钩子位置 +* 修正多对多关联的`detach`方法 +* 修正软删除的`destroy`方法 +* Cookie类`httponly`参数默认为false +* 日志File驱动增加`single`参数配置记录同一个文件(不按日期生成) +* 路由的`ext`和`denyExt`方法支持不传任何参数 +* 改进模型的`save`方法对`oracle`的支持 +* Query类的`insertall`方法支持配合`data`和`limit`方法 +* 增加`whereOr`动态查询支持 +* 日志的ip地址记录改进 +* 模型`saveAll`方法支持`isUpdate`方法 +* 改进`Pivot`模型的实例化操作 +* 改进Model类的`data`方法 +* 改进多对多中间表模型类 +* 模型增加`force`方法强制更新所有数据 +* Hook类支持设置入口方法名称 +* 改进验证类 +* 改进`hasWhere`查询的数据重复问题 +* 模型的`saveall`方法返回数据集对象 +* 改进File缓存的`clear`方法 +* 缓存添加统一的序列化机制 +* 改进泛三级域名的绑定 +* 改进泛域名的传值和取值 +* Request类增加`panDomain`方法 +* 改进废弃字段判断 +* App类增加`create`方法用于实例化应用类库 +* 容器类增加`has`方法 +* 改进多数据库切换连接 +* 改进断线重连的异常捕获 +* 改进模型类`buildQuery`方法 +* Query类增加`unionAll`方法 +* 关联统计功能增强(支持Sum/Max/Min/Avg) +* 修正延迟写入 +* chunk方法支持复合主键 +* 改进JSON类型的写入 +* 改进Mysql的insertAll方法 +* Model类`save`方法改进复合主键包含自增的情况 +* 改进Query类`inc`和`dec`方法的关键字处理 +* File缓存inc和dec方法保持原来的有效期 +* 改进redis缓存的有效期判断 +* 增加checkRule方法用于单独数据的多个验证规则 +* 修正setDec方法的延迟写入 +* max和min方法增加force参数 +* 二级配置参数区分大小写 +* 改进join方法自关联的问题 +* 修正关联模型自定义表名的情况 +* Query类增加getFieldsType和getTableFields方法 +* 取消视图替换功能及view_replace_str配置参数 +* 改进域名绑定模块后的额外路由规则问题 +* 改进mysql的insertAll方法 +* 改进insertAll方法写入json字段数据的支持 +* 改进redis长连接多编号库的情况 + +## RC3版本(2017-11-6) + +主要更新如下: + +* 改进redis驱动的`get`方法 +* 修正Query类的`alias`方法 +* `File`类错误信息支持多语言 +* 修正路由的额外参数解析 +* 改进`whereTime`方法 +* 改进Model类`getAttr`方法 +* 改进App类的`controller`和`validate`方法支持多层 +* 改进`HasManyThrough`类 +* 修正软删除的`restore`方法 +* 改进`MorpthTo`关联 +* 改进数据库驱动类的`parseKey`方法 +* 增加`whereField`动态查询方法 +* 模型增加废弃字段功能 +* 改进路由的`after`行为检查和`before`行为机制 +* 改进路由分组的检查 +* 修正mysql的`json`字段查询 +* 取消Connection类的`quote`方法 +* 改进命令行的支持 +* 验证信息支持多语言 +* 修正路由模型绑定 +* 改进参数绑定类型对枚举类型的支持 +* 修正模板的`{$Think.version} `输出 +* 改进模板`date`函数解析 +* 改进`insertAll`方法支持分批执行 +* Request类`host`方法支持反向代理 +* 改进`JumpResponse`支持区分成功和错误模板 +* 改进开启类库后缀后的关联外键自动识别问题 +* 修正一对一关联的JOIN方式预载入查询问题 +* Query类增加`hidden`方法 + +## RC2版本(2017-10-17) + +主要更新如下: + +* 修正视图查询 +* 修正资源路由 +* 修正`HasMany`关联 修正`where`方法的闭包查询 +* 一对一关联绑定属性到父模型后 关联属性不再保留 +* 修正应用的命令行配置文件读取 +* 改进`Connection`类的`getCacheKey`方法 +* 改进文件上传的非法图像异常 +* 改进验证类的`unique`规则 +* Config类`get`方法支持获取一级配置 +* 修正count方法对`fetchSql`的支持 +* 修正mysql驱动对`socket`支持 +* 改进Connection类的`getRealSql`方法 +* 修正`view`助手函数 +* Query类增加`leftJoin` `rightJoin` 和 `fullJoin`方法 +* 改进app_namespace的获取 +* 改进`append`方法对一对一`bind`属性的支持 +* 改进关联的`saveall`方法的返回值 +* 路由标识设置异常修复 +* 改进Route类`rule`方法 +* 改进模型的`table`属性设置 +* 改进composer autofile的加载顺序 +* 改进`exception_handle`配置对闭包的支持 +* 改进app助手函数增加参数 +* 改进composer的加载路径判断 +* 修正路由组合变量的URL生成 +* 修正路由URL生成 +* 改进`whereTime`查询并支持扩展规则 +* File类的`move`方法第二个参数支持`false` +* 改进Config类 +* 改进缓存类`remember`方法 +* 惯例配置文件调整 Url类当普通模式参数的时候不做`urlencode`处理 +* 取消`ROOT_PATH`和`APP_PATH`常量定义 如需更改应用目录 自己重新定义入口文件 +* 增加`app_debug`的`Env`获取 +* 修正泛域名绑定 +* 改进查询表达式的解析机制 +* mysql增加`regexp`查询表达式 支持正则查询 +* 改进查询表达式的异常判断 +* 改进model类的`destroy`方法 +* 改进Builder类 取消`parseValue`方法 +* 修正like查询的参数绑定问题 +* console和start文件移出核心纳入应用库 +* 改进Db类主键删除方法 +* 改进泛域名绑定模块 +* 取消`BIND_MODULE`常量 改为在入口文件使用`bind`方法设置 +* 改进数组查询 +* 改进模板渲染的异常处理 +* 改进控制器基类的架构方法参数 +* 改进Controller类的`success`和`error`方法 +* 改进对浏览器`JSON-Handle`插件的支持 +* 优化跳转模板的移动端显示 +* 修正模型查询的`chunk`方法对时间字段的支持 +* 改进trace驱动 +* Collection类增加`push`方法 +* 改进Redis Session驱动 +* 增加JumpResponse驱动 + + +## RC1(2017-9-8) + +主要新特性为: + +* 引入容器和Facade支持 +* 依赖注入完善和支持更多场景 +* 重构的(对象化)路由 +* 配置和路由目录独立 +* 取消系统常量 +* 助手函数增强 +* 类库别名机制 +* 模型和数据库增强 +* 验证类增强 +* 模板引擎改进 +* 支持PSR-3日志规范 +* RC1版本取消了5.0多个字段批量数组查询的方式 \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index bd1ab80..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 小小航 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..774fa76 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,32 @@ + +ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 +版权所有Copyright © 2006-2018 by ThinkPHP (http://thinkphp.cn) +All rights reserved。 +ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 + +Apache Licence是著名的非盈利开源组织Apache采用的协议。 +该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, +允许代码修改,再作为开源或商业软件发布。需要满足 +的条件: +1. 需要给代码的用户一份Apache Licence ; +2. 如果你修改了代码,需要在被修改的文件中说明; +3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 +带有原来代码中的协议,商标,专利声明和其他原来作者规 +定需要包含的说明; +4. 如果再发布的产品中包含一个Notice文件,则在Notice文 +件中需要带有本协议内容。你可以在Notice中增加自己的 +许可,但不可以表现为对Apache Licence构成更改。 +具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md index ed170cc..907b977 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,154 @@ -# 关于本项目 - -本项目的功能需求来源于影视站点后端开发,所以部分代码具有特定性。 - -## 如何使用? - -1. 将 `index.php` 文件以及 `class`目录上传到云服务器,或者是本地服务器。 -2. 此时访问 `https://域名/index.php?type=info&id=30228394` 显示数据说明已经成功。 -3. 用MSSQL创建一个表,并将相关信息(表的信息)填写至`index.py` -4. 运行 `index.py` 提示\[success\]并开始写入信息,即为成功。 - -## 豆瓣API(PHP部分) - -本项目部分基于豆瓣电影官网,部分基于豆瓣未公开的API,没有用到APIKEY,但由于豆瓣官网的限制,单IP请求次数过多可能面临短时间封禁IP的惩罚。 - -## 豆瓣API - -通过对 `index.php` 的Get请求获取结果 - -请求参数可参考:[https://api.xhboke.com/doc/movie/](https://api.xhboke.com/doc/movie/) - -* 名人信息 -* 影片短评 -* 影片信息 -* 影片影评 -* 影片搜索 -* 影片Tags分类 -* Top250 -* 豆瓣播放地址及资源网播放地址 - -## 爬虫 - -基于 MSSQL 数据库和 Python 遍历年份写入数据。 - -由于豆瓣反爬虫禁IP措施,建议挂代理进行爬取,需要多线程可自行添加。 - -数据库表的创建参考代码输入的数据。 - -## 结果 - -由于代理的原因,我只爬取了最新的1万2千部影片附在`data.csv` \ No newline at end of file +## 安装说明 + +* 本地测试 + +下载代码 + +~~~ +git clone https://github.com/xhboke/douban.git +~~~ + +启动服务 + +~~~ +php think run +~~~ + +然后就可以在浏览器中访问 + +~~~ +http://localhost:8000 +~~~ + +* 服务器 + +上传代码,设置 `public` 为运行目录,设置伪静态 + +~~~ +location / { + if (!-e $request_filename){ + rewrite ^(.*)$ /index.php?s=$1 last; break; + } +} +~~~ + +## 注意 + +频繁使用会导致封禁IP,目前可通过更换IP或者使用代理或者是登录获取Cookie的方式避免。 + +## 使用方法 + +上方为豆瓣的链接,下方是API的链接,大致相同,涉及页数的有变化,最后请不要加上‘/’ + +### 一、电影信息 + +#### 电影基本信息 + +`https://movie.douban.com/subject/25845392/` + +`http://127.0.0.1:8000/subject/25845392` + +#### 电影短评 + +`https://movie.douban.com/subject/25845392/comments?status=P` + +`http://127.0.0.1:8000/subject/25845392/comments?page=0&sort=new_score` + +#### 电影短评 + +`https://movie.douban.com/subject/25845392/reviews?&start=0&sort=hotest` + +`http://127.0.0.1:8000/subject/25845392/reviews?page=0&sort=hotest` + +#### 电影参演人员 + +`https://movie.douban.com/subject/25845392/celebrities` + +`http://127.0.0.1:8000/subject/25845392/celebrities` + +#### 影片图片 + +`https://movie.douban.com/subject/25845392/all_photos` + +`http://127.0.0.1:8000/subject/25845392/all_photos` + +#### 影片图片 + +`https://movie.douban.com/subject/25845392/photos?type=S` + +`http://127.0.0.1:8000/subject/25845392/photos?type=S` + +### 二、影片搜索 + +#### 关键词 + +`http://127.0.0.1:8000/search/key/长津湖` + +#### 搜索影片 + +`https://search.douban.com/movie/subject_search?search_text=长&cat=1002&start=0` + +`http://127.0.0.1:8000/search/长/0` + +### 三、分类影片 + +#### 分类影片 + +`http://127.0.0.1:8000/tag?tags=电影,剧情,中国大陆,2021&page=0&sort=U` + +## 四、人物信息 + +#### 人物基本信息 + +`https://movie.douban.com/celebrity/1023040` + +`http://127.0.0.1:8000/celebrity/1023040` + +#### 人物图片 + +`https://movie.douban.com/celebrity/1023040/photos/?type=C&start=0&sortby=like&size=a&subtype=a` + +`http://127.0.0.1:8000/celebrity/1023040/photos?page=0&sort=like` + +#### 单张图片 + +`https://movie.douban.com/celebrity/1023040/photo/1247932516` + +`http://127.0.0.1:8000/celebrity/1023040/photo/1247932516` + +#### 人物获奖 + +`https://movie.douban.com/celebrity/1023040/awards` + +`http://127.0.0.1:8000/celebrity/1023040/awards` + +#### 人物参演 + +`https://movie.douban.com/celebrity/1023040/movies?start=0&format=pic&sortby=time` + +`http://127.0.0.1:8000/celebrity/1023040/movies?page=0&sort=time` + +#### 人物合作 + +`https://movie.douban.com/celebrity/1023040/movies?start=0&format=pic&sortby=time` + +`http://127.0.0.1:8000/celebrity/1023040/partners?page=0` + +### 五、图片信息 + +#### 图片基本信息及评论 + +`https://movie.douban.com/photos/photo/2673813691/` + +`http://127.0.0.1:8000/photos/photo/2673813691` + +### 六、豆瓣250 + +`https://movie.douban.com/top250?start=25&filter=` + +`http://127.0.0.1:8000/top250?page=0` + + +## 声明 + +本项目仅供学习交流,禁止用于非法用途。 \ No newline at end of file diff --git a/application/.htaccess b/application/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/application/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/application/command.php b/application/command.php new file mode 100644 index 0000000..826bb2b --- /dev/null +++ b/application/command.php @@ -0,0 +1,12 @@ + +// +---------------------------------------------------------------------- + +return []; diff --git a/application/common.php b/application/common.php new file mode 100644 index 0000000..55d22f2 --- /dev/null +++ b/application/common.php @@ -0,0 +1,12 @@ + +// +---------------------------------------------------------------------- + +// 应用公共文件 diff --git a/application/movie/controller/Celebrity.php b/application/movie/controller/Celebrity.php new file mode 100644 index 0000000..31f631b --- /dev/null +++ b/application/movie/controller/Celebrity.php @@ -0,0 +1,86 @@ +getAll()); + } + + /** + * 获取人物的全部图片 + * @access public + * @param integer $id 人物ID + * @param integer $page 图片页数 + * @param string $sort 排序方式【’like‘,’size‘,’time‘】 + * @return Json + */ + public function getCelebrityPhotos(int $id, int $page = 0, string $sort = ''): Json + { + return json(MovieCelebrity::getAllPhotos($id, $page, $sort)); + } + + /** + * 获取人物的图片 + * @access public + * @param integer $id 人物ID + * @param integer $pid 图片ID + * @param int $page + * @return Json + */ + public function getCelebrityPhoto(int $id, int $pid, int $page = 0): Json + { + return json(MovieCelebrity::getPhotos($id, $pid, $page)); + } + + /** + * 获取人物奖项 + * @access public + * @param string $id 人物ID + * @return Json + */ + public function getCelebrityAwards(string $id): Json + { + return json(MovieCelebrity::getAwards($id)); + } + + /** + * 获取人物作品 + * @access public + * @param string $id 人物ID + * @param integer $page 作品页数 + * @param string $sort 排序方式【’time‘,’vote‘】 + * @return Json + */ + public function getCelebrityMovies(string $id, int $page = 0, string $sort = 'time'): Json + { + + return json(MovieCelebrity::getAllMovies($id, $page, $sort)); + } + + /** + * 获取人物合作2次以上的影人 + * @access public + * @param string $id 人物ID + * @param integer $page 页数 + * @return Json + */ + public function getCelebrityPartners(string $id, int $page = 0): Json + { + return json(MovieCelebrity::getAllPartners($id, $page)); + } + + +} \ No newline at end of file diff --git a/application/movie/controller/Info.php b/application/movie/controller/Info.php new file mode 100644 index 0000000..86d2552 --- /dev/null +++ b/application/movie/controller/Info.php @@ -0,0 +1,51 @@ +getAll(true, true)); + } + + public function getComments($id, $page = 0, $sort = 'new_score'): \think\response\Json + { + $obj = new MovieComment($id, $page, 'P', $sort); + return json($obj->getComments()); + } + + public function getReviews($id, $page = 0, $sort = 'hotest'): \think\response\Json + { + $obj = new MovieReview($id, $page, $sort); + return json($obj->getReviews()); + } + + public function getCelebrities($id): \think\response\Json + { + return json(MovieInfo::getCelebrities($id)); + } + + public function getAllPhotos($id): \think\response\Json + { + return json(MovieInfo::getAllPhotos($id)); + } + + public function getPhotos($id, $page = 0, $type = 'S'): \think\response\Json + { + return json(MovieInfo::getPhotos($id, $page, $type)); + } + +} + diff --git a/application/movie/controller/Movies.php b/application/movie/controller/Movies.php new file mode 100644 index 0000000..cd7236a --- /dev/null +++ b/application/movie/controller/Movies.php @@ -0,0 +1,19 @@ +getAll()); + } +} \ No newline at end of file diff --git a/application/movie/controller/Search.php b/application/movie/controller/Search.php new file mode 100644 index 0000000..5fdf9c9 --- /dev/null +++ b/application/movie/controller/Search.php @@ -0,0 +1,26 @@ +getSearchData()); + } +} \ No newline at end of file diff --git a/application/movie/controller/Tag.php b/application/movie/controller/Tag.php new file mode 100644 index 0000000..98b90f7 --- /dev/null +++ b/application/movie/controller/Tag.php @@ -0,0 +1,20 @@ +getTag()); + } +} \ No newline at end of file diff --git a/application/provider.php b/application/provider.php new file mode 100644 index 0000000..d0fcd24 --- /dev/null +++ b/application/provider.php @@ -0,0 +1,14 @@ + +// +---------------------------------------------------------------------- + +// 应用容器绑定定义 +return [ +]; diff --git a/application/tags.php b/application/tags.php new file mode 100644 index 0000000..4b18d10 --- /dev/null +++ b/application/tags.php @@ -0,0 +1,28 @@ + +// +---------------------------------------------------------------------- + +// 应用行为扩展定义文件 +return [ + // 应用初始化 + 'app_init' => [], + // 应用开始 + 'app_begin' => [], + // 模块初始化 + 'module_init' => [], + // 操作开始执行 + 'action_begin' => [], + // 视图内容过滤 + 'view_filter' => [], + // 日志写入 + 'log_write' => [], + // 应用结束 + 'app_end' => [], +]; diff --git a/build.php b/build.php new file mode 100644 index 0000000..34ba3c8 --- /dev/null +++ b/build.php @@ -0,0 +1,26 @@ + +// +---------------------------------------------------------------------- + +return [ + // 生成应用公共文件 + '__file__' => ['common.php'], + + // 定义demo模块的自动生成 (按照实际定义的文件名生成) + 'demo' => [ + '__file__' => ['common.php'], + '__dir__' => ['behavior', 'controller', 'model', 'view'], + 'controller' => ['Index', 'Test', 'UserType'], + 'model' => ['User', 'UserType'], + 'view' => ['index/index'], + ], + + // 其他更多的模块定义 +]; diff --git a/class/class.Celebrity.php b/class/class.Celebrity.php deleted file mode 100644 index 5ffc907..0000000 --- a/class/class.Celebrity.php +++ /dev/null @@ -1,198 +0,0 @@ -id = $id; - $this->url = parent::MovieRootUrl . '/celebrity/' . $id . '/'; - $this->data = $this->curl_get($this->url); - } - - public function getAll() - { - $this->All['id'] = $this->id; - $this->All['name'] = $this->getName(); - $this->All['chineseName'] = $this->getChineseName(); - $this->All['image'] = $this->getImage(); - $this->All['sex'] = $this->getSex(); - $this->All['constellation'] = $this->getConstellation(); - $this->All['birthday'] = $this->getBirthday(); - $this->All['birthplace'] = $this->getBirthPlace(); - $this->All['profession'] = $this->getProfession(); - $this->All['othername'] = $this->getOthername(); - $this->All['familymember'] = $this->getFamilymember(); - $this->All['website'] = $this->getWebsite(); - $this->All['introduction'] = $this->getIntroduction(); - $this->All['some_images'] = $this->get_Some_Images(); - $this->All['award'] = $this->get_Award(); - $this->All['recent_movies'] = $this->get_Recent_Movies(); - return $this->All; - } - public function getName() - { - $this->Name = trim($this->preg('#

([\s\S]*?)<\/h1>#', $this->data, 1)[0]); - return $this->Name; - } - public function getChineseName() - { - $this->ChineseName = trim($this->preg('#
#', $this->data, 1)[0]); - return $this->ChineseName; - } - public function getImage() - { - $this->Image = trim($this->preg('##', $this->data, 1)[0]); - return $this->Image; - } - public function getSex() - { - $this->Sex = trim($this->preg('#性别<\/span>:([\s\S]*?)<\/li>#', $this->data, 1)[0]); - return $this->Sex; - } - public function getConstellation() - { - $this->Constellation = trim($this->preg('#星座<\/span>:([\s\S]*?)<\/li>#', $this->data, 1)[0]); - return $this->Constellation; - } - public function getBirthday() - { - $this->Birthday = trim($this->preg('#出生日期<\/span>:([\s\S]*?)<\/li>#', $this->data, 1)[0]); - return $this->Birthday; - } - public function getBirthPlace() - { - $this->BirthPlace = trim($this->preg('#出生地<\/span>:([\s\S]*?)<\/li>#', $this->data, 1)[0]); - return $this->BirthPlace; - } - public function getProfession() - { - $this->Profession = str_replace(" ", "", trim($this->preg('#职业<\/span>:([\s\S]*?)<\/li>#', $this->data, 1)[0])); - return $this->Profession; - } - public function getOthername() - { - $this->Othername = str_replace(" ", "", trim($this->preg('#更多外文名<\/span>:([\s\S]*?)<\/li>#', $this->data, 1)[0])); - return $this->Othername; - } - public function getFamilymember() - { - $this->Familymember = str_replace(" ", "", trim(preg_replace("/]*>(.*?)<\/a>/is", "$1", $this->preg('#家庭成员<\/span>:([\s\S]*?)<\/li>#', $this->data, 1)[0]))); - return $this->Familymember; - } - public function getWebsite() - { - $this->Website = trim($this->preg('#官方网站:([\s\S]*?)#', $this->data, 2)[0]); - return $this->Website; - } - public function getIntroduction() - { - if (strpos($this->data, '
([\s\S]*?)<\/div>#', $this->data, 2)[0]); - } - return $this->Introduction; - } - public function get_Some_Images() - { - $this->Some_Images = $this->preg('##', $this->getSubstr($this->data, '
', ''), 1); - return $this->Some_Images; - } - public function get_Recent_Movies() - { - $_data = $this->preg('#
([\s\S]*?)([\s\S]*?)([\s\S]*?)<\/div>#', $this->getSubstr($this->data, '
', ''), 0); - try { - $_count = count($_data['2']); - for ($i = 0; $i < $_count; $i++) { - $this->Recent_Movies[$i]['id'] = $_data[2][$i]; - $this->Recent_Movies[$i]['image'] = $_data[7][$i]; - $this->Recent_Movies[$i]['title'] = $_data[5][$i]; - } - } catch (\Throwable $th) { - //throw $th; - } - return $this->Recent_Movies; - } - public function get_Award() - { - try { - $_data = $this->preg('#
    ([\s\S]*?)
#', $this->data, 1); - $_count = count($_data); - for ($i = 0; $i < $_count; $i++) { - $item = $this->preg('#
  • ([\s\S]*?)
  • ([\s\S]*?)
  • ([\s\S]*?)([\s\S]*?)<\/a>([\s\S]*?)<\/li>([\s\S]*?)
  • ([\s\S]*?)<\/li>([\s\S]*?)
  • ([\s\S]*?)<\/li>#', $_data[$i], 0); - $this->Award[$i]['year'] = $item[1][0]; - $this->Award[$i]['awards_url'] = $item[4][0]; - $this->Award[$i]['awards_name'] = $item[5][0]; - $this->Award[$i]['award'] = $item[8][0]; - if (empty($item[10][0])) { - $this->Award[$i]['movie_id'] = ""; - $this->Award[$i]['movie_name'] = ""; - } else { - $this->Award[$i]['movie_id'] = $this->preg('#([\s\S]*?)<\/a>#', $item[10][0], 1)[0]; - $this->Award[$i]['movie_name'] = $this->preg('#([\s\S]*?)<\/a>#', $item[10][0], 2)[0]; - } - } - } catch (\Throwable $th) { - $this->Award = null; - } - - return $this->Award; - } -} - -/** - * 获取名人图片 - * - * 根据编号获取名人图片 - * @author xhboke - * @version 1.0 - */ - -class Celebrity_Image extends Celebrity -{ - public $id; - public $url; - public $data; - public function __construct($id) - { - parent::__construct($id); - $this->id = $id; - $this->url = parent::MovieRootUrl . '/celebrity/' . $this->id . '/photos/'; - $this->data = $this->getSubstr($this->curl_get($this->url), '