{"id":16140263,"url":"https://github.com/hyesungoh/mpmd","last_synced_at":"2026-04-11T13:07:14.656Z","repository":{"id":87831818,"uuid":"318458295","full_name":"hyesungoh/MPMD","owner":"hyesungoh","description":":tv: Most Popular Movies and Drama / Django + React Web with IMDB api","archived":false,"fork":false,"pushed_at":"2020-12-23T12:03:28.000Z","size":4746,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T04:13:12.323Z","etag":null,"topics":["celery","django","react","redis","selenium"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyesungoh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-04T08:54:53.000Z","updated_at":"2020-12-27T16:41:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"3e7542fc-e658-4346-b480-77bf613c6ba7","html_url":"https://github.com/hyesungoh/MPMD","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyesungoh%2FMPMD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyesungoh%2FMPMD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyesungoh%2FMPMD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyesungoh%2FMPMD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyesungoh","download_url":"https://codeload.github.com/hyesungoh/MPMD/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247526931,"owners_count":20953175,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["celery","django","react","redis","selenium"],"created_at":"2024-10-09T23:51:47.085Z","updated_at":"2025-12-30T23:06:24.031Z","avatar_url":"https://github.com/hyesungoh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MPMD\n\n###### IMDB API 기준 인기있는 영화, 드라마 상위 100개를 보여주는 Web\n\n#### react + django with IMDB api\n\n-   ##### [Backend](https://github.com/hyesungoh/MPMD/tree/master/project)\n-   ##### [Frontend](https://github.com/hyesungoh/MPMD/tree/master/front)\n-   ##### [Setting](https://github.com/hyesungoh/MPMD#react--django-setting)\n\n---\n\n## 완성본\n\n#### Navigation, route with animation\n\n![nav](https://user-images.githubusercontent.com/26461307/101917317-6fa01100-3c0b-11eb-80eb-3f7298520154.gif)\n\n#### Card with animation\n\n![card](https://user-images.githubusercontent.com/26461307/101917294-6b73f380-3c0b-11eb-9bb8-cc206c3e1daf.gif)\n\n#### Modal with animation, link trailer\n\n![modal](https://user-images.githubusercontent.com/26461307/101917314-6f077a80-3c0b-11eb-9f72-f66fc1860ca4.gif)\n\n#### Actor by birth day, Loading animation\n\n![actor_input](https://user-images.githubusercontent.com/26461307/101917288-6a42c680-3c0b-11eb-979c-20e41453ad11.gif)\n\n#### Actor card 3d animation, link profile\n\n![actor](https://user-images.githubusercontent.com/26461307/101918105-4df35980-3c0c-11eb-9464-cd2025f709f7.gif)\n\n## React + Django Setting\n\n-   Django REST\n\n```terminal\npip install djangorestframework\n```\n\n```python\n# settings.py\nINSTALLED_APPS = [\n    ...\n    'rest_framework',\n]\n\n# 추가\nREST_FRAMEWORK = {\n    'DEFAULT_PERMISSION_CLASSES': [\n        'rest_framework.permissions.AllowAny',\n    ]\n}\n```\n\n-   HTTP 접근제어 규약(CORS : Cross-Origin Resource Sharing)\n\n```terminal\npip install django-cors-headers\n```\n\n```python\n# settings.py\nINSTALLED_APPS = [\n    ...\n    'corsheaders',\n]\nMIDDLEWARE = [\n    ...\n    'corsheaders.middleware.CorsMiddleware',\n]\n\n# 추가\nCORS_ORIGIN_WHITELIST = [\n    'http://localhost:3000',\n    'http://localhost:8000',\n]\n```\n\n## Selenium\n\n-   [IMDB](https://www.imdb.com/) api는 영화에 대한 정보가 아닌 IMDB url을 제공하여 데이터 가공\n\n```terminal\npip install selenium\n```\n\n```python\nfrom selenium import webdriver\n\ndriver = webdriver.Chrome('chromedriver')\ndriver.get(URL)\n...\n\ndriver.close()\n```\n\n-   Selenium을 이용하여 JS를 이용하여 비동기적이거나 늦게 불러와지는 데이터를 BeautifulSoup를 이용하여 Parsing\n\n```python\n# driver.close() 전에\npage_source = driver.page_source\n\nhtml = BeautifulSoup(page_source, \"html.parser\")\n# 이후 데이터 가공하여 해당 Model에 저장\n```\n\n## Celery + Redis\n\n-   ##### [본인 repo 참조](https://github.com/hyesungoh/Django_Asynchronous_with_Celery_Redis)\n\n-   schedule을 이용하여 12시간마다 영화와 드라마들을 Refresh하게 구현\n\n```python\napp.conf.beat_schedule = {\n    'refresh_movies_every_12hours': {\n        'task': 'task_refresh_movies',\n        'schedule': 43200.0,  # 12시간\n    },\n\n    'refresh_dramas_every_12hours': {\n        'task': 'task_refresh_dramas',\n        'schedule': 43200.0,  # 12시간\n    },\n}\n```\n\n## Issue\n\n##### react config 폴더 보이게 하는 법\n\n```terminal\nnpm eject\n```\n\n##### 아래 부분이 잘못됐다는 에러\n\n```terminal\nreact var type = mime.lookup(path)\n```\n\n해결 방법\n\n```terminal\nnpm install mime-types\n```\n\n```js\n// node_modules/send/index.js 상단 부분 수정\nvar mime = require(\"mime-types\");\n```\n\n##### serializer의 fields를 못찾는 에러\n\n```terminal\nOriginal exception text was: 'QuerySet' object has no attribute 'field_name'.\n```\n\n해결 방법\n\n```python\n# many=True 속성을 추가\nserializer = MovieSerializer(movies, many=True)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyesungoh%2Fmpmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyesungoh%2Fmpmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyesungoh%2Fmpmd/lists"}