12月の初め頃から、Twitterでボットを宣伝する実験を行っています(必要に応じて誇大広告)。結果が気に入っています。おそらく誰かが、ほぼゼロの予算で効果的なオンライン広告キャンペーンを作成する方法に興味を持つでしょう。以下のスクリーンショット、統計、コードパーツ、ストーリー。
理論
私の意見では、オンライン広告はまもなく積極的に短いサウンドスポットをマスターするでしょう。人々はますます、インターネットを見るだけでなく、聞くようになっています。インターネットラジオ、Spotify、iTunes、およびその他の多数のワイヤータップサービスが急速に主流になりつつあります。Twitterでさえオーディオツイートを市場に出しました。サウンドの価値の成長は、個々のリスニングデバイスの数の増加によっても促進されます。ヘッドフォンは一般的になりました。つまり、従来のコンテキスト広告のように、好みに応じてサウンド広告を個別化して個人に提供できます。
練習
私はすでにHabrの記事でsoundoji用のボットについて書いています。
12月上旬に、gifや写真の音声演技機能を追加しました。つまり、ボットに画像をファイルとして送信してから、音声メッセージを送信する必要があります。ボットは、どこにでも挿入できる短いビデオスポットを返します。完成したビデオをTwitterに投稿して、ユーザーの反応と「エンゲージメント」を測定する実験を行いました。
ボットがソーシャルネットワーク上で正しく動作するために、テスト中にいくつかの問題が発見され、修正されました。特に:
時間のトリミング。
. , - , , , . "" . :
.
/ ffmpeg
PWF
-->
cmd
--> system
python os
connect_video_voice
, .
.
def connect_photo_audio(self,imagepath, audiopath, name=urandom(30).hex()):
targetvideotype = "mp4"
cmd(f'ffmpeg -y -loop 1 -i "{imagepath}" -i "{audiopath}" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pixfmt yuv420p -shortest -vf "scale=trunc(iw/2)2:trunc(ih/2)2" "{self.PWF}/{targetvideotype}/{name}.{targetvideotype}"')
return f'{self.PWF}{targetvideotype}/{name}.{targetvideo_type}'
def connect_video_voice(self,videopath, audiopath, name=urandom(30).hex(),):
sourcevideotype = "mp4"
cmd(f'ffmpeg -streamloop -1 -i "{videopath}" -i "{audiopath}" -shortest -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y "{self.PWF}/{sourcevideotype}/{name}.{sourcevideotype}"')
return f'{self.PWF}/{sourcevideotype}/{name}.{sourcevideo_type}'
, , , .
f"ffmpeg -stream_loop -1 -i "{video_path}" -i "{audio_path}" -shortest -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y "{self.PWF}/{source_video_type}/{name}.{source_video_type}"
, :
PyTelegramBotAPI
, message.voice
. duration
, .
if message.voice.duration > 60:
self.BOT.send_message(message.fromuser.id, "Your message too long. Max size of message: 1 minute")
return
"" . - , . "" . .
.
, .
get_users_graphic__activity__
, /activity .
, /activity , helper, .
create_graphic_activity
--> , .
limit
--> , . limit
/activity 3 3 .
def get_users_graphic__activity__(self):
if self.MESSAGE.chat.id in HELPERS or self.MESSAGE.chat.id == ADMIN_USER_ID:
graphic = create_graphic_activity()
if graphic:
try:
limit = int(re.sub('\D', '', self.MESSAGE.text))
except Exception:
limit = 7
self.BOT.send_photo(self.MESSAGE.chat.id, photo=create_graphic_activity(limit=limit))
else:
self.BOT.send_message(self.MESSAGE.chat.id, LANGUAGES["commands"]["server_crashed"])
else:
self.BOT.send_message(self.MESSAGE.chat.id,LANGUAGES["commands"]["you_not_have_permissions"])
. - . , .
おそらく、一部の広告主はすでに私のボットを使用して製品やサービスを宣伝できます。写真にロゴや製品画像を含めたり、スローガン付きのサウンドメッセージを追加したりできます。今のところ、プログラムの機能を改善していきます。近い将来、ボットにサウンドレベリング機能と上書きテイクを追加する予定です。テイクを再録音するためのコードを追加することは難しくありませんが、広告目的ではサウンドパワーを変更するだけで「キャッチ」要素になる可能性があるため、サウンドパワーを均等化することは簡単な作業ではありません。