[~] Refactor
This commit is contained in:
parent
ec7e2712eb
commit
5cb6394e27
@ -24,6 +24,7 @@ class tiktok_config_t:
|
||||
project_root: str=''
|
||||
cache: str=''
|
||||
videos: str=''
|
||||
audios: str=''
|
||||
|
||||
def tiktok_config() -> 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,
|
||||
'videos',
|
||||
)
|
||||
res.audios = os.path.join(
|
||||
res.cache,
|
||||
'audios',
|
||||
)
|
||||
|
||||
os.makedirs(res.videos, exist_ok=True)
|
||||
os.makedirs(res.audios, exist_ok=True)
|
||||
|
||||
return res
|
||||
|
||||
@ -269,6 +275,8 @@ def tiktok_videos_process(meta: Iterable[dict[str, Any]]) -> dict[str, Any]:
|
||||
error=0,
|
||||
)
|
||||
|
||||
song = audio_get()
|
||||
|
||||
for o in tqdm.tqdm(meta):
|
||||
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]
|
||||
|
||||
print(processed_path)
|
||||
if not os.path.exists(path) or os.path.exists(processed_path):
|
||||
stats['skipped'] += 1
|
||||
continue
|
||||
|
||||
subprocess.check_call([
|
||||
'ffmpeg','-i', path, '-filter:v', 'setpts=0.5*PTS', processed_path,
|
||||
])
|
||||
ffmpeg = [
|
||||
'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
|
||||
except KeyboardInterrupt:
|
||||
break
|
||||
@ -299,3 +321,44 @@ def tiktok_videos_process(meta: Iterable[dict[str, Any]]) -> dict[str, Any]:
|
||||
stats['error'] += 1
|
||||
|
||||
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,
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user