fli_video 0.0.2 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/generators/back/scripts/01-get-technical-design-and-feature-list.rb +32 -0
  3. data/.builders/generators/back/scripts/02-get-feature-list-and-components.rb +42 -0
  4. data/.builders/generators/back/scripts/03-get-structure.rb +104 -0
  5. data/.builders/generators/back/scripts/generated/application-structure.json +231 -0
  6. data/.builders/generators/back/scripts/generated/features-and-components.md +988 -0
  7. data/.builders/generators/back/scripts/generated/technical-design-and-features.md +424 -0
  8. data/.builders/klues/add_episode.klue +25 -0
  9. data/.builders/klues/change_chapter_name.klue +32 -0
  10. data/.builders/klues/create_chapter_video.klue +34 -0
  11. data/.builders/klues/create_project.klue +37 -0
  12. data/.builders/klues/empty_trash.klue +24 -0
  13. data/.builders/klues/episode_path.klue +77 -0
  14. data/.builders/klues/global_config.klue +31 -0
  15. data/.builders/klues/move_ecamm_file.klue +21 -0
  16. data/.builders/klues/move_to_trash.klue +35 -0
  17. data/.builders/klues/open_in_finder.klue +25 -0
  18. data/.builders/klues/project_config.klue +123 -0
  19. data/.builders/klues/project_meta_data_store.klue +28 -0
  20. data/.builders/klues/project_path.klue +77 -0
  21. data/.builders/klues/recording_file_watcher.klue +28 -0
  22. data/.builders/klues/recording_filename.klue +112 -0
  23. data/.builders/klues/restore_from_trash.klue +29 -0
  24. data/.builders/klues/switch_focus.klue +24 -0
  25. data/.builders/klues/text_to_speech.klue +29 -0
  26. data/.builders/klues/transcript_data_store.klue +28 -0
  27. data/.rubocop.yml +2 -0
  28. data/CHANGELOG.md +26 -0
  29. data/README.md +13 -20
  30. data/bin/fli_video +6 -0
  31. data/docs/feature-list.md +76 -0
  32. data/docs/generated/application-structure.json +53 -0
  33. data/docs/generated/features-and-components.md +993 -0
  34. data/docs/generated/technical-design-and-features.md +437 -0
  35. data/docs/technical-specifications.md +360 -0
  36. data/fli.rb +138 -0
  37. data/lib/fli_video/cli.rb +30 -0
  38. data/lib/fli_video/version.rb +1 -1
  39. data/package-lock.json +2 -2
  40. data/package.json +1 -1
  41. data/scripts/01-get-technical-design-and-feature-list.md +5 -0
  42. data/scripts/01-get-technical-design-and-feature-list.rb +39 -0
  43. data/scripts/02-get-feature-list-and-components.md +26 -0
  44. data/scripts/02-get-feature-list-and-components.rb +56 -0
  45. data/scripts/03-get-code-structure.md +33 -0
  46. data/scripts/03-get-code-structure.rb +73 -0
  47. metadata +41 -3
  48. data/README-features.md +0 -36
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  > FliVideo - Video Asset Management for Content Creators
4
4
 
5
+ GPT Link: https://chatgpt.com/c/dd1f4202-a449-45a6-af45-b65d8e544685
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
@@ -22,13 +24,21 @@ Or install it yourself as:
22
24
  gem install fli_video
