[~] Refactor

This commit is contained in:
Siarhei Siniak 2024-07-06 17:43:37 +03:00
parent ec7e2712eb
commit 5cb6394e27

@ -24,6 +24,7 @@ class tiktok_config_t:
project_root: str='' project_root: str=''
cache: str='' cache: str=''
videos: str='' videos: str=''
audios: str=''
def tiktok_config() -> tiktok_config_t.res_t: def tiktok_config() -> tiktok_config_t.res_t:
res = tiktok_config_t.res_t( res = tiktok_config_t.res_t(
@ -43,8 +44,13 @@ def tiktok_config() -> tiktok_config_t.res_t:
res.cache, res.cache,
'videos', 'videos',
) )
res.audios = os.path.join(
res.cache,
'audios',
)
os.makedirs(res.videos, exist_ok=True) os.makedirs(res.videos, exist_ok=True)
os.makedirs(res.audios, exist_ok=True)
return res return res
@ -269,6 +275,8 @@ def tiktok_videos_process(meta: Iterable[dict[str, Any]]) -> dict[str, Any]:
error=0, error=0,
) )
song = audio_get()
for o in tqdm.tqdm(meta): for o in tqdm.tqdm(meta):
stats['total'] += 1 stats['total'] += 1
@ -282,13 +290,27 @@ def tiktok_videos_process(meta: Iterable[dict[str, Any]]) -> dict[str, Any]:
processed_path = path_parts[0] + '-proc' + path_parts[1] processed_path = path_parts[0] + '-proc' + path_parts[1]
print(processed_path)
if not os.path.exists(path) or os.path.exists(processed_path): if not os.path.exists(path) or os.path.exists(processed_path):
stats['skipped'] += 1 stats['skipped'] += 1
continue continue
subprocess.check_call([ ffmpeg = [
'ffmpeg','-i', path, '-filter:v', 'setpts=0.5*PTS', processed_path, 'ffmpeg',
]) '-i', path,
'-i', song.path_mp3,
'-shortest',
'-vf',
','.join([
'setpts=1.1*PTS',
'scale=trunc(iw/0.9):trunc(ow/a/2)*2',
]),
'-sws_flags', 'bilinear',
'-map', '0:v:0',
'-map', '1:a:0',
processed_path,
]
subprocess.check_call(ffmpeg)
stats['saved'] += 1 stats['saved'] += 1
except KeyboardInterrupt: except KeyboardInterrupt:
break break
@ -299,3 +321,44 @@ def tiktok_videos_process(meta: Iterable[dict[str, Any]]) -> dict[str, Any]:
stats['error'] += 1 stats['error'] += 1
return stats return stats
class audio_get_t:
@dataclasses.dataclass
class res_t:
file: str
file_mp3: str
path: str
path_mp3: str
url: str
def audio_get() -> audio_get_t.res_t:
c = tiktok_config()
url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
file = 'song.dat'
file_mp3 = 'song.mp3'
path = os.path.join(c.audios, file)
path_mp3 = os.path.join(c.audios, file_mp3)
if not os.path.exists(path):
subprocess.check_call([
'yt-dlp',
'-f', 'bestaudio',
url,
'-o', path,
])
if not os.path.exists(path_mp3):
subprocess.check_call([
'ffmpeg',
'-i', path,
path_mp3,
])
return audio_get_t.res_t(
file=file,
file_mp3=file_mp3,
path=path,
path_mp3=path_mp3,
url=url,
)