Skip to main content

A tool to manage and partially automize the title for episodic video titles and descriptions

Project description

EpisodeNames - a copy paste experience

This is a needlessly complicated tool for a simple job.

The situation was as follows: since 14 years, I create YouTube videos, mostly start-stop lets plays that honestly barely anyone watches. But, I do care and its a good way to get single player games done. Anyway, what I also care about is a proper naming scheme and numbering of all those videos and their description. Over the years I amassed over 10000 videos. My biggest project is Elder Scrolls Online which alone reached 2000 Videos soon. The naming scheme for each episode is quite complicated and I have to iterate some numbers for every single video, some for sessions.

The solution is this overengineered piece of equipment:

Main Page

tl;dr: this is a textual testing ground slash pattern mine for future projects. Think Factorio when you first build a base to have the resource to get to the real base

On the left a tree view with all my projects, on the right the currently active view of all the episodes. A simple key combination copies the assigned template text to the clipboard (using pyperclip currently). There is also a screen to edit templates and projects.

If this were the only thing I wanted I could have just used some scripts that use an SQLite database directly and I would have inputed the data via an database explorer. Or some pre-fabbed input mask. But I like TUIs and I cannot lie.

So here we are now, mostly this is a big learning experience for me to try different TUI design patterns.

Template Page

Currently I got ModalScreens, ScreenModes, Notify and some TextArea going for me. There is some other experimentation as well. I use the peeweeORM for this one, I never touched it before and I saw it in some random project and wanted to try it. I am not so sure if its the right way, but I hope my software stack is sound and allows, if the need arises, to replace everything under the hood.

How to install

  1. Check out git
  2. Change to folder
  3. Create virtual environment $ python3 -m venv venv
  4. Activate venv $ source venv/bin/activate
  5. $ pip install -e . for editable module installation, this should, hopefully resolve all dependencies
  6. $ python3 episode_names/app.py

Or, theoretically it should now also work with UV, if I got all the things right and haven't configured it horribly

uv tool run episode-names

Todos

  • Making the entire workflow in interface possible
    • Creating, Editing, Deleting Templates
    • Assigning Templates to Episodes
    • Creating Projects
  • Logic functions that keep internal numbering consistent
  • Styling - different colors than default partially solved by textual 0.86?
  • Import/Export of data
  • Use proper tools for i18n and not some thrown together gobbligob
  • Use proper user folders
  • add some cli flags for db folders and stuff (user profiles? why though?)
  • rearrange files by screens and modals
  • make project tree view more sophisticated
  • sort projects by episode edited data and category alphabetical
  • revamp database scheme, currently everything is NotNull and got no defaults in SQL
  • Hide/Show Keyboard shortcuts in EpisodeScreen based on currently active modal
  • Make it so that the db connector does not create objects that are basically empty / work more with SQL restraints
  • Selected Export for only parts of the projects

Ideas

  • Import of all existing stuff I got on YouTube, separate descriptions from rest and make this the one-stop management solution for all my videos
  • Find title duplicates
  • save additional meta data
  • make the interface more sleek and faster to use for the haxxor experience
  • hide currently not relevant keyboard shortcuts
  • I am currently loading all Episodes from the database multiple times to populate views. This should always be fast even if I had thousands of entries..yet, maybe I should still cache those and only update deltas when needed? It would be way more complicated, but, as an exercise, better

Know Issues

  • Cannot duplicate template yet
  • For some reason I broke the scroll ability of my main Datatable that contains the episodes, I added a ScrollView but this should not be necessary
  • Some number inconsistency, sometimes -1 is assigned which is a bad way
  • The project tree view has no scroll bar...
  • I would like to have the table of content for the Notes, but that doesn't work at all
  • When updating to a new version that got a different database scheme..there is no way to know that. As a casual user you just get greeted with empty data

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

episode_names-0.2.3.tar.gz (32.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

episode_names-0.2.3-py3-none-any.whl (83.4 kB view details)

Uploaded Python 3

File details

Details for the file episode_names-0.2.3.tar.gz.

File metadata

  • Download URL: episode_names-0.2.3.tar.gz
  • Upload date:
  • Size: 32.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for episode_names-0.2.3.tar.gz
Algorithm Hash digest
SHA256 15ac4703d8531fcab4ffb7d211b194d0e8763f1c70948219973a9b730e9a3ef3
MD5 4e0cbd9a870460a722f3cd3238a27fba
BLAKE2b-256 067d761933dc5772860bb90be406dc36a4e2beabb458e027a9304929878910c4

See more details on using hashes here.

File details

Details for the file episode_names-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: episode_names-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 83.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for episode_names-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 35c7f2bd517832d00e82dde8a43cb72a580d8397aff4738af5be07fee7397623
MD5 3bd676327970bb5b4b363013d6e0f435
BLAKE2b-256 9a13eac5692d2588d74f5b4ff12121b33158b618505e3bc0be8795971ff26644

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page