23
25
  ```
24
26
 
25
- ## Stories
27
+ ## Documentation
28
+
29
+ ### Technical Design Document
30
+
31
+ The main design document is located here: [Technical Specification](docs/technical-specifications.md)
32
+
33
+ ### Feature List
34
+
35
+ List of features that are planned for this project: [Feature List](docs/feature-list.md)
26
36
 
27
37
  ### Main Story
28
38
 
29
39
  As a content creator, I want to create quality videos quickly, so that I can build my YouTube influence
30
40
 
31
- See all [stories](./STORIES.md)
41
+ See all [stories](./stories.md)
32
42
 
33
43
 
34
44
  ## Usage
@@ -36,7 +46,6 @@ See all [stories](./STORIES.md)
36
46
  See all [usage examples](./USAGE.md)
37
47
 
38
48
 
39
-
40
49
  ## Development
41
50
 
42
51
  Checkout the repo
@@ -49,25 +58,9 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
49
58
 
50
59
  You can also run `bin/console` for an interactive prompt that will allow you to experiment.
51
60
 
52
- ```bash
53
- bin/console
54
-
55
- Aaa::Bbb::Program.execute()
56
- # => ""
57
- ```
58
-
59
- `fli_video` is setup with Guard, run `guard`, this will watch development file changes and run tests automatically, if successful, it will then run rubocop for style quality.
60
-
61
- To release a new version, update the version number in `version.rb`, build the gem and push the `.gem` file to [rubygems.org](https://rubygems.org).
62
-
63
- ```bash
64
- rake publish
65
- rake clean
66
- ```
67
-
68
61
  ## Git helpers used by this project
69
62
 
70
- Add the follow helpers to your `alias` file
63
+ Add the follow helpers to your `alias` file so that you can use Semantic Commits and have them automatically pushed to GitHub and have the CI/CD pipeline run.
71
64
 
72
65
  ```bash
73
66
  function kcommit()
