Apr-15-2024, 01:22 AM
(This post was last modified: Apr-15-2024, 10:45 AM by Larz60+.
Edit Reason: Changed tags around bash script ... looks better with code tags
)
I have downloaded and installed python wins from Microsoft v 3.12.3 using default installation.
I got these three files: the first gen_metadata.py the second gen_prompts.py and the third get_next_prompts.sh files off of youtube https://www.youtube.com/watch?v=7ee1G-IGmI4&t=768s to help me automate some of the things I am doing.
I have no idea how to install or where to place them in the Python program on my windows 11 desktop. I understand that this is probably way out of line in asking anyone on this forum to show me how but I really have to given I am a dumb-sh..
Please.
--------------
-----------------------------------------
-----------------------------------
Bash Script:
I got these three files: the first gen_metadata.py the second gen_prompts.py and the third get_next_prompts.sh files off of youtube https://www.youtube.com/watch?v=7ee1G-IGmI4&t=768s to help me automate some of the things I am doing.
I have no idea how to install or where to place them in the Python program on my windows 11 desktop. I understand that this is probably way out of line in asking anyone on this forum to show me how but I really have to given I am a dumb-sh..
Please.
--------------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
#!/usr/local/bin/python3 import os # Define a function to extract the first two words from a line def extract_first_two_words(line): return ' ' .join(line.split()[: 2 ]) # Define a function to remove anything starting with '--' and the first two words from the prompt def format_prompt(line): # Remove comments starting with '--' formatted_line = line.split( '--' )[ 0 ].strip() # Remove the first two words formatted_line = ' ' .join(formatted_line.split()[ 2 :]) return formatted_line def quoted(theStr): return f '"{theStr}"' def get_keywords(sentence): if not sentence: return "" # Define a set of stopwords stopwords = { 'with' , 'the' , 'and' , 'a' , 'an' , 'in' , 'on' , 'at' , 'of' , 'to' , 'for' , 'by' , 'from' , 'into' } # Tokenize the sentence into words words = sentence.split() # Remove stopwords and words without alphabetic characters, remove punctuation, and make lowercase keywords = [word.strip( '.,:;?!()-[]{}\\/|<>"\'' ).lower() for word in words if word.lower() not in stopwords and any (c.isalpha() for c in word)] # Join keywords with comma separated keywords = ', ' .join(keywords) return keywords # Read prompts from the file with open (os.path.expanduser( '~/prompts.txt' )) as file : prompts = file .readlines() # Prepare the CSV header csv_header = "Filename,Title,Keywords,Category,Releases" # Write the header to the CSV file with open ( "csv-adobe.csv" , "w" ) as csv_file: csv_file.write(csv_header + "\n" ) # Iterate through each file in the current directory for filename in os.listdir( '.' ): if os.path.isfile(filename): # Initialize a list to store matching prompts for each filename matching_prompts = [] # Iterate through each prompt to find matches for prompt in prompts: # Format the prompt formatted_prompt = format_prompt(prompt) # Extract first two words from the prompt first_two_words = ' ' .join(prompt.split()[: 2 ]).replace( ' ' , '_' ) # Check if the filename contains the first two words followed by an underscore or a dot if f "{first_two_words}_" in filename or f "{first_two_words}." in filename: keywords = get_keywords(formatted_prompt) matching_prompts.append((formatted_prompt.strip(), keywords)) # Append data to the CSV file for the current filename with open ( "csv-adobe.csv" , "a" ) as csv_file: for title, keywords in matching_prompts: filename = quoted(filename) title = quoted(title) keywords = quoted(keywords) category = "8" # Assuming category 8 is default csv_file.write( f "{filename},{title},{keywords},{category},\n" ) # After writing data to the CSV file, read and print its contents with open ( "csv-adobe.csv" , "r" ) as csv_file: print (csv_file.read()) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#!/usr/local/bin/python3 import os from datetime import datetime # Load prompts from file promptList = [] file_path = os.path.expanduser( "~/prompts_input.txt" ) with open (file_path, 'r' ) as file : for line in file : line = line.strip() if line: # Check if line is not empty promptList.append(line) style = "Lofi style illustration" aspectRatio = "16:9" promptList = sorted ( set (promptList)) promptId = 0 # Open the file for writing in your home directory home_dir = os.path.expanduser( "~" ) file_path = os.path.join(home_dir, "prompts.txt" ) # Function to generate the list def generate_list(promptList, promptAdd, file ): global promptId # Define the ID and promptList # Get the current date and time genId = datetime.now().strftime( "%Y%m%d%H%M%S" ) + "list" for promptItem in promptList: promptId + = 1 line = f "{genId} {promptId} {promptItem} {promptAdd}\n" file .write(line) with open (file_path, 'w' ) as file : generate_list(promptList, f "{style} --ar {aspectRatio}" , file ) # Replace this with the shell command you want to execute command = "cat ~/prompts.txt" print ( "\nCommands: " ) print (command) |
Bash Script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
#!/bin/bash # CHANGE AS NEEDED. work = "$HOME" prompts = "$HOME/prompts.txt" # CHANGE AS NEEDED. # Define the URL you want to open in Chrome # CHANGE AS NEEDED. # Delay in seconds, recommend urlDelay = 5 promptDelay = 10 # Main if [ ! - f "$prompts" ]; then echo "$prompts file not found" exit 1 fi # Prompter apple script: function send_prompt() { # Check if clipboard is empty clipboardIsEmpty = $(osascript - e 'the clipboard is equal to ""' ) if [ "$clipboardIsEmpty" = "true" ]; then echo "Clipboard is empty." return 1 fi osascript <<EOF tell application "Google Chrome" activate end tell tell application "System Events" keystroke (ASCII character 27 ) delay 2 keystroke "/" using {option down} delay 1 keystroke "imagine" delay 1 keystroke tab delay 1 keystroke "v" using {command down} delay 1 keystroke return end tell EOF } # Check if Google Chrome is already running if ! pgrep - x "Google Chrome" > / dev / null; then # If Chrome is not running, open it open - a "Google Chrome" fi # Activate Chrome echo "Activate chrome" osascript - e 'tell application "Google Chrome" to activate' # Wait for a moment to ensure Chrome is active sleep 1 # Open the URL in a new tab or window echo "open URL" osascript - e 'tell application "Google Chrome" to set URL of the active tab of the first window to "' "$url "'" ' status = $? if [ "$status" ! = 0 ]; then echo "Bad status, exit" exit 1 fi sleep "$urlDelay" ################################################### prev = "" # Function to check if clipboard is empty function clipboard_check { clipboard = $(pbpaste) if [ "$clipboard" = = "$prev" ]; then echo "End" exit 0 fi prev = "$clipboard" if [ - z "$clipboard" ]; then return 0 # Clipboard is empty else return 1 # Clipboard is not empty fi } max = $(wc - l < "$prompts" ) echo "Will loop for max: $max" # Run the loop N times or until clipboard is empty for (( i = 1 ; i< = $ max ; i + + )); do echo "Getting $i of $max prompts" head - ${i} $prompts | tail - 1 | pbcopy clipboard_check if [ $? - eq 0 ]; then echo "skip line" else echo "will paste" pbpaste # Run the AppleScript send_prompt # Delay between runs (adjust the delay as needed) sleep "$promptDelay" fi done |