{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":557088046,"defaultBranch":"main","name":"Art-Gen","ownerLogin":"Offroaders123","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-10-25T03:47:25.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/65947371?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1708595339.0","currentOid":""},"activityList":{"items":[{"before":"f11294c79c5b9cebb0e091bf9e75338f912db9bf","after":"bea1989258514d6e47cd81ba28d817164ba81402","ref":"refs/heads/dev","pushedAt":"2024-03-31T20:54:04.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"CLI Removal (Temporary?)\n\nI want to make a proper inclusive app build which will allow more non-coder kind of people to make use of the project, I think that's the current huge roadblock to making it something that can be more accessibly used.\n\nI can add ffmpeg-static and Puppetter to an Electron app, and make a GUI with that itself, which will replace the CLI setup. Personally I really like the simplicity of the CLI, I think I need to make it more easy to use and install to actually make use of it though, since the CLI would require knowledge of using the terminal, installing Node.js, installing ffmpeg, already having Chrome installed, all just to actually use the project. Having a built GUI app is much easier to just plainly download, install, and run, and can have easier access for more people to check out. It's also much easier to showcase what it actually does as well, since it is just something you would be able to just download and install.\n\nI will probably use Vite for developing the frontend, and either Solid or React for the UI itself. I'm curious about using SSR JSX for the image rendering template as well, rather than a custom-stringified HTML page, which is what it simply does now. Bundling the project all into one also allows the localhost server to just be it's own headless Electron window as well, which removes the need to start up a Node HTTP server just to make the thumbnail renderer accessible.\n\nThe concept for hooking all of that together feels fairly trivial, but it's a big hunk of tech to tie together and I want to make sure I do it right.\n\nIt does unfortunately make the project as a whole more complex because of the other dependencies it has to bundle together, but that in turn makes it much more accessible to the non-geeks like me that know how to set up all of those myself.","shortMessageHtmlLink":"CLI Removal (Temporary?)"}},{"before":"82d3279a3b659201e483e9a9b4d31f72c67966e4","after":"f11294c79c5b9cebb0e091bf9e75338f912db9bf","ref":"refs/heads/dev","pushedAt":"2024-03-31T20:51:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"CLI Removal (Temporary?)\n\nI want to make a proper inclusive app build which will allow more non-coder kind of people to make use of the project, I think that's the current huge roadblock to making it something that can be more accessibly used.\n\nI can add ffmpeg-static and Puppetter to an Electron app, and make a GUI with that itself, which will replace the CLI setup. Personally I really like the simplicity of the CLI, I think I need to make it more easy to use and install to actually make use of it though, since the CLI would require knowledge of using the terminal, installing Node.js, installing ffmpeg, already having Chrome installed, all just to actually use the project. Having a built GUI app is much easier to just plainly download, install, and run, and can have easier access for more people to check out. It's also much easier to showcase what it actually does as well, since it is just something you would be able to just download and install.\n\nI will probably use Vite for developing the frontend, and either Solid or React for the UI itself. I'm curious about using SSR JSX for the image rendering template as well, rather than a custom-stringified HTML page, which is what it simply does now. Bundling the project all into one also allows the localhost server to just be it's own headless Electron window as well, which removes the need to start up a Node HTTP server just to make the thumbnail renderer accessible.\n\nThe concept for hooking all of that together feels fairly trivial, but it's a big hunk of tech to tie together and I want to make sure I do it right.\n\nIt does unfortunately make the project as a whole more complex because of the other dependencies it has to bundle together, but that in turn makes it much more accessible to the non-geeks like me that know how to set up all of those myself.","shortMessageHtmlLink":"CLI Removal (Temporary?)"}},{"before":"bd641a6a216e8a26370b7eed26af0f6c713d189d","after":"82d3279a3b659201e483e9a9b4d31f72c67966e4","ref":"refs/heads/main","pushedAt":"2024-03-31T20:41:14.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Revert \"CLI Args Demo\"\n\nThis reverts commit b1999f8975ff95ceb1ec3261dee6c1df3ea5bb8c.\n\nGoing back on that demo, want to come back to that later. I want to focus on implementing other things first actually.","shortMessageHtmlLink":"Revert \"CLI Args Demo\""}},{"before":"b1999f8975ff95ceb1ec3261dee6c1df3ea5bb8c","after":"82d3279a3b659201e483e9a9b4d31f72c67966e4","ref":"refs/heads/dev","pushedAt":"2024-03-31T20:30:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Revert \"CLI Args Demo\"\n\nThis reverts commit b1999f8975ff95ceb1ec3261dee6c1df3ea5bb8c.\n\nGoing back on that demo, want to come back to that later. I want to focus on implementing other things first actually.","shortMessageHtmlLink":"Revert \"CLI Args Demo\""}},{"before":"b1999f8975ff95ceb1ec3261dee6c1df3ea5bb8c","after":"bd641a6a216e8a26370b7eed26af0f6c713d189d","ref":"refs/heads/main","pushedAt":"2024-02-22T09:50:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Dependency Upgrades\n\nStarted working on JSMediaTags tonight, because I got a few ideas for working on this project again!\n\nSevendust - Not Original\n\nhttps://github.com/Offroaders123/jsmediatags/commit/098fae5321d918d4770798de06f292e96fe7fb4f","shortMessageHtmlLink":"Dependency Upgrades"}},{"before":null,"after":"b1999f8975ff95ceb1ec3261dee6c1df3ea5bb8c","ref":"refs/heads/dev","pushedAt":"2024-02-22T09:48:59.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"CLI Args Demo\n\nLooking into using a library for this again, it's still a little above my head though, in terms of understanding how to set it up, as well as get easy types out of it as well, which it doesn't completely seem to have here. I realized I think I want something like Zod, but for CLI args. Turns out someone made a project for that, so I'll probably use it next!\n\nHere's all of the various concepts I'm coming back to this project with, some are existing concepts, some are the new CLI-related ones.\n\nhttps://www.npmjs.com/package/@googleapis/youtube\nhttps://googleapis.dev/nodejs/googleapis/latest/youtube/classes/Youtube.html\nhttps://github.com/googleapis/google-api-nodejs-client\n\nhttps://dev.to/rushankhan1/build-a-cli-with-node-js-4jbi\nhttps://www.npmjs.com/package/yargs\nhttps://www.reddit.com/r/node/comments/a1tl3i/what_library_should_i_use_for_creating_a_cli/\nhttps://npmtrends.com/commander-vs-minimist-vs-nopt-vs-optimist-vs-optionator-vs-yargs\nhttps://www.npmjs.com/package/commander\nhttps://github.com/GregBrimble/zodcli\n\nI wanted to complete this more, before committing it, but it's getting late, and I wanted to keep track of the links I found while reading up on this, and I think I don't quite understand how to use those libraries just yet, in order to get things working nice and properly.\n\nLooking forward to using them for things like NBTify eventually too, it could really use some help with making things look and work nice! :D","shortMessageHtmlLink":"CLI Args Demo"}},{"before":"bd641a6a216e8a26370b7eed26af0f6c713d189d","after":"b1999f8975ff95ceb1ec3261dee6c1df3ea5bb8c","ref":"refs/heads/main","pushedAt":"2024-02-22T09:48:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"CLI Args Demo\n\nLooking into using a library for this again, it's still a little above my head though, in terms of understanding how to set it up, as well as get easy types out of it as well, which it doesn't completely seem to have here. I realized I think I want something like Zod, but for CLI args. Turns out someone made a project for that, so I'll probably use it next!\n\nHere's all of the various concepts I'm coming back to this project with, some are existing concepts, some are the new CLI-related ones.\n\nhttps://www.npmjs.com/package/@googleapis/youtube\nhttps://googleapis.dev/nodejs/googleapis/latest/youtube/classes/Youtube.html\nhttps://github.com/googleapis/google-api-nodejs-client\n\nhttps://dev.to/rushankhan1/build-a-cli-with-node-js-4jbi\nhttps://www.npmjs.com/package/yargs\nhttps://www.reddit.com/r/node/comments/a1tl3i/what_library_should_i_use_for_creating_a_cli/\nhttps://npmtrends.com/commander-vs-minimist-vs-nopt-vs-optimist-vs-optionator-vs-yargs\nhttps://www.npmjs.com/package/commander\nhttps://github.com/GregBrimble/zodcli\n\nI wanted to complete this more, before committing it, but it's getting late, and I wanted to keep track of the links I found while reading up on this, and I think I don't quite understand how to use those libraries just yet, in order to get things working nice and properly.\n\nLooking forward to using them for things like NBTify eventually too, it could really use some help with making things look and work nice! :D","shortMessageHtmlLink":"CLI Args Demo"}},{"before":"75e0fb4ebb928d757b51cd831547e73dc399fdd6","after":"bd641a6a216e8a26370b7eed26af0f6c713d189d","ref":"refs/heads/main","pushedAt":"2024-02-22T09:23:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Dependency Upgrades\n\nStarted working on JSMediaTags tonight, because I got a few ideas for working on this project again!\n\nSevendust - Not Original\n\nhttps://github.com/Offroaders123/jsmediatags/commit/098fae5321d918d4770798de06f292e96fe7fb4f","shortMessageHtmlLink":"Dependency Upgrades"}},{"before":"4125f8b54bf43a75cca96d0209780f806a789032","after":"75e0fb4ebb928d757b51cd831547e73dc399fdd6","ref":"refs/heads/main","pushedAt":"2023-10-31T03:18:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Empty Inputs Through API\n\nReencountered that you can call `generateArtTracks()` without any paths, because that's currently handled by the CLI mainly. So now the API handles that also.","shortMessageHtmlLink":"Empty Inputs Through API"}},{"before":"906817caf581b43209b94396c765445345e82994","after":"4125f8b54bf43a75cca96d0209780f806a789032","ref":"refs/heads/main","pushedAt":"2023-10-31T02:46:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Proper NPM Installation / Package\n\nNow you can use the functionality from the JS side too! And now it doesn't need `tsx` to run in Node, it's just built with TypeScript like normal.\n\nFlying Beagle!!!","shortMessageHtmlLink":"Proper NPM Installation / Package"}},{"before":"ef1d22fd7c4ca91926f3cd88c2b748f23b2e73ad","after":"906817caf581b43209b94396c765445345e82994","ref":"refs/heads/main","pushedAt":"2023-10-31T02:35:39.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Generation Options","shortMessageHtmlLink":"Generation Options"}},{"before":"364846653754b0ef6b69ef5e853c2ff3d443f6d4","after":"ef1d22fd7c4ca91926f3cd88c2b748f23b2e73ad","ref":"refs/heads/main","pushedAt":"2023-07-15T01:00:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Overwrite Argz","shortMessageHtmlLink":"Overwrite Argz"}},{"before":"445cfd97debd3b24e07c65f76cef4e82a794d76b","after":"364846653754b0ef6b69ef5e853c2ff3d443f6d4","ref":"refs/heads/main","pushedAt":"2023-07-11T12:32:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"FS Write Scoping\n\nDeciding on jumping all in on the file system! I wanted to be able to support both a JavaScript API for this, and a normal CLI setup, but trying to keep a JavaScript API setup (functionally-based) isn't as feasible with tools like FFmpeg, which primarily work and expect to work as a component on top of an available file system. When I tried to use FFmpeg with stdout, things got a bit hairy, at least in terms of Node.js Buffer objects they can only hold so much data, not as much as the file system can.","shortMessageHtmlLink":"FS Write Scoping"}},{"before":"762171e5c75b54b5cad95a43e18e6429bdd9afb9","after":"445cfd97debd3b24e07c65f76cef4e82a794d76b","ref":"refs/heads/main","pushedAt":"2023-07-11T12:10:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Full Overwrite Flag\n\nHaken is the bomb dude.\n\nhttps://stackoverflow.com/questions/12899061/creating-a-file-only-if-it-doesnt-exist-in-node-js\nhttps://nodejs.org/api/fs.html#file-system-flags:~:text=if%20it%20exists).-,%27wx%27,-%3A%20Like%20%27w%27","shortMessageHtmlLink":"Full Overwrite Flag"}},{"before":"252fed19567072187556f42f72134e038000c098","after":"762171e5c75b54b5cad95a43e18e6429bdd9afb9","ref":"refs/heads/main","pushedAt":"2023-07-11T11:48:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Legacy Demos\n\nRemoving the legacy demos that aren't part of my current tests and such.","shortMessageHtmlLink":"Legacy Demos"}},{"before":"f1a1d9c9391e3febb015920e4b4e2c10f85d024e","after":"252fed19567072187556f42f72134e038000c098","ref":"refs/heads/main","pushedAt":"2023-07-11T11:41:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Overwrite Flag\n\nStill need to set this up to work with Node's FS API calls. This is mainly to streamline usage of FFmpeg, to not silently hang the terminal window for asking whether to overwrite the file or not, because I currently don't have a way to provide that question to the user.","shortMessageHtmlLink":"Overwrite Flag"}},{"before":"cab0909f78b7c1370844be0f92d4a09881925c8d","after":"f1a1d9c9391e3febb015920e4b4e2c10f85d024e","ref":"refs/heads/main","pushedAt":"2023-07-11T11:07:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Built-In Args\n\nRealized that I want the arg system to work a bit differently than to how vercel/arg would support, so I'm making my own! It works similarly to FFmpeg (kind of), more that each thing you pass in is an individual input, rather than needing to specify that it's an input every time (I guess FFmpeg doesn't really do it that way, but the repetitive -i flag is kind of what I'm going for, just that each one is a different export, not all for one single export).","shortMessageHtmlLink":"Built-In Args"}},{"before":"82c155f1dd401d4615546ad591165936aa75d849","after":"cab0909f78b7c1370844be0f92d4a09881925c8d","ref":"refs/heads/main","pushedAt":"2023-07-11T08:45:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Thumbnail Module","shortMessageHtmlLink":"Thumbnail Module"}},{"before":"d635ae3415bcb177165f55d054e3b0928c3fddeb","after":"82c155f1dd401d4615546ad591165936aa75d849","ref":"refs/heads/main","pushedAt":"2023-07-09T23:21:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Full FFmpeg Video!!!\n\nYOOOOO! Sick! This fully works now! It will automate from song file, directly to video file. Note, if your video file name already exists, it will overwrite it. It's up to you to make sure that the output name you pass in isn't already taken. Once I organize the logic for this more, I will put in an option to specify what it should do.\n\n```sh\nart-gen -i ./test/26.m4a -o ./test/26.mp4\n```","shortMessageHtmlLink":"Full FFmpeg Video!!!"}},{"before":"359cb1d09b69b0592a1f4bc3b431e83e43105649","after":"d635ae3415bcb177165f55d054e3b0928c3fddeb","ref":"refs/heads/main","pushedAt":"2023-07-09T22:20:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"CLI Adjustments","shortMessageHtmlLink":"CLI Adjustments"}},{"before":"655c78dd13fe328c6692333d091a9eac8c2c6509","after":"359cb1d09b69b0592a1f4bc3b431e83e43105649","ref":"refs/heads/main","pushedAt":"2023-06-30T01:22:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Arg Demoo\n\nBetween this and the last commit, found a reference as to just adding the `chmod +x` call to the build step itself. That is a possible idea, but I don't like that it won't work on Windows/non-Unix systems. I like that my projects can not only be used on any platform, but I want them to also be develop-able on any platform! I think the two should go hand in hand, at least in the nature of when it is something that should work cross-platform.\n\nhttps://stackoverflow.com/questions/44612118/typescripts-transpiles-files-which-are-non-executable\n\nSet up a simple CLI argument set using Vercel/Arg! Doing it on my own isn't going to be feasable, it is hard to catch a lot of the possible errors. For cases like these, I definitely do agree that using libraries are the way to go.\n\n```sh\nart-gen --input ./test/26.m4a --output ./demo.png\n```\n\nRight now you can also pass in multiple strings after the `--input` flag, and a match number of strings after the `--output` flag, providing for multiple files to create thumbnails for. I plan on adding additional arguments for things like specifying raw media tag values manually, which could allow you to generate the files using your own data, rather than reading it from the song directly. This will make working with WAV files possible, as you can provide what metadata you want to use for the thumbnails of those, and such.","shortMessageHtmlLink":"Arg Demoo"}},{"before":"efabeaeebf84a2c4f780534df8d01fc54c5a1e58","after":"655c78dd13fe328c6692333d091a9eac8c2c6509","ref":"refs/heads/main","pushedAt":"2023-06-30T00:32:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Initial CLI!\n\nStarted demoing things out with Vercel/Arg, but it didn't seem like it was necessary for the CLI I currently have plans for (as of now, I don't really know the best ways for passing args to CLIs, so my options could use some improvement)\n\nRight now, you can pass in separate song file paths, and each one is run by the generator, which is created once per CLI call.\n\nThis is how I'm calling it right now:\n\n```sh\ntsx ./src/cli.ts ./test/26.m4a\n```\n\nSo say if you passed in that song name 3 more times, it will generate three more of the same thumbnail, separately.\n\nNow I am deciding whether to go full-CLI, and to work with file paths directly, rather than returning Buffer value results from the JS implementation. I think I'll probably hook those two together, and still provide a standalone-JS option that you can use through your own Node scripts. I like that because you can do things with the Buffer results directly, without having to use the CLI for it. I'll have to find a workaround for the server fetching out of that though, as right now the HTTP server relies on the file being located in a path on the disk.\n\nI was also debating making it so the CLI will only allow a single file to make at a time, but this breaks the Puppeteer instancing feature, and it means that you'd have to spin up a new web server, and Puppeteer instance for every single thumbnail, which isn't ideal. I think I will still go through with the multiple args setup, allowing you to pass in multiple file entries in one go, which will allow you to do them asynchronously (I think?).\n\nhttps://medium.com/netscape/a-guide-to-create-a-nodejs-command-line-package-c2166ad0452e\nhttps://github.com/vercel/arg (Tried this out again)\nhttps://stackoverflow.com/questions/35454716/node-stream-buffers-in-console-log-vs-process-stdout-write (Debated piping the results to stdout so you can use piping with it, but I don't think you can decipher between multiple return values with that?)\n\nOooh, tried using npm install -g / npm link with the TSC build output, but how are you supposed to be able to do that with TSC's build output? Using `chmod +x` on the source TS file doesn't transfer over to the JavaScript one? Am I missing something? This was my workaround just for the demo.\n\nhttps://medium.hexlabs.io/typescript-based-command-line-interface-cli-with-node-js-e2d7a0db84d7\n\nOnce installed globally, you can run it just like a normal CLI script! Super cool.\n\n```sh\nart-gen ./test/26.m4a\n```","shortMessageHtmlLink":"Initial CLI!"}},{"before":"c1306eb8166edccede8d4bb54e3a5bb46a8517e9","after":"efabeaeebf84a2c4f780534df8d01fc54c5a1e58","ref":"refs/heads/main","pushedAt":"2023-06-29T23:02:30.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"De-Modulate\n\nRealized I don't think modules were the right way for how I was organizing things prior. Using a class for the instance management makes more sense, rather than exported variables that the other modules can reference. Might as well just use a class for that!","shortMessageHtmlLink":"De-Modulate"}},{"before":"ef3cb2955cb91fb88bfb71d4133d42ae22a8bef0","after":"c1306eb8166edccede8d4bb54e3a5bb46a8517e9","ref":"refs/heads/main","pushedAt":"2023-06-27T08:45:13.801Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Modules! Timed-out, though\n\nGot the modules set up! Now you can use the library using a single main function to start a generator/renderer/server. It looks like it's having some issues with loading times though, so it's preventing the screenshot from being taken, because it waits for the loading to finish, while it never does.\n\nI think I might just go back to a normal class definition after this, Not sure if the modules make complete sense for this.\n\nhttps://stackoverflow.com/questions/70009299/http-server-respnd-with-an-output-from-an-async-function (Looks like it might have to do with async-await, or maybe the tags global, or error handling? Not totally sure)","shortMessageHtmlLink":"Modules! Timed-out, though"}},{"before":"9390b2b1e34d2c8ba35cd7d04f0ddbbdc899eab4","after":"ef3cb2955cb91fb88bfb71d4133d42ae22a8bef0","ref":"refs/heads/main","pushedAt":"2023-06-27T08:11:14.020Z","pushType":"push","commitsCount":2,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Proper Modules\n\nNow that I have more of an idea as to how each of these parts work together, I see how they can interact in terms of functions and modules. Not having everything in a single file seems like a more intentional way to go.\n\nhttps://github.com/fluent-ffmpeg/node-fluent-ffmpeg (Alternative to just calling ffmpeg using the 'child_process' module)\nhttps://stackoverflow.com/questions/9464617/retrieving-and-saving-media-metadata-using-ffmpeg (Alternative in replacing jsmediatags)\nhttps://stackoverflow.com/questions/13592709/retrieve-album-art-using-ffmpeg\nhttps://stackoverflow.com/questions/35733684/how-to-create-a-tmp-dir-in-node-without-collisions (Working out where the files for everything should be managed, as I don't want to run into naming collisions with the user's file system, and passing Buffer objects around seems nice on the programming side, but I think it's less so for the performance of things)\nhttps://developer.chrome.com/articles/new-headless/\nhttps://stackoverflow.com/questions/36526553/node-js-update-server-page (The alternative that I realized would be really neat, is to keep the reference for the tags in a separate variable/module import-export, which can be reassigned outside of the `createServer()` function, but is used inside of there, meaning it is dynamic to what it is currently set to at that time)\nhttps://stackoverflow.com/questions/51851677/how-to-get-argument-types-from-function-in-typescript (Was also debating doing this with the `createServer()` response function itself, but then I realized that's not as necessary, since the only thing changing in the function body is the media tags reference)","shortMessageHtmlLink":"Proper Modules"}},{"before":"a698ff77b4c22844f384789efff115a6441fa982","after":"9390b2b1e34d2c8ba35cd7d04f0ddbbdc899eab4","ref":"refs/heads/main","pushedAt":"2023-06-26T19:29:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"[Hacky] But Very Close!\n\nWow! Got this working 'fully on the terminal', thanks to Puppeteer! Of course, it's using Puppeteer under the hood, but now you can actually pass in your own song files, and it will programmatically return back to your what the resulting image is! So you don't have to manually work with the GUI like before.\n\nBeen listening to Thank You Scientist 'Terraformer', this album is so sick.\n\nNow that this is working, I want to improve the API so it more simply does the handling, and you do things more functionally. Right now it makes a new Puppeteer browser window for every thumbnail generator, but it doesn't have to be that way, I can set it up much nicer.\n\nI want to make it like the builder pattern for NBT reading and writing, where there are top-level functions that are for the user's ease of use, and to manage the handling on the backside of things so it only has one browser instance at a time. This will work super great with async-await. I also want to only have a single HTTP server at a time too, so I have to move where the definitions for each of these things are into the functions differently, allowing them to manage multiple thumbnail generations concurrently from one instance.\n\nThought I was going to need to get the MIME type for the artwork file, but I forgot that it's stored in the data itself, so JSMediaTags will provide it (I wrapped those into a Blob object). But if I didn't have that info available to me, I found a really great ESM library to handle that kind of logic.\n\nhttps://flaviocopes.com/node-serve-html-page/ (Came back to look at this again, didn't need Vite/Express, rebuilt the renderer to simple use HTML templating instead!!! No need for the Canvas implementation now either, since you can just screenshot the window's content. So now you can demo out how the HTML/CSS looks for the thumbnail content, by just opening it with either Live Server, or STE! Yay :D)\nhttps://stackoverflow.com/questions/4720343/loading-basic-html-in-node-js (Help with writing the HTML to the response object)\nhttps://dev.to/victrexx2002/how-to-get-the-mime-type-of-a-file-in-nodejs-p6c\nhttps://github.com/sindresorhus/file-type\nhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs\nhttps://stackoverflow.com/questions/54099802/blob-to-base64-in-nodejs-without-filereader\n\nI also brought up the updated JSMediaTags module I made, from the CLI branch. It had some better handling compared to that of the original 'site' implementation.","shortMessageHtmlLink":"[Hacky] But Very Close!"}},{"before":"3f93ae481524e69c424aaa91d7ae10b2cc536445","after":"a698ff77b4c22844f384789efff115a6441fa982","ref":"refs/heads/main","pushedAt":"2023-06-26T18:44:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Next Demo: SSR with Plain HTML\n\nNice!","shortMessageHtmlLink":"Next Demo: SSR with Plain HTML"}},{"before":"580ea123191a1ecf5a09d4e0da8fc84d97be9f8a","after":"3f93ae481524e69c424aaa91d7ae10b2cc536445","ref":"refs/heads/main","pushedAt":"2023-06-26T17:24:34.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"SSR Partly Demo\n\nKind of got SSR working, but it isn't quite there yet. I really like this setup though!\n\nI think I'm going to go back a step, and just try doing SSR for the HTML, but using a plain HTML string for the server response, rather than trying to incorporate Vite and all of these other things.\n\nhttps://preactjs.com/guide/v10/server-side-rendering/\nhttps://vitejs.dev/guide/ssr.html\nhttps://stackoverflow.com/questions/75965951/vite-ssr-node-js-native-http-server\nhttps://dev.to/franciscomendes10866/build-a-ssr-app-with-react-react-router-and-vite-1c6l","shortMessageHtmlLink":"SSR Partly Demo"}},{"before":"8ca535019eb19bef90d4a8e147b3add479edfff8","after":"580ea123191a1ecf5a09d4e0da8fc84d97be9f8a","ref":"refs/heads/main","pushedAt":"2023-06-26T07:37:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Shenanigans that Didn't Work\n\nThis is the code mentioned in the previous commit, which like, didn't work.","shortMessageHtmlLink":"Shenanigans that Didn't Work"}},{"before":"d1d663bfb9d20a2d59546ca342c2917edd04a679","after":"8ca535019eb19bef90d4a8e147b3add479edfff8","ref":"refs/heads/main","pushedAt":"2023-06-26T07:33:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Offroaders123","name":"Brandon Bennett","path":"/Offroaders123","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/65947371?s=80&v=4"},"commit":{"message":"Demo: New Idea: SSR!\n\nThis train ran out of tracks, so I'm going to try taking a different line.\n\nRealized that if I'm going to use an HTTP server, and I plan on using JSX, what if I just did this like a regular person and did this on the 'server' side? Lol\n\nI was trying to load the file using Node's FS, then pass it into Puppeteer's page using `page.evaluate()` but turns out you can't serialize TypedArrays, Files, Blobs, or ArrayBuffers. The only way around this with that current setup would be to convert it to a Base64 DataURL, and that just started to make me feel yucky inside. There's already so many ugly steps going on here, and adding another layer of abstraction like that to simply get the data into Puppeteer (and it would have to come back out this way too) seemed not worth it to me. It started to wreak like the need for a rethink/write.\n\nTook an hour or two to regroup (these changes were from before that), have a late dinner, play some music, and now I feel a bit better about things again. Lets's see where this goes next! Hell yeah!\n\nTHE NAME: Is the Primeagen\n\nhttps://stackoverflow.com/questions/66711330/issue-listening-for-custom-event-via-puppeteer\nhttps://stackoverflow.com/questions/63913846/how-do-i-call-function-outside-async-function-in-puppeteer-with-nodejs\nhttps://stackoverflow.com/questions/46088351/how-can-i-pass-variable-into-an-evaluate-function\nhttps://github.com/puppeteer/puppeteer/issues/3722\nhttps://github.com/puppeteer/puppeteer/issues/2427\nhttps://stackoverflow.com/questions/6850276/how-to-convert-dataurl-to-file-object-in-javascript\nhttps://www.youtube.com/watch?v=ML743nrkMHw (Unrelated, but I watched part of it during my dinner break. Electron really is neat, I think I should give myself some slack (pun unintended), it really is powerful how many neat things you can do with it. Just because it is bulky compared to other options, it is really cool what it does provide you with things to do with it :) )","shortMessageHtmlLink":"Demo: New Idea: SSR!"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEI_fJIwA","startCursor":null,"endCursor":null}},"title":"Activity ยท Offroaders123/Art-Gen"}