data/bin/fli_video ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require_relative '../lib/fli_video/cli'
5
+
6
+ FliVideo::CLI.start(ARGV)
@@ -0,0 +1,76 @@
1
+ ## Features
2
+
3
+ ### Feature <-> DSL GPTs
4
+ https://chat.openai.com/g/g-AyFi0UOXn-code-simplifier
5
+
6
+ **Global Configuration**
7
+ Access and apply global configuration settings for video asset management and state consistency.
8
+
9
+ **Project Configuration**
10
+ Access and apply video or episode settings and state. Infers project settings from existing project folders and files.
11
+
12
+ **CLI Project Commands**
13
+ Efficiently execute and manage video project commands using a command-line interface, enhancing control and flexibility in project handling.
14
+
15
+ **FileWatch Processor**
16
+ Utilize a FileWatch processor to automate file event responses, directing new recordings to designated folders for efficient content management.
17
+
18
+ **Create Project**
19
+ Setup a new video project for standalone YouTube video or Podcast.
20
+
21
+ **Add Episode**
22
+ Add a new episode to an existing podcast project.
23
+
24
+ **Switch Video Focus**
25
+ Easily switch between different video projects or episodes to accommodate changing content priorities.
26
+
27
+ **Move eCamm File**
28
+ Seamlessly transfer eCamm recordings to the current focused video or podcast episode recordings subfolder.
29
+
30
+ **Project Path**
31
+ Construct and manage project paths dynamically using configurable values and existing folder name segments.
32
+
33
+ **Episode Path**
34
+ Construct and manage episode paths dynamically using configurable values and existing folder name segments.
35
+
36
+ **Recording Namer**
37
+ Dynamically generate and update video recording filenames, incorporating chapter and part sequences, chapter names, and tags, with capabilities to modify chapter sequences and tags for improved organization and content identification.
38
+
39
+ **Change Chapter Name**
40
+ Alter the name of a chapter based on its sequence in the project, facilitating better organization and identification of video content.
41
+
42
+ **Trash**
43
+ Moves suboptimal video takes to a designated 'trash' or 'archive' folder, optimizing storage and maintaining project clarity by segregating lesser-quality content.
44
+
45
+ **Trash Undo**
46
+ Retrieves video takes from the '.trash' folder and moves them back into the target project folder, allowing for reconsideration or re-evaluation of previously discarded content.
47
+
48
+ **Clean Trash**
49
+ Permanently deletes video takes from the 'trash' or 'archive' folder, freeing up storage space and ensuring project clarity.
50
+
51
+ **Open in Finder**
52
+ Quickly access video project and episode folders within the Finder, streamlining file navigation.
53
+
54
+ **Create Chapter Video**
55
+ Combine and review video chapter segments independently, facilitating content evaluation and editing.
56
+
57
+ **Text to Speech**
58
+ Transcribe spoken content to text and store transcriptions folder in multiple transcription formats.
59
+
60
+ Create a DSL using the interactor pattern for:
61
+
62
+ **Transcript Data Store**
63
+ Builds a JSON datastore of transcripts for an entire project based on existing transcript folders found within project, episode, recording, chapter and post-produced folders.
64
+
65
+ **Project Meta Data Store**
66
+ Build a JSON datastore of files for an entire project based on existing project, episode, recording, chapter and post-produced folders and infer metadata based on KEYWORDS, transcripts or other useful data.
67
+
68
+ ## Future Ideas
69
+
70
+ **Web Command Interface for Video Project Management**
71
+ Introduce a streamlined, web-based interface for managing video project commands, enabling efficient control and organization of project components through simple browser interactions.
72
+
73
+ **Project Meta Report**
74
+ Generate a detailed report for a specific video project, including the episodes, chapters, recordings, a list of recording IDs (chapter sequence + part sequence), and the name for the next video recording, file sizes.
75
+ This should be extracted to an AstroJS Website or HTML template servered by a local webserver and provide viewing and navigation for all my video projects.
76
+
@@ -0,0 +1,53 @@
1
+ [
2
+ {
3
+ "name": "spec",
4
+ "type": "directory",
5
+ "children": [
6
+ {
7
+ "name": "spec_helper.rb",
8
+ "type": "file",
9
+ "content": "# frozen_string_literal: true\n\nrequire 'pry'\nrequire 'bundler/setup'\nrequire 'simplecov'\n\nSimpleCov.start\n\nrequire 'fli_video'\n\nRSpec.configure do |config|\n # Enable flags like --only-failures and --next-failure\n config.example_status_persistence_file_path = '.rspec_status'\n config.filter_run_when_matching :focus\n\n # Disable RSpec exposing methods globally on `Module` and `main`\n config.disable_monkey_patching!\n\n config.expect_with :rspec do |c|\n c.syntax = :expect\n end\nend\n"
10
+ },
11
+ {
12
+ "name": "fli_video_spec.rb",
13
+ "type": "file",
14
+ "content": "# frozen_string_literal: true\n\nRSpec.describe FliVideo do\n it 'has a version number' do\n expect(FliVideo::VERSION).not_to be_nil\n end\nend\n"
15
+ }
16
+ ]
17
+ },
18
+ {
19
+ "name": "README.md",
20
+ "type": "file"
21
+ },
22
+ {
23
+ "name": "lib",
24
+ "type": "directory",
25
+ "children": [
26
+ {
27
+ "name": "fli_video",
28
+ "type": "directory",
29
+ "children": [
30
+ {
31
+ "name": "cli.rb",
32
+ "type": "file",
33
+ "content": "# frozen_string_literal: true\n\nrequire_relative '../fli_video'\n\nmodule FliVideo\n # FliVideo::CLI is the command line interface for the FliVideo gem.\n class CLI\n def self.start(args)\n new(args).execute\n end\n\n def initialize(args)\n @args = args\n end\n\n def execute\n if @args.empty?\n puts 'FliVideo CLI - No command provided'\n return\n end\n\n case @args.first\n when 'version'\n puts \"FliVideo version #{FliVideo::VERSION}\"\n else\n puts \"Unknown command: #{@args.first}\"\n end\n end\n end\nend\n"
34
+ },
35
+ {
36
+ "name": "version.rb",
37
+ "type": "file",
38
+ "content": "# frozen_string_literal: true\n\nmodule FliVideo\n VERSION = '0.1.0'\nend\n"
39
+ }
40
+ ]
41
+ },
42
+ {
43
+ "name": "fli_video.rb",
44
+ "type": "file",
45
+ "content": "# frozen_string_literal: true\n\nrequire_relative 'fli_video/version'\n\nmodule FliVideo\n class Error < StandardError; end\n # Your code goes here...\nend\n"
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ "name": "Gemfile",
51
+ "type": "file"
52
+ }
53
+ ]