videos: remove video uploads lol

This commit is contained in:
justcool393 2023-02-17 19:26:40 -08:00 committed by GitHub
parent 0f10e1ea16
commit 872d9c613b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 30 additions and 136 deletions

View file

@ -8,7 +8,6 @@ HCAPTCHA_SECRET=blahblahblah
YOUTUBE_KEY=blahblahblah YOUTUBE_KEY=blahblahblah
PUSHER_ID=blahblahblah PUSHER_ID=blahblahblah
PUSHER_KEY=blahblahblah PUSHER_KEY=blahblahblah
IMGUR_KEY=blahblahblah
SPAM_SIMILARITY_THRESHOLD=0.5 SPAM_SIMILARITY_THRESHOLD=0.5
SPAM_URL_SIMILARITY_THRESHOLD=0.1 SPAM_URL_SIMILARITY_THRESHOLD=0.1
SPAM_SIMILAR_COUNT_THRESHOLD=10 SPAM_SIMILAR_COUNT_THRESHOLD=10

View file

@ -86,7 +86,7 @@ from .volunteer_janitor import VolunteerJanitorRecord
# Then the import * from files.* # Then the import * from files.*
from files.helpers.const import * from files.helpers.const import *
from files.helpers.images import * from files.helpers.media import *
from files.helpers.lazy import * from files.helpers.lazy import *
from files.helpers.security import * from files.helpers.security import *

View file

@ -1,7 +1,7 @@
from sqlalchemy.orm import deferred, aliased from sqlalchemy.orm import deferred, aliased
from secrets import token_hex from secrets import token_hex
import pyotp import pyotp
from files.helpers.images import * from files.helpers.media import *
from files.helpers.const import * from files.helpers.const import *
from .alts import Alt from .alts import Alt
from .saves import * from .saves import *

View file

