Added way to import all the image to strapi
This commit is contained in:
parent
927e29d56f
commit
f45ca389ff
|
@ -1,3 +1,4 @@
|
||||||
|
.env*
|
||||||
public/videos
|
public/videos
|
||||||
node_modules
|
node_modules
|
||||||
ffprobe
|
ffprobe
|
||||||
|
|
|
@ -0,0 +1,202 @@
|
||||||
|
import os
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
# CONFIG
|
||||||
|
|
||||||
|
videoFolder = "public/videos/"
|
||||||
|
|
||||||
|
# END CONFIG
|
||||||
|
|
||||||
|
urlGraphQL = ""
|
||||||
|
accessToken = ""
|
||||||
|
|
||||||
|
|
||||||
|
def booleanToString(bool):
|
||||||
|
return "true" if bool else "false"
|
||||||
|
|
||||||
|
|
||||||
|
def query(query, variables={}, operationName=None):
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"query": query,
|
||||||
|
"variables": variables,
|
||||||
|
}
|
||||||
|
|
||||||
|
if operationName:
|
||||||
|
data["operationName"] = operationName
|
||||||
|
|
||||||
|
command = []
|
||||||
|
command += ["curl --request POST -s"]
|
||||||
|
command += ["--url " + urlGraphQL]
|
||||||
|
command += ["--header 'Authorization: Bearer " + accessToken + "'"]
|
||||||
|
command += ["--header 'Content-Type: application/json'"]
|
||||||
|
command += ["--data '" + json.dumps(data) + "'"]
|
||||||
|
|
||||||
|
command = " ".join(command)
|
||||||
|
# print(command)
|
||||||
|
ret = os.popen(command)
|
||||||
|
return ret.read()
|
||||||
|
|
||||||
|
|
||||||
|
with open(".env.local", "r") as configFile:
|
||||||
|
for line in configFile.readlines():
|
||||||
|
if line.startswith("URL_GRAPHQL="):
|
||||||
|
urlGraphQL = line[len("URL_GRAPHQL="):-1]
|
||||||
|
elif line.startswith("ACCESS_TOKEN="):
|
||||||
|
accessToken = line[len("ACCESS_TOKEN="):-1]
|
||||||
|
data = {}
|
||||||
|
|
||||||
|
previousUid = ""
|
||||||
|
for file in sorted(os.listdir(videoFolder)):
|
||||||
|
uid = file.split(".")[0]
|
||||||
|
extension = file.split(".")[1:]
|
||||||
|
if uid != previousUid:
|
||||||
|
previousUid = uid
|
||||||
|
data[uid] = {
|
||||||
|
"thumbnail": False,
|
||||||
|
"video": False,
|
||||||
|
"info": False,
|
||||||
|
"live_chat": False,
|
||||||
|
"gone": False,
|
||||||
|
"title": "",
|
||||||
|
"description": "",
|
||||||
|
"published_date": {
|
||||||
|
"year": 1970,
|
||||||
|
"month": 0,
|
||||||
|
"day": 0
|
||||||
|
},
|
||||||
|
"channel": {
|
||||||
|
"uid": "",
|
||||||
|
"title": "",
|
||||||
|
"subscribers": ""
|
||||||
|
},
|
||||||
|
"categories": [],
|
||||||
|
"views": 0,
|
||||||
|
"likes": 0,
|
||||||
|
"width": 0,
|
||||||
|
"height": 0,
|
||||||
|
"duration": 0,
|
||||||
|
"audio_languages": [],
|
||||||
|
"subs_languages": [],
|
||||||
|
"source": "YouTube"
|
||||||
|
}
|
||||||
|
if len(extension) == 0:
|
||||||
|
print("Unexpected file", file)
|
||||||
|
elif len(extension) == 1:
|
||||||
|
if extension[0] == "webp":
|
||||||
|
data[uid]["thumbnail"] = True
|
||||||
|
elif extension[0] == "mp4":
|
||||||
|
data[uid]["video"] = True
|
||||||
|
else:
|
||||||
|
print("Unexpected file", file)
|
||||||
|
elif len(extension) == 2:
|
||||||
|
if extension[0] == "info" and extension[1] == "json":
|
||||||
|
data[uid]["info"] = True
|
||||||
|
elif extension[0] == "live_chat" and extension[1] == "json":
|
||||||
|
data[uid]["live_chat"] = True
|
||||||
|
elif extension[1] == "vtt":
|
||||||
|
data[uid]["subs_languages"] += [extension[0]]
|
||||||
|
else:
|
||||||
|
print("Unexpected file", file)
|
||||||
|
|
||||||
|
|
||||||
|
for uid in data:
|
||||||
|
print(uid)
|
||||||
|
|
||||||
|
archive = data[uid]
|
||||||
|
if not archive["thumbnail"]:
|
||||||
|
print("Missing thumbnail for", uid)
|
||||||
|
if not archive["video"]:
|
||||||
|
print("Missing video for", uid)
|
||||||
|
if not archive["info"]:
|
||||||
|
print("Missing info for", uid)
|
||||||
|
|
||||||
|
with open(videoFolder + uid + ".info.json", "r") as jsonFile:
|
||||||
|
info = json.loads(jsonFile.read())
|
||||||
|
archive["title"] = info["title"].replace("'", "’")
|
||||||
|
archive["description"] = info["description"].replace("'", "’")
|
||||||
|
archive["views"] = info["view_count"]
|
||||||
|
archive["likes"] = info["like_count"] if "like_count" in info else 0
|
||||||
|
archive["width"] = info["width"]
|
||||||
|
archive["height"] = info["height"]
|
||||||
|
archive["duration"] = info["duration"]
|
||||||
|
archive["published_date"]["year"] = int(info["upload_date"][:4])
|
||||||
|
archive["published_date"]["month"] = int(info["upload_date"][4:6])
|
||||||
|
archive["published_date"]["day"] = int(info["upload_date"][6:8])
|
||||||
|
archive["channel"]["uid"] = info["channel_id"]
|
||||||
|
archive["channel"]["title"] = info["channel"]
|
||||||
|
archive["channel"]["subscribers"] = info["channel_follower_count"] if "channel_follower_count" in info else 0
|
||||||
|
|
||||||
|
# Create the Channel
|
||||||
|
|
||||||
|
createVideoChannel = '''
|
||||||
|
mutation {
|
||||||
|
createVideoChannel(
|
||||||
|
data: {
|
||||||
|
uid: "''' + archive["channel"]["uid"] + '''"
|
||||||
|
title: "''' + archive["channel"]["title"] + '''"
|
||||||
|
subscribers: ''' + str(archive["channel"]["subscribers"]) + '''
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
data {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
query(createVideoChannel, {}, "")
|
||||||
|
|
||||||
|
# Retrieve Channel ID
|
||||||
|
getVideoChannel = '''
|
||||||
|
query getVideoChannel($uid: String) {
|
||||||
|
videoChannels(filters: { uid: { eq: $uid } }) {
|
||||||
|
data {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
res = query(getVideoChannel, {
|
||||||
|
"uid": archive["channel"]["uid"]}, "getVideoChannel")
|
||||||
|
res = json.loads(res)
|
||||||
|
channelId = res["data"]["videoChannels"]["data"][0]["id"]
|
||||||
|
|
||||||
|
# Create Video
|
||||||
|
createVideo = \
|
||||||
|
'''
|
||||||
|
mutation {
|
||||||
|
createVideo(data: {
|
||||||
|
uid: "''' + uid + '''"
|
||||||
|
title: ''' + json.dumps(archive["title"]) + '''
|
||||||
|
published_date: {
|
||||||
|
year: ''' + str(archive["published_date"]["year"]) + '''
|
||||||
|
month: ''' + str(archive["published_date"]["month"]) + '''
|
||||||
|
day: ''' + str(archive["published_date"]["day"]) + '''
|
||||||
|
}
|
||||||
|
channel: ''' + channelId + '''
|
||||||
|
views: ''' + str(archive["views"]) + '''
|
||||||
|
likes: ''' + str(archive["likes"]) + '''
|
||||||
|
width: ''' + str(archive["width"]) + '''
|
||||||
|
height: ''' + str(archive["height"]) + '''
|
||||||
|
duration: ''' + str(archive["duration"]) + '''
|
||||||
|
source: ''' + archive["source"] + '''
|
||||||
|
gone: ''' + booleanToString(archive["gone"]) + '''
|
||||||
|
live_chat: ''' + booleanToString(archive["live_chat"]) + '''
|
||||||
|
description: ''' + json.dumps(archive["description"]) + '''
|
||||||
|
}) {
|
||||||
|
data {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'''
|
||||||
|
# print(createVideo)
|
||||||
|
|
||||||
|
res = query(createVideo)
|
||||||
|
if ("This attribute must be unique" not in res):
|
||||||
|
print(uid, res)
|
||||||
|
|
||||||
|
|
||||||
|
# exit()
|
Loading…
Reference in New Issue