CSVからキャプションを生成する機能を作りました

Programming

毎回毎回インスタグラムの投稿内容をコピペしてキャプションを作るのはめんどくさい!

ということで、今回はCSVファイルからキャプションを自動生成する機能を作りました。

実は超簡単に作れるし、なんならAIに聞けば超手厚いサポートもしてくれるので
プログラマーじゃなくてコードとか全くわからん!
みたいな方にも試していただけたらいいなと思っています💭

1.CSVファイル作成

キャプション内で使う変数をCSVファイルにまとめます。

今回の場合は『CSVファイルからイラレに文字・画像を流し込んだ話』で作ったCSVファイルをそのまま使用しました。

2.CSVファイル取り込み&変数指定

# 取り込むCSVファイルパス
csv_file="/Users/harup/Desktop/ipad/csv/Instagram_2024.csv"
# 行数指定
target_row=$1

# 取り込むCSVデータ colで列を指定
title=$(awk -F, -v row=$target_row -v col=2 'NR==row {print $col}' $csv_file)
title_1=$(awk -F, -v row=$target_row -v col=4 'NR==row {print $col}' $csv_file)
title_2=$(awk -F, -v row=$target_row -v col=6 'NR==row {print $col}' $csv_file)
title_3=$(awk -F, -v row=$target_row -v col=8 'NR==row {print $col}' $csv_file)
title_4=$(awk -F, -v row=$target_row -v col=10 'NR==row {print $col}' $csv_file)
title_5=$(awk -F, -v row=$target_row -v col=12 'NR==row {print $col}' $csv_file)
title_6=$(awk -F, -v row=$target_row -v col=14 'NR==row {print $col}' $csv_file)

3.テキストファイルにキャプション生成

cat << EOM > caption.txt
@harupyade 👈iPadノートに関する投稿はこちらから
🔖${subtitle} ${title}
01 : ${title_1}
02 : ${title_2}
03 : ${title_3}
---省略---
#iPad活用 #iPad活用法 #iPad活用術 #iPad活用方法 #iPadの使い方 #iPad初心者
#暮らし記録 #くらしきろく #デジタル文房具
${hashtag}
EOM

これで完成です!

【番外編】ハッシュタグについて

ハッシュタグって毎回全く同じは嫌だけど時と場合に合わせて選ぶのも面倒だなぁと思っていました。

そこで、内容を指定することでハッシュタグも出力させるようにしました。

※英語版でも投稿しているため、$languageも加えています。

language=$2
hashtag=$3
# ハッシュタグ
if [[ $language = "ja" && $hashtag = "Goodnotes" ]]; then
    hashtag=$(cat << 'EOM'
#Goodnotes6 #Goodnotes活用
#goodnotestips #goodnotesplanner
#GoodnotesAmbassador #GoodnotesPartner #TeamGoodnotes #Goodnotes
EOM
)
elif [[ $language = "ja" && $hashtag = "study" ]]; then
    hashtag=$(cat << 'EOM'
#勉強垢 #iPadノート #iPad勉強 #iPad勉強法 #studygram #モチベーション
#GoodnotesAmbassador #GoodnotesPartner #TeamGoodnotes #Goodnotes
EOM
)
elif [[ $language = "ja" && $hashtag = "planner" ]]; then
    hashtag=$(cat << 'EOM'
#手帳 #デジタル手帳 #手帳術 #デジタルプランナー #digitalplanner
#Goodnotes6 #Goodnotes活用 #GoodnotesAmbassador #GoodnotesPartner #TeamGoodnotes #Goodnotes
EOM
)
fi

全体像と使い方

以下を実行することで、「caption.txt」ファイルにキャプションを出力することができます。

例:sh caption.sh 2 ja Goodnotes

#!/bin/bash

# 使い方
# sh caption.sh 2 ja Goodnotes

# CSVファイルのパスと行番号、列番号を引数から取得
csv_file="/Users/harup/Desktop/ipad/csv/Instagram_2024.csv"
target_row=$1
language=$2
hashtag=$3
item_name=$4

# ファイルが存在しない、または引数が不足している場合はエラーメッセージを表示して終了
if [ ! -f "$csv_file" ]; then
    echo "指定されたファイルが存在しません: $csv_file"
    exit 1
fi