@ -50,7 +50,6 @@ SORTS_POSTS = {
SORTS_POSTS.update(SORTS_COMMON) SORTS_POSTS.update(SORTS_COMMON)
SORTS_COMMENTS = SORTS_COMMON SORTS_COMMENTS = SORTS_COMMON
IMGUR_KEY = environ.get("IMGUR_KEY").strip()
PUSHER_ID = environ.get("PUSHER_ID", "").strip() PUSHER_ID = environ.get("PUSHER_ID", "").strip()
PUSHER_KEY = environ.get("PUSHER_KEY", "").strip() PUSHER_KEY = environ.get("PUSHER_KEY", "").strip()
DEFAULT_COLOR = environ.get("DEFAULT_COLOR", "fff").strip() DEFAULT_COLOR = environ.get("DEFAULT_COLOR", "fff").strip()

View file

@ -1,10 +1,10 @@
from PIL import Image, ImageOps
from PIL.ImageSequence import Iterator
from webptools import gifwebp
import subprocess import subprocess
from flask import Request
from PIL import Image, ImageOps
from webptools import gifwebp
def process_image(filename=None, resize=0): def process_image(filename=None, resize=0):
i = Image.open(filename) i = Image.open(filename)
if resize and i.width > resize: if resize and i.width > resize:

View file

@ -1,13 +1,11 @@
import time import time
from os import remove
from PIL import Image as IMAGE
from files.helpers.wrappers import * from files.helpers.wrappers import *
from files.helpers.alerts import * from files.helpers.alerts import *
from files.helpers.sanitize import * from files.helpers.sanitize import *
from files.helpers.security import * from files.helpers.security import *
from files.helpers.get import * from files.helpers.get import *
from files.helpers.images import * from files.helpers.media import *
from files.helpers.const import * from files.helpers.const import *
from files.classes import * from files.classes import *
from flask import * from flask import *
@ -16,7 +14,6 @@ from .front import frontlist
from files.helpers.comments import comment_on_publish, comment_on_unpublish from files.helpers.comments import comment_on_publish, comment_on_unpublish
from datetime import datetime from datetime import datetime
import requests import requests
from urllib.parse import quote, urlencode
month = datetime.now().strftime('%B') month = datetime.now().strftime('%B')

View file

@ -1,6 +1,6 @@
from files.helpers.wrappers import * from files.helpers.wrappers import *
from files.helpers.alerts import * from files.helpers.alerts import *
from files.helpers.images import * from files.helpers.media import process_image
from files.helpers.const import * from files.helpers.const import *
from files.helpers.comments import comment_on_publish from files.helpers.comments import comment_on_publish
from files.classes import * from files.classes import *
@ -152,22 +152,7 @@ def api_comment(v):
body += f"\n\n![]({image})" body += f"\n\n![]({image})"
else: else:
body += f'\n\n<a href="{image}">{image}</a>' body += f'\n\n<a href="{image}">{image}</a>'
elif file.content_type.startswith('video/'): else: abort(400, "Image files only")
file.save("video.mp4")
with open("video.mp4", 'rb') as f:
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
try: url = req['link']
except:
error = req['error']
if error == 'File exceeds max duration': error += ' (60 seconds)'
abort(400, error)
if url.endswith('.'): url += 'mp4'
if app.config['MULTIMEDIA_EMBEDDING_ENABLED']:
body += f"\n\n{url}"
else:
body += f'\n\n<a href="{url}">{url}</a>'
else: abort(400, "Image/Video files only")
body_html = sanitize(body, comment=True) body_html = sanitize(body, comment=True)
@ -330,19 +315,7 @@ def edit_comment(cid, v):
file.save(name) file.save(name)
url = process_image(name) url = process_image(name)
body += f"\n\n![]({url})" body += f"\n\n![]({url})"
elif file.content_type.startswith('video/'): else: abort(400, "Image files only")
file.save("video.mp4")
with open("video.mp4", 'rb') as f:
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
try: url = req['link']
except:
error = req['error']
if error == 'File exceeds max duration': error += ' (60 seconds)'
abort(400, error)
if url.endswith('.'): url += 'mp4'
body += f"\n\n{url}"
else: abort(400, "Image/Video files only")
body_html = sanitize(body, edit=True) body_html = sanitize(body, edit=True)

View file

@ -6,6 +6,7 @@ from files.helpers.alerts import *
from files.helpers.comments import comment_filter_moderated from files.helpers.comments import comment_filter_moderated
from files.helpers.contentsorting import sort_objects from files.helpers.contentsorting import sort_objects
from files.helpers.const import * from files.helpers.const import *
from files.helpers.media import process_image
from files.helpers.strings import sql_ilike_clean from files.helpers.strings import sql_ilike_clean
from files.classes import * from files.classes import *
from flask import * from flask import *
@ -320,22 +321,7 @@ def edit_post(pid, v):
body += f"\n\n![]({url})" body += f"\n\n![]({url})"
else: else:
body += f'\n\n<a href="{url}">{url}</a>' body += f'\n\n<a href="{url}">{url}</a>'
elif file.content_type.startswith('video/'): else: abort(400, "Image files only")
file.save("video.mp4")
with open("video.mp4", 'rb') as f:
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
try: url = req['link']
except:
error = req['error']
if error == 'File exceeds max duration': error += ' (60 seconds)'
abort(400, error)
if url.endswith('.'): url += 'mp4'
if app.config['MULTIMEDIA_EMBEDDING_ENABLED']:
body += f"\n\n![]({url})"
else:
body += f'\n\n<a href="{url}">{url}</a>'
else: abort(400, "Image/Video files only")
body_html = sanitize(body, edit=True) body_html = sanitize(body, edit=True)
@ -739,23 +725,8 @@ def submit_post(v, sub=None):
body += f"\n\n![]({image})" body += f"\n\n![]({image})"
else: else:
body += f'\n\n<a href="{image}">{image}</a>' body += f'\n\n<a href="{image}">{image}</a>'
elif file.content_type.startswith('video/'):
file.save("video.mp4")
with open("video.mp4", 'rb') as f:
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
except requests.Timeout: return error("Video upload timed out, please try again!")
try: url = req['link']
except:
err = req['error']
if err == 'File exceeds max duration': err += ' (60 seconds)'
return error(err)
if url.endswith('.'): url += 'mp4'
if app.config['MULTIMEDIA_EMBEDDING_ENABLED']:
body += f"\n\n![]({url})"
else:
body += f'\n\n<a href="{url}">{url}</a>'
else: else:
return error("Image/Video files only.") return error("Image files only")
body_html = sanitize(body) body_html = sanitize(body)
@ -809,21 +780,9 @@ def submit_post(v, sub=None):
name2 = name.replace('.webp', 'r.webp') name2 = name.replace('.webp', 'r.webp')
copyfile(name, name2) copyfile(name, name2)
post.thumburl = process_image(name2, resize=100) post.thumburl = process_image(name2, resize=100)
elif file.content_type.startswith('video/'):
file.save("video.mp4")
with open("video.mp4", 'rb') as f:
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
except requests.Timeout: return error("Video upload timed out, please try again!")
try: url = req['link']
except:
err = req['error']
if err == 'File exceeds max duration': err += ' (60 seconds)'
return error(err)
if url.endswith('.'): url += 'mp4'
post.url = url
else: else:
return error("Image/Video files only.") return error("Image files only")
if not post.thumburl and post.url: if not post.thumburl and post.url:
gevent.spawn(thumbnail_thread, post.id) gevent.spawn(thumbnail_thread, post.id)

View file

@ -1,4 +1,5 @@
from files.helpers.alerts import * from files.helpers.alerts import *
from files.helpers.media import process_image
from files.helpers.sanitize import * from files.helpers.sanitize import *
from files.helpers.const import * from files.helpers.const import *
from files.mail import * from files.mail import *
@ -171,21 +172,9 @@ def settings_profile_post(v):
file.save(name) file.save(name)
url = process_image(name) url = process_image(name)
bio += f"\n\n![]({url})" bio += f"\n\n![]({url})"
elif file.content_type.startswith('video/'):
file.save("video.mp4")
with open("video.mp4", 'rb') as f:
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
try: url = req['link']
except:
error = req['error']
if error == 'File exceeds max duration': error += ' (60 seconds)'
abort(400, error)
if url.endswith('.'): url += 'mp4'
bio += f"\n\n{url}"
else: else:
if request.headers.get("Authorization") or request.headers.get("xhr"): abort(400, "Image/Video files only") if request.headers.get("Authorization") or request.headers.get("xhr"): abort(400, "Image files only")
return render_template("settings_profile.html", v=v, error="Image/Video files only."), 400 return render_template("settings_profile.html", v=v, error="Image files only"), 400
bio_html = sanitize(bio) bio_html = sanitize(bio)

View file

@ -1,3 +1,4 @@
from files.helpers.media import process_image
from files.mail import * from files.mail import *
from files.__main__ import app, limiter, mail from files.__main__ import app, limiter, mail
from files.helpers.alerts import * from files.helpers.alerts import *
@ -311,19 +312,7 @@ def submit_contact(v: Optional[User]):
file.save(name) file.save(name)
url = process_image(name) url = process_image(name)
html += f'<img data-bs-target="#expandImageModal" data-bs-toggle="modal" onclick="expandDesktopImage(this.src)" class="img" src="{url}" loading="lazy">' html += f'<img data-bs-target="#expandImageModal" data-bs-toggle="modal" onclick="expandDesktopImage(this.src)" class="img" src="{url}" loading="lazy">'
elif file.content_type.startswith('video/'): else: abort(400, "Image files only")
file.save("video.mp4")
with open("video.mp4", 'rb') as f:
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
try: url = req['link']
except:
error = req['error']
if error == 'File exceeds max duration': error += ' (60 seconds)'
abort(400, error)
if url.endswith('.'): url += 'mp4'
html += f"<p>{url}</p>"
else: abort(400, "Image/Video files only")
new_comment = Comment(author_id=v.id if v else NOTIFICATIONS_ID, new_comment = Comment(author_id=v.id if v else NOTIFICATIONS_ID,
parent_submission=None, parent_submission=None,

View file

@ -4,6 +4,7 @@ import time
import math import math
from files.classes.views import ViewerRelationship from files.classes.views import ViewerRelationship
from files.helpers.alerts import * from files.helpers.alerts import *
from files.helpers.media import process_image
from files.helpers.sanitize import * from files.helpers.sanitize import *
from files.helpers.strings import sql_ilike_clean from files.helpers.strings import sql_ilike_clean
from files.helpers.const import * from files.helpers.const import *
@ -602,19 +603,7 @@ def messagereply(v):
file.save(name) file.save(name)
url = process_image(name) url = process_image(name)
body_html += f'<img data-bs-target="#expandImageModal" data-bs-toggle="modal" onclick="expandDesktopImage(this.src)" class="img" src="{url}" loading="lazy">' body_html += f'<img data-bs-target="#expandImageModal" data-bs-toggle="modal" onclick="expandDesktopImage(this.src)" class="img" src="{url}" loading="lazy">'
elif file.content_type.startswith('video/'): else: abort(400, "Image files only")
file.save("video.mp4")
with open("video.mp4", 'rb') as f:
try: req = requests.request("POST", "https://api.imgur.com/3/upload", headers={'Authorization': f'Client-ID {IMGUR_KEY}'}, files=[('video', f)], timeout=5).json()['data']
except requests.Timeout: abort(500, "Video upload timed out, please try again!")
try: url = req['link']
except:
error = req['error']
if error == 'File exceeds max duration': error += ' (60 seconds)'
abort(400, error)
if url.endswith('.'): url += 'mp4'
body_html += f"<p>{url}</p>"
else: abort(400, "Image/Video files only")
c = Comment(author_id=v.id, c = Comment(author_id=v.id,

View file

@ -521,7 +521,7 @@
&nbsp; &nbsp;
<label class="btn btn-secondary format m-0" for="file-upload-reply-{{c.fullname}}"> <label class="btn btn-secondary format m-0" for="file-upload-reply-{{c.fullname}}">
<div id="filename-show-reply-{{c.fullname}}"><i class="far fa-image"></i></div> <div id="filename-show-reply-{{c.fullname}}"><i class="far fa-image"></i></div>
<input autocomplete="off" id="file-upload-reply-{{c.fullname}}" type="file" multiple="multiple" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-reply-{{c.fullname}}','file-upload-reply-{{c.fullname}}')" hidden> <input autocomplete="off" id="file-upload-reply-{{c.fullname}}" type="file" multiple="multiple" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-reply-{{c.fullname}}','file-upload-reply-{{c.fullname}}')" hidden>
</label> </label>
</div> </div>
<a id="save-reply-to-{{c.fullname}}" class="btn btn-primary ml-2 fl-r commentmob" onclick="post_comment('{{c.fullname}}', '{{c.post.id}}', {{level}})"role="button">Comment</a> <a id="save-reply-to-{{c.fullname}}" class="btn btn-primary ml-2 fl-r commentmob" onclick="post_comment('{{c.fullname}}', '{{c.post.id}}', {{level}})"role="button">Comment</a>
@ -559,7 +559,7 @@
{% if c.sentto == MODMAIL_ID %} {% if c.sentto == MODMAIL_ID %}
<label class="btn btn-secondary m-0 mt-3" for="file-upload"> <label class="btn btn-secondary m-0 mt-3" for="file-upload">
<div id="filename"><i class="far fa-image"></i></div> <div id="filename"><i class="far fa-image"></i></div>
<input autocomplete="off" id="file-upload" type="file" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename','file-upload')" hidden> <input autocomplete="off" id="file-upload" type="file" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename','file-upload')" hidden>
</label> </label>
{% endif %} {% endif %}
</div> </div>

View file

@ -28,7 +28,7 @@
<textarea autocomplete="off" maxlength="10000" id="input-message" form="contactform" name="message" class="form-control" required></textarea> <textarea autocomplete="off" maxlength="10000" id="input-message" form="contactform" name="message" class="form-control" required></textarea>
<label class="btn btn-secondary m-0 mt-3" for="file-upload"> <label class="btn btn-secondary m-0 mt-3" for="file-upload">
<div id="filename"><i class="far fa-image"></i></div> <div id="filename"><i class="far fa-image"></i></div>
<input autocomplete="off" id="file-upload" type="file" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename','file-upload')" hidden> <input autocomplete="off" id="file-upload" type="file" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename','file-upload')" hidden>
</label> </label>
{% if not v and hcaptcha %} {% if not v and hcaptcha %}
<div class="h-captcha" data-sitekey="{{hcaptcha}}"></div> <div class="h-captcha" data-sitekey="{{hcaptcha}}"></div>

View file

@ -384,7 +384,7 @@
&nbsp; &nbsp;
<label class="btn btn-secondary format d-inline-block m-0"> <label class="btn btn-secondary format d-inline-block m-0">
<div id="filename-show"><i class="far fa-image"></i></div> <div id="filename-show"><i class="far fa-image"></i></div>
<input autocomplete="off" id="file-upload" type="file" name="file" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} accept="image/*, video/*" onchange="changename('filename-show','file-upload')" hidden> <input autocomplete="off" id="file-upload" type="file" name="file" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} accept="image/*" onchange="changename('filename-show','file-upload')" hidden>
</label> </label>
</div> </div>
<pre></pre> <pre></pre>

