최원석
Committed by GitHub

Merge pull request #7 from goesnow/goesnow

Goesnow
1 -node_modules 1 +**/node_modules/
2 .env 2 .env
3 -.vscode 3 +.vscode/**
4 +**/.idea/
5 +
4 crawler/chromedriver 6 crawler/chromedriver
5 crawler/chromedriver.exe 7 crawler/chromedriver.exe
6 -.idea
7 **/*.exe 8 **/*.exe
8 package-lock.json 9 package-lock.json
9 10
10 -app/build/*.map 11 +**/build/
11 -app/build/*.js
12 -build
13 public 12 public
14 13
15 key.py 14 key.py
......
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<module type="JAVA_MODULE" version="4">
3 - <component name="FacetManager">
4 - <facet type="Python" name="Python">
5 - <configuration sdkName="" />
6 - </facet>
7 - </component>
8 - <component name="NewModuleRootManager" inherit-compiler-output="true">
9 - <exclude-output />
10 - <content url="file://$MODULE_DIR$">
11 - <excludeFolder url="file://$MODULE_DIR$/venv" />
12 - <excludeFolder url="file://$MODULE_DIR$/venv3" />
13 - </content>
14 - <orderEntry type="jdk" jdkName="Python 3.7 (check-your-instagram)" jdkType="Python SDK" />
15 - <orderEntry type="sourceFolder" forTests="false" />
16 - </component>
17 -</module>
...\ No newline at end of file ...\ No newline at end of file
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<project version="4">
3 - <component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
4 - <serverData>
5 - <paths name="ubuntu@52.197.199.6:22">
6 - <serverdata>
7 - <mappings>
8 - <mapping local="$PROJECT_DIR$" web="/" />
9 - </mappings>
10 - </serverdata>
11 - </paths>
12 - <paths name="ubuntu@54.199.111.206:22">
13 - <serverdata>
14 - <mappings>
15 - <mapping local="$PROJECT_DIR$" web="/" />
16 - </mappings>
17 - </serverdata>
18 - </paths>
19 - <paths name="ubuntu@54.248.71.175:22">
20 - <serverdata>
21 - <mappings>
22 - <mapping local="$PROJECT_DIR$" web="/" />
23 - </mappings>
24 - </serverdata>
25 - </paths>
26 - </serverData>
27 - </component>
28 -</project>
...\ No newline at end of file ...\ No newline at end of file
1 -<component name="InspectionProjectProfileManager">
2 - <profile version="1.0">
3 - <option name="myName" value="Project Default" />
4 - <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
5 - <inspection_tool class="TsLint" enabled="true" level="WARNING" enabled_by_default="true" />
6 - </profile>
7 -</component>
...\ No newline at end of file ...\ No newline at end of file
1 -<?xml version="1.0" encoding="UTF-8"?>
2 -<project version="4">
3 - <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (check-your-instagram)" project-jdk-type="Python SDK" />
4 -</project>
...\ No newline at end of file ...\ No newline at end of file
1 -# check your instagram! 1 +# Check your instagram!
2 2
3 -``` 3 +Lookup ID, and Compare!
4 +
5 +## Execute server
6 +```shell
4 python -m pipenv shell 7 python -m pipenv shell
8 +python server.py
5 ``` 9 ```
10 +
11 +## Execute only frontend
12 +
13 +[link](https://github.com/1Seok2/check-your-instagram/tree/master/app)
......
...@@ -15,4 +15,9 @@ npm run build ...@@ -15,4 +15,9 @@ npm run build
15 npm run start 15 npm run start
16 ``` 16 ```
17 17
18 -`npm run start`만 진행할 시 수정사항이 적용되지 않음
...\ No newline at end of file ...\ No newline at end of file
18 +`npm run start`만 진행할 시 수정사항이 적용되지 않음
19 +
20 +### 최종 빌드 진행
21 +```shell
22 +npm run predeploy
23 +```
...\ No newline at end of file ...\ No newline at end of file
......
1 -export declare const Bye: () => void;
1 -"use strict";
2 -Object.defineProperty(exports, "__esModule", { value: true });
3 -exports.Bye = void 0;
4 -const Bye = () => console.log('Bye!');
5 -exports.Bye = Bye;
6 -//# sourceMappingURL=Bye.js.map
...\ No newline at end of file ...\ No newline at end of file
1 -{"version":3,"file":"Bye.js","sourceRoot":"","sources":["../../src/Bye.ts"],"names":[],"mappings":";;;AAAO,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAAhC,QAAA,GAAG,OAA6B"}
...\ No newline at end of file ...\ No newline at end of file
1 -import './assets/style/App.css';
1 -"use strict";
2 -Object.defineProperty(exports, "__esModule", { value: true });
3 -const Bye_1 = require("./Bye");
4 -require("./assets/style/App.css");
5 -const hi = 'hello!?zz';
6 -const hi1 = () => {
7 - console.log(hi);
8 - Bye_1.Bye();
9 -};
10 -hi1();
11 -//# sourceMappingURL=index.js.map
...\ No newline at end of file ...\ No newline at end of file
1 -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,+BAA0B;AAC1B,kCAAgC;AAEhC,MAAM,EAAE,GAAG,WAAW,CAAC;AAEvB,MAAM,GAAG,GAAG,GAAG,EAAE;IACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,SAAG,EAAE,CAAC;AACR,CAAC,CAAC;AAEF,GAAG,EAAE,CAAC"}
...\ No newline at end of file ...\ No newline at end of file
1 -export declare const Bye: () => void;
1 -"use strict";
2 -Object.defineProperty(exports, "__esModule", { value: true });
3 -exports.Bye = void 0;
4 -const Bye = () => console.log('Bye!');
5 -exports.Bye = Bye;
6 -//# sourceMappingURL=Bye.js.map
...\ No newline at end of file ...\ No newline at end of file
1 -{"version":3,"file":"Bye.js","sourceRoot":"","sources":["../../../src/ts/Bye.ts"],"names":[],"mappings":";;;AAAO,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAAhC,QAAA,GAAG,OAA6B"}
...\ No newline at end of file ...\ No newline at end of file
1 -
2 -const gulp = require('gulp');
3 -const browserify = require('browserify');
4 -const watchify = require('watchify');
5 -const errorify = require('errorify');
6 -const del = require('del');
7 -const tsify = require('tsify');
8 -const source = require('vinyl-source-stream');
9 -const buffer = require('vinyl-buffer');
10 -const runSequence = require('run-sequence');
11 -const uglify = require('gulp-uglify');
12 -
13 -gulp.task('clean', () => {
14 - return del('./built/**/*')
15 -});
16 -
17 -gulp.task('prod', () => {
18 - browserify({
19 - basedir: '.',
20 - debug: true,
21 - entries: ['src'],
22 - cache: {},
23 - packageCache: {}
24 - })
25 - .plugin(tsify)
26 - .bundle()
27 - .pipe(source('bundle.js'))
28 - .pipe(buffer())
29 - .pipe(uglify())
30 - .pipe(gulp.dest('built'));
31 -});
32 -
33 -gulp.task('dev', () => {
34 - browserify({
35 - basedir: '.',
36 - debug: true,
37 - entries: ['src'],
38 - cache: {},
39 - packageCache: {}
40 - })
41 - .plugin(tsify)
42 - .plugin(watchify)
43 - .plugin(errorify)
44 - .bundle()
45 - .pipe(source('bundle.js'))
46 - .pipe(gulp.dest('built'));
47 -});
48 -
49 -gulp.task('default', (done) => {
50 - runSequence('clean', 'dev', () => {
51 - console.log('Watching...')
52 - gulp.watch(['src/**/*.ts'],
53 - ['dev']);
54 - });
55 -});
56 -
57 -gulp.task('package', (done) => {
58 - runSequence('clean', 'prod', () => {
59 - console.log('Watching...')
60 - gulp.watch(['src/**/*.ts'],
61 - ['prod']);
62 - });
63 -});
This diff could not be displayed because it is too large.
...@@ -19,13 +19,16 @@ ...@@ -19,13 +19,16 @@
19 "posttest": "npm.cmd run lint", 19 "posttest": "npm.cmd run lint",
20 "compile": "tsc -w", 20 "compile": "tsc -w",
21 "build": "webpack --watch", 21 "build": "webpack --watch",
22 - "start": "webpack serve --open" 22 + "start": "webpack serve --open",
23 + "predeploy" : "webpack"
23 }, 24 },
24 "devDependencies": { 25 "devDependencies": {
25 "@types/node": "^14.11.2", 26 "@types/node": "^14.11.2",
27 + "clean-webpack-plugin": "^3.0.0",
26 "css-loader": "^5.1.1", 28 "css-loader": "^5.1.1",
27 "file-loader": "^6.2.0", 29 "file-loader": "^6.2.0",
28 "gts": "^3.1.0", 30 "gts": "^3.1.0",
31 + "html-webpack-plugin": "^5.3.0",
29 "style-loader": "^2.0.0", 32 "style-loader": "^2.0.0",
30 "ts-loader": "^8.0.17", 33 "ts-loader": "^8.0.17",
31 "typescript": "^4.0.3", 34 "typescript": "^4.0.3",
......
1 -/*
2 - * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
3 - * This devtool is neither made for production nor for readable output files.
4 - * It uses "eval()" calls to create a separate source file in the browser devtools.
5 - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6 - * or disable the default devtool with "devtool: false".
7 - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8 - */
9 -/******/ (() => { // webpackBootstrap
10 -/******/ "use strict";
11 -/******/ var __webpack_modules__ = ({
12 -
13 -/***/ "./node_modules/css-loader/dist/cjs.js!./src/assets/style/App.css":
14 -/*!************************************************************************!*\
15 - !*** ./node_modules/css-loader/dist/cjs.js!./src/assets/style/App.css ***!
16 - \************************************************************************/
17 -/***/ ((module, __webpack_exports__, __webpack_require__) => {
18 -
19 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);\n// Imports\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body{\\r\\n background-color: beige;\\r\\n}\", \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack:///./src/assets/style/App.css?./node_modules/css-loader/dist/cjs.js");
20 -
21 -/***/ }),
22 -
23 -/***/ "./node_modules/css-loader/dist/runtime/api.js":
24 -/*!*****************************************************!*\
25 - !*** ./node_modules/css-loader/dist/runtime/api.js ***!
26 - \*****************************************************/
27 -/***/ ((module) => {
28 -
29 -eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\n//# sourceURL=webpack:///./node_modules/css-loader/dist/runtime/api.js?");
30 -
31 -/***/ }),
32 -
33 -/***/ "./src/assets/image/v4Logo.png":
34 -/*!*************************************!*\
35 - !*** ./src/assets/image/v4Logo.png ***!
36 - \*************************************/
37 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
38 -
39 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"images/v4Logo.png\");\n\n//# sourceURL=webpack:///./src/assets/image/v4Logo.png?");
40 -
41 -/***/ }),
42 -
43 -/***/ "./src/assets/style/App.css":
44 -/*!**********************************!*\
45 - !*** ./src/assets/style/App.css ***!
46 - \**********************************/
47 -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
48 -
49 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_App_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js!./App.css */ \"./node_modules/css-loader/dist/cjs.js!./src/assets/style/App.css\");\n\n \n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_App_css__WEBPACK_IMPORTED_MODULE_1__.default, options);\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_App_css__WEBPACK_IMPORTED_MODULE_1__.default.locals || {});\n\n//# sourceURL=webpack:///./src/assets/style/App.css?");
50 -
51 -/***/ }),
52 -
53 -/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
54 -/*!****************************************************************************!*\
55 - !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
56 - \****************************************************************************/
57 -/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
58 -
59 -eval("\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : 0;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?");
60 -
61 -/***/ }),
62 -
63 -/***/ "./src/Bye.ts":
64 -/*!********************!*\
65 - !*** ./src/Bye.ts ***!
66 - \********************/
67 -/***/ ((__unused_webpack_module, exports) => {
68 -
69 -eval("\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nexports.Bye = void 0;\r\nconst Bye = () => console.log('Bye!');\r\nexports.Bye = Bye;\r\n\n\n//# sourceURL=webpack:///./src/Bye.ts?");
70 -
71 -/***/ }),
72 -
73 -/***/ "./src/index.ts":
74 -/*!**********************!*\
75 - !*** ./src/index.ts ***!
76 - \**********************/
77 -/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
78 -
79 -eval("\r\nvar __importDefault = (this && this.__importDefault) || function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n};\r\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\r\nconst Bye_1 = __webpack_require__(/*! ./Bye */ \"./src/Bye.ts\");\r\n__webpack_require__(/*! ./assets/style/App.css */ \"./src/assets/style/App.css\");\r\nconst v4Logo_png_1 = __importDefault(__webpack_require__(/*! ./assets/image/v4Logo.png */ \"./src/assets/image/v4Logo.png\"));\r\nconst hi = 'hchoi won';\r\nconst hi1 = () => {\r\n console.log(hi);\r\n Bye_1.Bye();\r\n const tag = window.document.querySelector('#App');\r\n if (tag) {\r\n tag.innerHTML = `<img src=${v4Logo_png_1.default} alt=\"image\" />`;\r\n }\r\n};\r\nhi1();\r\n\n\n//# sourceURL=webpack:///./src/index.ts?");
80 -
81 -/***/ })
82 -
83 -/******/ });
84 -/************************************************************************/
85 -/******/ // The module cache
86 -/******/ var __webpack_module_cache__ = {};
87 -/******/
88 -/******/ // The require function
89 -/******/ function __webpack_require__(moduleId) {
90 -/******/ // Check if module is in cache
91 -/******/ if(__webpack_module_cache__[moduleId]) {
92 -/******/ return __webpack_module_cache__[moduleId].exports;
93 -/******/ }
94 -/******/ // Create a new module (and put it into the cache)
95 -/******/ var module = __webpack_module_cache__[moduleId] = {
96 -/******/ id: moduleId,
97 -/******/ // no module.loaded needed
98 -/******/ exports: {}
99 -/******/ };
100 -/******/
101 -/******/ // Execute the module function
102 -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
103 -/******/
104 -/******/ // Return the exports of the module
105 -/******/ return module.exports;
106 -/******/ }
107 -/******/
108 -/************************************************************************/
109 -/******/ /* webpack/runtime/compat get default export */
110 -/******/ (() => {
111 -/******/ // getDefaultExport function for compatibility with non-harmony modules
112 -/******/ __webpack_require__.n = (module) => {
113 -/******/ var getter = module && module.__esModule ?
114 -/******/ () => (module['default']) :
115 -/******/ () => (module);
116 -/******/ __webpack_require__.d(getter, { a: getter });
117 -/******/ return getter;
118 -/******/ };
119 -/******/ })();
120 -/******/
121 -/******/ /* webpack/runtime/define property getters */
122 -/******/ (() => {
123 -/******/ // define getter functions for harmony exports
124 -/******/ __webpack_require__.d = (exports, definition) => {
125 -/******/ for(var key in definition) {
126 -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
127 -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
128 -/******/ }
129 -/******/ }
130 -/******/ };
131 -/******/ })();
132 -/******/
133 -/******/ /* webpack/runtime/hasOwnProperty shorthand */
134 -/******/ (() => {
135 -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
136 -/******/ })();
137 -/******/
138 -/******/ /* webpack/runtime/make namespace object */
139 -/******/ (() => {
140 -/******/ // define __esModule on exports
141 -/******/ __webpack_require__.r = (exports) => {
142 -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
143 -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
144 -/******/ }
145 -/******/ Object.defineProperty(exports, '__esModule', { value: true });
146 -/******/ };
147 -/******/ })();
148 -/******/
149 -/******/ /* webpack/runtime/publicPath */
150 -/******/ (() => {
151 -/******/ __webpack_require__.p = "/app";
152 -/******/ })();
153 -/******/
154 -/************************************************************************/
155 -/******/
156 -/******/ // startup
157 -/******/ // Load entry module and return exports
158 -/******/ // This entry module is referenced by other modules so it can't be inlined
159 -/******/ var __webpack_exports__ = __webpack_require__("./src/index.ts");
160 -/******/
161 -/******/ })()
162 -;
...\ No newline at end of file ...\ No newline at end of file
...@@ -6,6 +6,5 @@ ...@@ -6,6 +6,5 @@
6 </head> 6 </head>
7 <body> 7 <body>
8 <div id="App"></div> 8 <div id="App"></div>
9 - <script type="module" src="public/main.js" ></script>
10 </body> 9 </body>
11 </html> 10 </html>
...\ No newline at end of file ...\ No newline at end of file
......
1 -const path = require('path') 1 +const path = require('path');
2 +const { CleanWebpackPlugin } = require('clean-webpack-plugin');
3 +const HtmlWebpackPlugin = require('html-webpack-plugin')
2 4
3 module.exports = { 5 module.exports = {
4 mode : 'development', 6 mode : 'development',
...@@ -30,17 +32,23 @@ module.exports = { ...@@ -30,17 +32,23 @@ module.exports = {
30 extensions: [".tsx", ".ts", ".js"], 32 extensions: [".tsx", ".ts", ".js"],
31 }, 33 },
32 output : { 34 output : {
33 - publicPath: '/app', 35 + publicPath: '/app/public',
34 path: path.resolve('./public'), 36 path: path.resolve('./public'),
35 filename: '[name].js', 37 filename: '[name].js',
36 }, 38 },
37 devServer : { 39 devServer : {
38 port : 3000, 40 port : 3000,
39 hot: true, 41 hot: true,
40 - contentBase: __dirname, 42 + contentBase: __dirname + '/public/',
41 inline: true, 43 inline: true,
42 watchOptions: { 44 watchOptions: {
43 poll: true 45 poll: true
44 } 46 }
45 - } 47 + },
48 + plugins : [
49 + new CleanWebpackPlugin(),
50 + new HtmlWebpackPlugin({
51 + template : './src/index.html'
52 + })
53 + ]
46 } 54 }
...\ No newline at end of file ...\ No newline at end of file
......
No preview for this file type
1 import os 1 import os
2 from flask import Flask, render_template, request, jsonify, send_from_directory 2 from flask import Flask, render_template, request, jsonify, send_from_directory
3 -
4 from crawler.crawler_instagram import crawler_instagram 3 from crawler.crawler_instagram import crawler_instagram
5 4
6 app = Flask(__name__) 5 app = Flask(__name__)
7 6
8 -
9 @app.errorhandler(404) 7 @app.errorhandler(404)
10 def page_not_found(): 8 def page_not_found():
11 return render_template('404.html') 9 return render_template('404.html')
12 10
13 11
14 -@app.route("/") 12 +def update(insta_id):
15 -def home():
16 - # return render_template('index.html')
17 - return send_from_directory('./app','index.html')
18 -
19 -
20 -@app.route("/update", methods=["GET"])
21 -def update():
22 - insta_id = request.args.get('insta_id')
23 crawler_instagram(insta_id) 13 crawler_instagram(insta_id)
24 14
25 data = { 15 data = {
...@@ -27,9 +17,16 @@ def update(): ...@@ -27,9 +17,16 @@ def update():
27 } 17 }
28 return jsonify(data) 18 return jsonify(data)
29 19
30 -@app.route("/hello", methods=["GET"]) 20 +
31 -def hello(): 21 +@app.route("/", defaults={"path": ""})
32 - return "hello" 22 +@app.route("/<path:path>")
23 +def home(path):
24 + # return render_template('index.html')
25 + if path == 'update':
26 + insta_id = request.args.get('insta_id')
27 + update(insta_id)
28 + else :
29 + return send_from_directory('./app/public/', 'index.html')
33 30
34 31
35 if __name__ == "__main__": 32 if __name__ == "__main__":
......