/MoneyPrinter

Automate Creation of YouTube Shorts using MoviePy.

Primary LanguagePythonMIT LicenseMIT

MoneyPrinter 💸

Automate the creation of YouTube Shorts locally, simply by providing a video topic to talk about.

Important Please make sure you look through existing/closed issues before opening your own. If it's just a question, please join our discord and ask there.

🎥 Watch the video on YouTube.

Installation 📥

MoneyPrinter requires Python 3.11 to run effectively. If you don't have Python installed, you can download it from here.

After you finished installing Python, you can install MoneyPrinter by following the steps below:

git clone https://github.com/FujiwaraChoki/MoneyPrinter.git
cd MoneyPrinter

# Install requirements
pip install -r requirements.txt

# Copy .env.example and fill out values
cp .env.example .env

# Run the backend server
cd Backend
python main.py

# Run the frontend server
cd ../Frontend
python -m http.server 3000

See .env.example for the required environment variables.

If you need help, open EnvironmentVariables.md for more information.

Usage 🛠️

  1. Copy the .env.example file to .env and fill in the required values
  2. Open http://localhost:3000 in your browser
  3. Enter a topic to talk about
  4. Click on the "Generate" button
  5. Wait for the video to be generated
  6. The video's location is MoneyPrinter/output.mp4

P.S. If you are accesssing the MP Frontend from a different device (e.g. the MP front and backend on a server), edit lines 28 and 74 of Frontend/app.js from localhost to whatever the IP of that server is you're running MP on.

Music 🎵

To use your own music, compress all your MP3 Files into a ZIP file and upload it somewhere. Provide the link to the ZIP file in the Frontend.

It is recommended to use Services such as Filebin to upload your ZIP file. If you decide to use Filebin, provide the Frontend with the absolute path to the ZIP file by using More -> Download File, e.g. (use this Popular TT songs ZIP, not this Popular TT songs)

You can also just move your MP3 files into the Songs folder.

Fonts 🅰

Add your fonts to the fonts/ folder, and load them by specifying the font name on line 225 in Backend/video.py.

Automatic YouTube Uploading 🎥

MoneyPrinter now includes functionality to automatically upload generated videos to YouTube.

To use this feature, you need to:

  1. Create a project inside your Google Cloud Platform -> GCP.
  2. Obtain client_secret.json from the project and add it to the Backend/ directory.
  3. Enable the YouTube v3 API in your project -> GCP-API-Library
  4. Create an OAuth consent screen and add yourself (the account of your YouTube channel) to the testers.
  5. Enable the following scopes in the OAuth consent screen for your project:
'https://www.googleapis.com/auth/youtube'
'https://www.googleapis.com/auth/youtube.upload'
'https://www.googleapis.com/auth/youtubepartner'

After this, you can generate the videos and you will be prompted to authenticate yourself.

The authentication process creates and stores a main.py-oauth2.json file inside the Backend/ directory. Keep this file to maintain authentication, or delete it to re-authenticate (for example, with a different account).

Videos are uploaded as private by default. For a completely automated workflow, change the privacyStatus in main.py to your desired setting ("public", "private", or "unlisted").

For videos that have been locked as private due to upload via an unverified API service, you will not be able to appeal. You’ll need to re-upload the video via a verified API service or via the YouTube app/site. The unverified API service can also apply for an API audit. So make sure to verify your API, see OAuth App Verification Help Center for more information.

FAQ 🤔

How do I get the TikTok session ID?

You can obtain your TikTok session ID by logging into TikTok in your browser and copying the value of the sessionid cookie. You can open the console tab, and run the code console.log(sessionStorage.getItem("webapp_session_id")) to get the value of the cookie.

My ImageMagick binary is not being detected

If you're on Linux, run chmod +x magick on the magick binary to make it executable.

Make sure you set your path to the ImageMagick binary correctly in the .env file, it should look something like this:

IMAGEMAGICK_BINARY="C:\\Program Files\\ImageMagick-7.1.0-Q16\\magick.exe"

Don't forget to use double backslashes (\\) in the path, instead of one.

I can't install playsound: Wheel failed to build

If you're having trouble installing playsound, you can try installing it using the following command:

pip install -U wheel
pip install -U playsound

Troubleshooting

This repository is being updated daily, so if you encounter an issue a few days later after cloning, run git pull origin main to stay up to date. Do note that starting from scratch by re-cloning will delete your .env file, your Songs directory, and any other custom fonts you put in the fonts directory.

Donate 🎁

If you like and enjoy MoneyPrinter, and would like to donate, you can do that by clicking on the button on the right hand side of the repository. ❤️ You will have your name (and/or logo) added to this repository as a supporter as a sign of appreciation.

Contributing 🤝

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Star History 🌟

Star History Chart

License 📝

See LICENSE file for more information.