View file

@ -294,7 +294,7 @@
<a class="format btn btn-secondary" role="button" onclick="commentForm('post-edit-box-{{p.id}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF"><span class="font-weight-bolder text-uppercase">GIF</span></a> <a class="format btn btn-secondary" role="button" onclick="commentForm('post-edit-box-{{p.id}}');getGif()" aria-hidden="true" data-bs-toggle="modal" data-bs-target="#gifModal" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Add GIF"><span class="font-weight-bolder text-uppercase">GIF</span></a>
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-edit-{{p.id}}"> <label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-edit-{{p.id}}">
<div id="filename-show-edit-{{p.id}}"><i class="far fa-image"></i></div> <div id="filename-show-edit-{{p.id}}"><i class="far fa-image"></i></div>
<input autocomplete="off" id="file-upload-edit-{{p.id}}" type="file" multiple="multiple" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-edit-{{p.id}}','file-upload-edit-{{p.id}}')" hidden> <input autocomplete="off" id="file-upload-edit-{{p.id}}" type="file" multiple="multiple" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-edit-{{p.id}}','file-upload-edit-{{p.id}}')" hidden>
</label> </label>
<small class="format d-none"><i class="fas fa-link" aria-hidden="true"></i></small> <small class="format d-none"><i class="fas fa-link" aria-hidden="true"></i></small>
@ -455,7 +455,7 @@
&nbsp; &nbsp;
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-reply-{{p.fullname}}"> <label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-reply-{{p.fullname}}">
<div id="filename-show-reply-{{p.fullname}}"><i class="far fa-image"></i></div> <div id="filename-show-reply-{{p.fullname}}"><i class="far fa-image"></i></div>
<input autocomplete="off" id="file-upload-reply-{{p.fullname}}" type="file" multiple="multiple" name="file" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-reply-{{p.fullname}}','file-upload-reply-{{p.fullname}}')" hidden> <input autocomplete="off" id="file-upload-reply-{{p.fullname}}" type="file" multiple="multiple" name="file" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-reply-{{p.fullname}}','file-upload-reply-{{p.fullname}}')" hidden>
</label> </label>
</div> </div>
<a id="save-reply-to-{{p.fullname}}" role="button" form="reply-to-{{p.fullname}}" class="btn btn-primary text-whitebtn ml-auto fl-r" onclick="post_comment('{{p.fullname}}', '{{p.id}}')">Comment</a> <a id="save-reply-to-{{p.fullname}}" role="button" form="reply-to-{{p.fullname}}" class="btn btn-primary text-whitebtn ml-auto fl-r" onclick="post_comment('{{p.fullname}}', '{{p.id}}')">Comment</a>

