--- a/src/ldtplatform/management/commands/replacedelete.py Thu Mar 09 17:42:33 2017 +0100
+++ b/src/ldtplatform/management/commands/replacedelete.py Thu Mar 16 18:25:44 2017 +0100
@@ -3,12 +3,14 @@
'''
import csv
import logging
+import re
from itertools import chain
import requests
from django.conf import settings
from django.contrib.sites.models import Site
from django.core.management.base import BaseCommand
+from django.core import management
from lxml import etree
from ldt.ldt_utils import models
@@ -24,19 +26,21 @@
tomp4 = 0
if tomp4 == 1:
source = source[0:len(source)-3]+"mp4"
- if source[0:4] == "http" or source[0:4] == "sftp":
+ if source[0:5] == "https":
+ return source
+ elif source[0:4] == "http" or source[0:4] == "sftp":
return "https"+source[4:len(source)]
elif source[0:7] == "/video/":
return "https://media.iri.centrepompidou.fr"+source
elif source[0:6] == "video/" or source[0:6] == "audio/":
return "https://media.iri.centrepompidou.fr/"+source
- elif source[0:4] == "mp4:":
- return "hue"
elif vidpath == 'rtmp://media.iri.centrepompidou.fr/ddc_player/video/regardssignes/' or \
vidpath == 'rtmp://media.iri.centrepompidou.fr/ddc_player/mp4:video/regardssignes/':
return "https://media.iri.centrepompidou.fr/video/regardssignes/"+source
- else:
- return "https://media.iri.centrepompidou.fr/video/ldtplatform/"+source
+ elif source[0:4] == "mp4:":
+ if vidpath == 'rtmp://media.iri.centrepompidou.fr/ddc_player/':
+ return "https://media.iri.centrepompidou.fr/" + source[4:]
+ return "https://media.iri.centrepompidou.fr/video/ldtplatform/"+source
def numberofcontents(source): #this counts the number of contents linked to a media
'''
@@ -51,8 +55,7 @@
if numberofcontents(source) > 0:
return len(models.Project.objects.filter\
(content=models.Content.objects.filter(media_obj_id=source.id)[0]))
- else:
- return 0
+ return 0
class Command(BaseCommand):
'''
@@ -78,8 +81,13 @@
"Number of contents",
"Number of projects"
]]
-
- j=0
+ if options['f']:
+ infos = open('results.txt', 'w')
+ else:
+ infos = open('projectsToChange.txt', 'w')
+ j = 0
+ parser = etree.XMLParser(encoding='utf-8')
+ logger = logging.getLogger(__name__)
files1 = models.Media.objects.all() #this list contains every media
for elem1 in files1:
if numberofcontents(elem1) == 0:
@@ -89,34 +97,92 @@
self.stdout.write(" No content found, media has been removed")
else:
forcsv += [[
- elem1.src,
- "XXX",
- "XXX",
- "XXX",
- "NO CONTENT : media will be erased",
- "0",
- "0"
+ elem1.src,
+ "XXX",
+ "XXX",
+ "XXX",
+ "NO CONTENT : media will be erased",
+ "0",
+ "0"
]]
j += 1
+ continue
+ if numberofproject(elem1) == 0:
+ if options['f']:
+ mycontentid = models.Content.objects.filter(media_obj_id=elem1.id)[0].iri_id
+ management.call_command('initfrontproject', mycontentid)
+ else:
+ forcsv += [[
+ elem1.src,
+ "XXX",
+ "XXX",
+ "XXX",
+ "No project : will be initialized",
+ "1",
+ "0"
+ ]]
+ ldtproj = models.Project.objects.filter\
+ (content=models.Content.objects.filter(media_obj_id=elem1.id)[0])
+ if elem1.src.lower() == tohttps(elem1.src, elem1.videopath).lower():
+ for numproject in xrange(len(ldtproj)):
+ root = etree.XML(ldtproj[numproject].ldt.encode('utf-8'), parser)
+ mediapathlen = len(root.xpath('medias/media'))
+ if mediapathlen == 0:
+ self.stdout.write(" .ldt has no media", ending='')
+ continue
+ if options['f'] and\
+ re.match(r"rtmp://media.iri.centrepompidou.fr/ddc_player/.*",elem1.videopath) != None:
+ root.xpath('medias/media')[0].set("video", '')
+ ldtproj[numproject].ldt = etree.tostring(root)
+ ldtproj[numproject].save()
+ self.stdout.write(" Project videopath modified!")
+ infos.write(" Project videopath modified ")
+ if re.match(r".*\.youtube\.com.*", elem1.src) != None\
+ or re.match(r".*youtu\.be.+", elem1.src) != None:
+ if re.match(r".*feature=player_embedded.+", elem1.src) != None:
+ myembed = "http://www.youtube.com/oembed?url=http://youtube.com/watch?v="\
+ + elem1.src[len(elem1.src)-11:] +"&format=json"
+ else:
+ myembed = "http://www.youtube.com/oembed?url=" + elem1.src + "&format=json"
+ if requests.get(myembed).status_code == 404:
+ self.stdout.write("%s : Video doesn't exists"% elem1.src)
+ if numberofproject(elem1) > 0:
+ ldtproj = models.Project.objects.get(id=models.Content.objects.filter\
+ (media_obj_id=elem1.id)[0].front_project_id).ldt
+ root = etree.XML(ldtproj.encode('utf-8'), parser)
+ if root.xpath('annotations/content/ensemble/decoupage/elements/element')\
+ == []:
+ if options['f']:
+ elem1.delete()
+ self.stdout.write("video doesn't exist anymore : media deleted")
+ else:
+ forcsv += [[
+ elem1.src,
+ "XXX",
+ "XXX",
+ "404",
+ "Video doesn't exist anymore + empty projects",
+ "1",
+ "1"
+ ]]
+
if options['f']:
self.stdout.write("%s files deleted"%j)
- infos = open('results.txt', 'w')
- parser = etree.XMLParser(encoding='utf-8')
else:
self.stdout.write("%s files to delete"%j)
- infos = open('projectsToChange.txt', 'w')
i = 0
files = list(chain(
models.Media.objects.filter(src__iregex=r".*.flv$"),
models.Media.objects.filter(src__iregex=r".*.f4v$"),
+ models.Media.objects.filter(src__iregex=r".*.m4v$"),
models.Media.objects.filter(src__iregex=r".*.mp4$").exclude(src__iregex=r"^https://.*")
))
- logger = logging.getLogger(__name__)
+
for elem in files:
self.stdout.write(" \n%s/%s files done"%(i+1, len(files)), ending='')
i += 1
if numberofcontents(elem) == 0:
- self.stdout.write(" no content",ending='')
+ self.stdout.write(" no content", ending='')
continue
mysrc = elem.src
newsource = tohttps(elem.src, elem.videopath)
@@ -309,7 +375,8 @@
if options['f']:
for numproject in xrange(len(ldtproj)):
root = etree.XML(ldtproj[numproject].ldt.encode('utf-8'), parser)
- if len(root.xpath('medias/media')) == 0:
+ mediapathlen = len(root.xpath('medias/media'))
+ if mediapathlen == 0:
self.stdout.write(" le .ldt ne contient pas de media", ending='')
infos.write("le .ldt ne contient pas de media")
continue