Title basically, I need to parse the date modified, the time and seconds in order to reconstruct the filenames in the format of an android phone’s camera roll.

I should be able to make the script once I know how to parse the metadata is all

  • Eager Eagle@lemmy.world
    link
    fedilink
    English
    arrow-up
    18
    ·
    1 year ago

    maybe something like this using mediainfo and exiftool?

    #!/bin/bash
    
    for file in *.jpg *.mp4; do
        # Extract date and time from file's metadata
        if [[ $file == *.jpg ]]; then
            datetime=$(exiftool -DateTimeOriginal -d "%Y%m%d_%H%M%S" "$file" | awk -F': ' '{print $2}')
        else
            datetime=$(mediainfo --Output="General;%File_Modified_Date%" "$file" | awk -F' ' '{print $1"_"$2}' | tr -d ':' | tr -d '-')
        fi
    
        # If datetime was found, rename the file 
        if [ -n "$datetime" ]; then
            # Extract extension of file 
            ext="${file##*.}"
            # Rename file with date and time as prefix (remove echo after testing it)
            echo mv -- "$file" "${datetime}.${ext}"
        fi
    
    done
    
  • db2@lemmy.one
    link
    fedilink
    English
    arrow-up
    8
    ·
    edit-2
    1 year ago

    Use ffprobe to get video info, it makes it dead easy. Practically a one liner.

  • 𝘋𝘪𝘳𝘬
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    You could use stat to get this information based on the file itself. And with jhead for example you can get the additional meta data in the files, stored in the EXIF and IPTC tags.

    Both can be used in scripts.

  • sibloure@beehaw.org
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    1
    ·
    1 year ago

    I’ve been using ChatGPT to help come up with bash scripts like this. Make sure you test the script out on a folder of dummy files first if you’re not sure.

    • Mechanize@feddit.it
      link
      fedilink
      English
      arrow-up
      6
      ·
      1 year ago

      Probably I’m misreading it, but isn’t this kind of answer basically saying “google it”?

      I don’t want to sound rude, but my english is kind of failing me, I’m just curious, but what’s the point?

      One of the reasons of this kind of public forum is to share knowledge and experiences. ChatGPT is a closed, private, garden where the answer will just die.

      I could get a “I don’t really know the answer but I used ChatGPT and it gave me this:” followed by a script, or something like that.

      I know, this is off-topic and I’m sorry, I’m just really interested in Why, considering it’s said multiple times in this comment section.

      • PoisonedPrisonPanda@discuss.tchncs.de
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        edit-2
        1 year ago

        chatgpt is built on the foundations of stackoverflow etc. therefore yeah it is kind of googling it.

        however the nature of the generative approach of chatgpt gives you tailored answers.

        when you google your question you get abstract answers for other related questions. with an explanation of how doing it. e.g. when I dont understand something but want to I will google it - to gain knowledge.

        but with chatpgt you can specify - hey I want a functiom that does this and that in prints me a string/double using that format. chatpgt gives me exactly what I want - without fiddling with format strings etc. anithet example is regex. for my field of experience I am no core developer, therefore for me everything is a tool to get what I want. chatpgt can give this me in a more comfortable way. I dont need to master regex. but it is very helpful. therefore Im outsourcing that kind of work.

        One of the reasons of this kind of public forum is to share knowledge and experiences. ChatGPT is a closed, private, garden where the answer will just die.

        I agree that for a general standpoint this is valid. however for such simple questions we do not need new forums asking about the already discussed stuff. this is just repetition and we do not like duplicates (which is why forum rules are strict about this)

        so I dont see any issue here.

        could get a “I don’t really know the answer but I used ChatGPT and it gave me this:” followed by a script, or something like that.

        that is the total responsibility by the user and has nothing to do with chatgpt. its the same as running ambiguous linux commands as sudo. its not the fault of stackoverflow, the reddit thread or linus itself. its the users fault.

        therefore if such thing you mentioned happens. but it can be rejected - one should now about the culprits and strenghts of chatgpt.

        edit: as you can see the top voted comment is a human made answer (could also be a chatpgt bot?).

        so we are not yet doomed. ;)

        • INeedMana@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          1 year ago

          AFAIK no and yes ;)

          It sends only the comment where the bot is referenced (no context, no chaining. Each comment is a separate prompt) and it does use the private account of the creator. In the topic where it got announced you can see that at some point it ran out of limit and started generating using 3.5

      • ChatGPT@lemmings.worldB
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        1 year ago

        Sure, here is a simple Bash script which uses the stat command to get the modification time of files. It looks specifically for .jpg and .mp4 files in the current directory and prints out the modification date and time, including seconds:

        #!/bin/bash
        
        # Iterate over .jpg and .mp4 files in the current directory
        for file in *.{jpg,mp4}; do
            # Check if the file exists before trying to extract the date
            if [ -e "$file" ]; then
                # Use stat to extract modification date and print it out
                echo "$file - Modification Date: $(stat -c %y "$file")"
            fi
        done
        

        This script will print out the filename along with its modification date for each .jpg and .mp4 file.

        You can use this script by saving it in a file (for example, filedate.sh), making it executable with chmod +x filedate.sh, and running it with ./filedate.sh.

        Please note that the date format of the stat command can vary based on your system. The %y format outputs the last modification time in human readable format (yyyy-mm-dd hh:mm:ss.sssssssss +zone). You might need to adjust this if you are using a system where stat behaves differently.

        Also keep in mind that this script does not traverse directories recursively. It only looks for the specified files in the directory where it is executed. If you need to perform this operation on files in subdirectories, you will need to modify the script slightly or use a different approach.

        • INeedMana@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          arrow-down
          1
          ·
          1 year ago

          @Pyrozo007@lemmy.dbzer0.com does it look like something you are looking for? The check for file existence is unneeded IMO and using the file variable name occludes another binary but in this case it shouldn’t hurt the execution

    • Gutless2615@ttrpg.network
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      edit-2
      1 year ago

      It literally is. This is a great use case for going down the chat gpt approach. It will help you throw together a script for this quickly.