script/dlproject.py
author ymh <ymh.work@gmail.com>
Wed, 04 Sep 2024 16:52:49 +0200
changeset 0 2a447b707b65
permissions -rwxr-xr-x
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/env python
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
import requests
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
from lxml import etree
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
import sys
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
import zipfile
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
import re
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
import slugify
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
project_id = sys.argv[1]
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
dlurl = "http://ldt.iri.centrepompidou.fr/ldtplatform/ldt/space/ldt/project/" + project_id
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
r = requests.get(dlurl)
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
ldt_root = etree.fromstring(r.content)
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
project_title = ldt_root.find("project").get("title")
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
#create zipfile
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
if project_title:
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    basename = slugify.slugify(project_title)
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
else:
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    basename = project_id
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
zf = zipfile.ZipFile(basename+".zip", "w")
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
try:
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
    for i,media_node in enumerate(ldt_root.iterfind("medias/media")):
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
        iri_url = media_node.get("src")
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
        r_iri = requests.get(iri_url)
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
        iriname = "iri/%s_%d.iri" % (basename, i)
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
        zf.writestr(basename+"/"+iriname, r_iri.content)
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
        media_node.set("src", iriname)
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
        media_node.set("video", "")
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    zf.writestr(basename+'/'+basename+".ldt", etree.tostring(ldt_root, xml_declaration=True, encoding='utf-8'))
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
finally:
2a447b707b65 First commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
    zf.close()