# ハッシュタグ
if [[ $language = "ja" && $hashtag = "Goodnotes" ]]; then
    hashtag=$(cat << 'EOM'
#Goodnotes6 #Goodnotes活用
#goodnotestips #goodnotesplanner
#GoodnotesAmbassador #GoodnotesPartner #TeamGoodnotes #Goodnotes
EOM
)
elif [[ $language = "ja" && $hashtag = "study" ]]; then
    hashtag=$(cat << 'EOM'
#勉強垢 #iPadノート #iPad勉強 #iPad勉強法 #studygram #モチベーション
#GoodnotesAmbassador #GoodnotesPartner #TeamGoodnotes #Goodnotes
EOM
)
elif [[ $language = "ja" && $hashtag = "planner" ]]; then
    hashtag=$(cat << 'EOM'
#手帳 #デジタル手帳 #手帳術 #デジタルプランナー #digitalplanner
#Goodnotes6 #Goodnotes活用 #GoodnotesAmbassador #GoodnotesPartner #TeamGoodnotes #Goodnotes
EOM
)
fi

# アイテム名が指定されている場合
if [ -n "$item_name" ]; then
    item=$(cat << EOMㅤ
▼くらしきろく デジタル文房具
・『${item_name}』
ㅤ
[購入方法]
IG→@harupyade の リンクから🔗
ㅤ
EOM
)
fi

# 指定された行と列のデータを抽出
subtitle=$(awk -F, -v row=$target_row -v col=1 'NR==row {print $col}' $csv_file)
title=$(awk -F, -v row=$target_row -v col=2 'NR==row {print $col}' $csv_file)
title_1=$(awk -F, -v row=$target_row -v col=4 'NR==row {print $col}' $csv_file)
title_2=$(awk -F, -v row=$target_row -v col=6 'NR==row {print $col}' $csv_file)
title_3=$(awk -F, -v row=$target_row -v col=8 'NR==row {print $col}' $csv_file)
title_4=$(awk -F, -v row=$target_row -v col=10 'NR==row {print $col}' $csv_file)
title_5=$(awk -F, -v row=$target_row -v col=12 'NR==row {print $col}' $csv_file)
title_6=$(awk -F, -v row=$target_row -v col=14 'NR==row {print $col}' $csv_file)
other_title_1=$(awk -F, -v row=$target_row -v col=16 'NR==row {print $col}' $csv_file)
# 抽出したテキストを表示

# 言語指定
if [ $language = "ja" ]; then
cat << EOM > caption.txt
@harupyade 👈iPadノートに関する投稿はこちらから
🔖${subtitle} ${title}
01 : ${title_1}
02 : ${title_2}
03 : ${title_3}
04 : ${title_4}
05 : ${title_5}
06 : ${title_6}
07 : ${other_title_1}
ㅤ
🌟 この投稿を作った理由

ㅤ
💌 お願い
参考になった!という方は「いいね」&「保存」をよろしくお願いします!
ㅤ
今後の投稿作りの参考になりかつ、
何より私のモチベになります✨
ㅤ
他の投稿はこちらから
→ @harupyade
ㅤ
- - - - - - - - - - - - -
🖥 使っているもの 🍎
- - - - - - - - - - - - -
▼ガジェットㅤ
・iPad Pro 11インチ 第3世代
・Apple pencil 第2世代

▼アプリ
・Goodnotes @goodnotes.app.jp
${item}
- - - - - - - - - - - - -
📔 くらしきろく ✍🏻
- - - - - - - - - - - - -
シンプル・使いやすいにこだわった
デジタル文房具やさん『くらしきろく』を運営しています。
ㅤ
暮らしを記録し、人生に彩りを加えていただきたい。
そんな思いで様々なデジタル文房具を制作・販売🎨
ㅤ
デジタルで手書きを楽しむためのアイテムも盛りだくさん✨
無料お試し商品も配信中📮
IG→@harupyade の リンクから🔗
ㅤ
- - - - - - - -
ㅤ
#iPad活用 #iPad活用法 #iPad活用術 #iPad活用方法 #iPadの使い方 #iPad初心者
#暮らし記録 #くらしきろく #デジタル文房具
${hashtag}
EOM

elif [ $language = "en" ]; then
echo "English"
fi

最後に。

iPadで使える文房具、デジタル文房具を楽しむコツをインスタグラムにてお届けしています📮

のぞきに来ていただけると嬉しいです!

Instagram @harupyade

コメント

タイトルとURLをコピーしました