[WIP]Spotify × 파이톤으로 현재 심정, 작업 내용, 트렌드에 맞춰 앨범을 자동 제작한다.

웹 인터페이스에서 입력하여 Spotify 앨범을 만듭니다.
아래 화면에서 이미지를 입력합니다.입력한 내용에 따라 스팟ify API를 혼자 사용해 앨범을 만든다.
사진첩 제작에 사용된 정보로 웹 인터페이스에서 얻은 당시의 심정은 지금부터 진행되는 작업 내용 외에 스포티파이 내 곡의 배열 순서, 온도 등 독자적인 알고리즘을 활용해 선곡을 하고 사진첩을 제작한다.어쨌든 앨범 한 장당 10곡 정도를 목표로 추가됐다.



여기에 사용된 알고리즘에서 스팟ify 내의 곡에 각각 다음과 같은 정보를 추가하여 제작하고 싶습니다.

환경 구조
app--
--Dockerfile
--docker-compose.yaml
--README.md
--app
|--index.py
|--templates
--|--index.html
--|--create_album.html
|--spotify
--|--sp_controller.py
Dockerfile
FROM python:3.9

WORKDIR /app

COPY ./app /app

RUN pip install Flask
RUN pip install -U MarkupSafe
RUN pip install flask-login
RUN pip install flask-mysql
RUN pip install -U PyMySQL
RUN pip install python-dotenv

CMD ["python", "index.py"]
docker-compose.yaml
version: '3'
services:
  db:
    image: mysql:8.0
    platform: linux/x86_64
    container_name: demoapp-mysql-db
    hostname: demoapp-mysql-db
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - '3306:3306'
    command: --default-authentication-plugin=mysql_native_password
    networks:
      - app-net
  flask:
    build: .
    ports:
      - "5005:80"
    volumes:
      - ./app:/app
    networks:
      - app-net
    depends_on:
      - db
networks:
  app-net:
    driver: bridge

volumes:
  db_data:
templates/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <h2>今日の気分を入力しよう</h1>
    <form action="/create_album" method="POST">
        <input type="checkbox" name="date-term" value="morning">
        <label for="date-term">朝</label>
        <input type="checkbox" name="date-term" value="noon">
        <label for="date-term">昼</label>
        <input type="checkbox" name="date-term" value="night">
        <label for="date-term">夜</label><br>
        <select name="feeling">
            <option value="">--今の気分を選択しよう--</option>
            <option value="workingonsunshine">最高</option>
            <option value="feelinggood">気分がいい</option>
            <option value="soso">まあまあ</option>
            <option value="feelingbad">気分が悪い</option>
            <option value="depressed">落ち込んでる</option>
            <option value="wannadonothing">何もしたくない</option>
        </select><br>
        <select name="todo">
            <option value="">--今からする作業を選ぼう--</option>
            <option value="workingonsunshine">移動</option>
            <option value="feelinggood">コーディング</option>
            <option value="soso">事務作業</option>
            <option value="feelingbad">大学の勉強</option>
            <option value="depressed">記事</option>
            <option value="wannadonothing">睡眠</option>
        </select><br>
        <input type="submit" value="アルバム作成">
    </form>
</body>
</html>
index.py
3
from flask import Flask, render_template, request, session, url_for, redirect
from markupsafe import escape
import model
from spotify import sp_controller
app = Flask(__name__)


@app.route("/")
def index():
        return render_template('index.html')

@app.route("/create_album", methods=["POST", "GET"])
def create_album():
    album = sp_controller.manage_album(request.form["date-term"], request.form["feeling"], request.form["todo"])
    return render_template("spotify_page.html", album=album)

if __name__ == "__main__":
	app.run(host="0.0.0.0", port=80, debug=True)
계속...

좋은 웹페이지 즐겨찾기