Desde o início de dezembro, venho conduzindo um experimento para promover (hype, se quiser) no Twitter para o meu bot. Gosto dos resultados. Talvez alguém esteja interessado em como fazer uma campanha de publicidade online eficaz com orçamento quase zero. Capturas de tela, estatísticas, partes de código e histórias abaixo.
Teoria
Em minha opinião, a publicidade online em breve dominará ativamente os pequenos pontos sonoros. Cada vez mais, as pessoas estão começando a ouvir a Internet, e não apenas assisti-la. Rádio na Internet, Spotify, iTunes e uma série de outros serviços de escuta estão se tornando rapidamente populares. Até o Twitter trouxe tweets de áudio para o mercado. O crescimento do valor do som também é facilitado pelo aumento do número de aparelhos auditivos individuais - os fones de ouvido tornaram-se comuns, o que significa que a publicidade sonora pode ser individualizada e veiculada a um indivíduo, dependendo de suas preferências, como a publicidade contextual tradicional.
Prática
Já escrevi sobre meu bot para som em um artigo no Habr .
No início de dezembro, acrescentei a função de dublagem para gifs e fotos. Ou seja, você precisa enviar ao bot uma imagem como um arquivo e, em seguida, uma mensagem de voz. O bot retornará um pequeno vídeo que pode ser inserido em qualquer lugar. Experimentamos postar vídeos finalizados no Twitter para avaliar a reação e o "envolvimento" do usuário.
Para que o bot funcione corretamente na rede social, alguns problemas foram descobertos e corrigidos durante o teste. Em particular:
Corte de tempo.
. , - , , , . "" . :
.
/ 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"])
. - . , .

Talvez alguns anunciantes já possam usar meu bot para promover seus produtos e serviços. Você pode incluir seu logotipo ou imagem do produto na imagem ou adicionar uma mensagem sonora com um slogan. Vou continuar a melhorar a funcionalidade do programa por enquanto. Em um futuro próximo, pretendo complementar o bot com funções de nivelamento de som e tomadas de substituição. Embora não seja difícil adicionar o código para regravações de tomadas, a equalização da intensidade do som é uma tarefa não trivial, uma vez que, para fins publicitários, apenas a mudança na intensidade do som pode ser um fator de "captura".