]> git.parisson.com Git - docker-django-scripts.git/commitdiff
add python version of the statifier
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Thu, 28 Oct 2021 16:53:55 +0000 (18:53 +0200)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Thu, 28 Oct 2021 16:53:55 +0000 (18:53 +0200)
misc/statifier.py [new file with mode: 0644]

diff --git a/misc/statifier.py b/misc/statifier.py
new file mode 100644 (file)
index 0000000..512881e
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/python3
+
+import os
+from optparse import OptionParser
+import shutil
+
+class Statifier:
+
+  def __init__(self, domain, languages):
+    self.domain = domain
+    self.languages = languages
+
+  def wget(self, language, dir):
+    command = 'wget -q --mirror -p --adjust-extension --header="Accept-Language: %s" -e robots=off --base=./ -k -P %s https://%s' % (language, dir, self.domain)
+    print(command)
+    os.system(command)
+
+  def sed(self, dir, rule):
+    command = "find %s -type f -print0 | xargs -0 sed -r -i -e '%s'" % (dir, rule)
+    print(command)
+    os.system(command)
+
+  def fix_languages(self, dir, language):
+    rule = 's,<form action="https://%s/i18n/" method="post" class="c-header__languages">,,g' % self.domain
+    self.sed(dir, rule)
+
+    rule = 's,<button class="c-header__language is-active" type="submit" name="language" value="%s">%s</button>,<a href="/%s/"><button class="c-header__language\" type="button" name="language" value="%s">\&nbsp\; %s \&nbsp\;</button></a>,g' \
+      % (language, language.upper(), language, language, language.upper())
+    self.sed(dir, rule)
+
+    rule = 's,<button class="c-header__language" type="submit" name="language" value="%s">%s</button>,<a href="/%s/"><button class="c-header__language\" type="button" name="language" value="%s">\&nbsp\; %s \&nbsp\;</button></a>,g' \
+      % (language, language.upper(), language, language, language.upper())
+    self.sed(dir, rule)
+
+    rule = 's,<button class="c-header__language is-active" type="submit" name="language" value="%s">%s</button></form>,<a href="/%s/"><button class="c-header__language\" type="button" name="language" value="%s">\&nbsp\; %s \&nbsp\;</button></a>,g' \
+      % (language, language.upper(), language, language, language.upper())
+    self.sed(dir, rule)
+
+    rule = 's,<button class="c-header__language" type="submit" name="language" value="%s">%s</button></form>,<a href="/%s/"><button class="c-header__language\" type="button" name="language" value="%s">\&nbsp\; %s \&nbsp\;</button></a>,g' \
+      % (language, language.upper(), language, language, language.upper())
+    self.sed(dir, rule)
+
+  def main(self):
+    for language in self.languages:
+      self.wget(language, self.domain)
+      shutil.move(self.domain + os.sep + self.domain, self.domain + os.sep + language)
+
+    for language in self.languages:
+      self.fix_languages(self.domain, language)
+
+
+def main():
+  parser = OptionParser()
+  parser.add_option("-d", "--domain", dest="domain", help="domain")
+  parser.add_option("-l", "--languages",
+                  dest="languages", nargs=2,
+                  help="languages")
+  (options, args) = parser.parse_args()
+
+  s = Statifier(options.domain, options.languages)
+  s.main()
+
+if __name__ == "__main__":
+  main()
+