View file

@ -72,7 +72,7 @@
<img loading="lazy" id="image-preview" style="max-width:50%"> <img loading="lazy" id="image-preview" style="max-width:50%">
<label class="btn btn-secondary m-0" for="file-upload"> <label class="btn btn-secondary m-0" for="file-upload">
<div id="filename-show">Select File</div> <div id="filename-show">Select File</div>
<input autocomplete="off" id="file-upload" type="file" name="file" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} accept="image/*, video/*" hidden> <input autocomplete="off" id="file-upload" type="file" name="file" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} accept="image/*" hidden>
</label> </label>
<small class="form-text text-muted">Optional if you have text.</small> <small class="form-text text-muted">Optional if you have text.</small>
<small class="form-text text-muted">You can upload images or videos up to 60 seconds.</small> <small class="form-text text-muted">You can upload images or videos up to 60 seconds.</small>
@ -110,7 +110,7 @@
<label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-submit"> <label class="format btn btn-secondary m-0 ml-1 {% if v %}d-inline-block{% else %}d-none{% endif %}" for="file-upload-submit">
<div id="filename-show-submit"><i class="far fa-image"></i></div> <div id="filename-show-submit"><i class="far fa-image"></i></div>
<input autocomplete="off" id="file-upload-submit" multiple="multiple" type="file" name="file2" accept="image/*, video/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-submit','file-upload-submit');checkForRequired()" hidden> <input autocomplete="off" id="file-upload-submit" multiple="multiple" type="file" name="file2" accept="image/*" {% if request.headers.get('cf-ipcountry')=="T1" %}disabled{% endif %} onchange="changename('filename-show-submit','file-upload-submit');checkForRequired()" hidden>
</label> </label>
<div id="preview" class="preview my-3"></div> <div id="preview" class="preview my-3"></div>