-
Notifications
You must be signed in to change notification settings - Fork 0
/
favtucc.py
113 lines (79 loc) · 3.17 KB
/
favtucc.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
"""
The command to download videos ==> yt-dlp -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' -o 'orginput.%(ext)s' [LINK]
"""
import datetime
import subprocess
import sys
import os
import json
# Open the JSON file in read mode
with open('channels.json', 'r', encoding="utf-8") as f:
# Load the contents of the file into a Python object
jsonData = json.load(f)
channelsMetadata = jsonData["fullArray"]
def seconds_to_timestamp(seconds):
return str(datetime.timedelta(seconds=seconds))
def get_duration(input_video):
cmd = 'ffprobe -i {} -show_entries format=duration -v quiet -of csv="p=0"'.format(input_video)
output = subprocess.check_output(cmd, shell=True)
return float(output)
def run_command(cmd):
return subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).communicate()[0]
def write_outfiles_to_txt(txtmsg):
txt = open("./filestomerge.txt", "w", encoding="utf-8")
txt.write(txtmsg)
txt.close()
def clean_files(filesArr):
import os
for i in range(len(filesArr)):
os.remove(filesArr[i])
print("WYCZYSZCZONO FOLDER 'tempvids'!")
def current_vid_num():
currentVidNum = -1
fileWithStoredNum = open("./__new.txt", "r")
currLine = fileWithStoredNum.readline().strip()
# print(int(currLines))
currentVidNum = int(currLine)
fileWithStoredNum.close()
return currentVidNum
def ow_current_vid_num(currentNewNum):
fileWithStoredNum = open("./__new.txt", "w")
fileWithStoredNum.write(str(currentNewNum))
fileWithStoredNum.close()
def current_yt_vid():
currentVid = ""
fileWithStoredNum = open("./__nvut.txt", "r")
currLine = fileWithStoredNum.readline().strip()
currentVidId = str(currLine)
currLine = fileWithStoredNum.readline().strip()
currentVidDate = str(currLine)
fileWithStoredNum.close()
return [currentVidId, currentVidDate]
def ow_current_yt_vid(currentNewId, currentNewDate):
print("NADPISUJE DANE W PLIKU '__nvut.txt'!")
fileWithStoredNum = open("./__nvut.txt", "w", encoding="utf-8")
fileWithStoredNum.write(str(currentNewId)+"\n")
fileWithStoredNum.write(str(currentNewDate))
fileWithStoredNum.close()
def parse_and_check_new_yt_vid(chosenChannel):
import feedparser
ytChannel = feedparser.parse("https://www.youtube.com/feeds/videos.xml?channel_id={}".format(channelsMetadata[chosenChannel]["channelID"]))
newestVideoId = ytChannel.entries[0].yt_videoid
print(newestVideoId)
newestVideoDate = ytChannel.entries[0].published
print(newestVideoDate)
funcReturnedId, funcReturnedDate = current_yt_vid()
if (funcReturnedId != newestVideoId) and (funcReturnedDate != newestVideoDate):
vLINK = "https://www.youtube.com/watch?v="+newestVideoId
os.remove("orginput.mp4")
run_command("yt-dlp -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' -o 'orginput.%(ext)s' {}".format(vLINK))
ow_current_yt_vid(newestVideoId, newestVideoDate)
else:
print("Video is already up to date!")
sys.exit(0)
return [newestVideoId, newestVideoDate]
# CONST
DEF_START = 120 # seconds
END_POSTFIX = 40 # seconds
TEMPVIDS_FOLDER = "./tempvids/"
CURRENT_VIDEO_NUMBER = current_vid_num()