[Bf-extensions-cvs] [90fbd177] master: GPencil Tools: update brush pack url

Pullusb noreply at git.blender.org
Sun Feb 13 16:48:48 CET 2022


Commit: 90fbd177c9850e21bae2238faba791815be566f0
Author: Pullusb
Date:   Sun Feb 13 16:48:43 2022 +0100
Branches: master
https://developer.blender.org/rBA90fbd177c9850e21bae2238faba791815be566f0

GPencil Tools: update brush pack url

Changed brush pack donwload to a blender official url. Comply with add-on key requirements (T95442)
Also disable registers in background mode to avoid keymap error.

===================================================================

M	greasepencil_tools/__init__.py
M	greasepencil_tools/import_brush_pack.py

===================================================================

diff --git a/greasepencil_tools/__init__.py b/greasepencil_tools/__init__.py
index dd8d876c..a4ac90c6 100644
--- a/greasepencil_tools/__init__.py
+++ b/greasepencil_tools/__init__.py
@@ -1,11 +1,10 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
-
 bl_info = {
 "name": "Grease Pencil Tools",
 "description": "Extra tools for Grease Pencil",
 "author": "Samuel Bernou, Antonio Vazquez, Daniel Martinez Lara, Matias Mendiola",
-"version": (1, 5, 4),
+"version": (1, 5, 5),
 "blender": (2, 91, 0),
 "location": "Sidebar > Grease Pencil > Grease Pencil Tools",
 "warning": "",
@@ -26,6 +25,8 @@ from .  import (prefs,
                 )
 
 def register():
+    if bpy.app.background:
+        return
     prefs.register()
     timeline_scrub.register()
     box_deform.register()
@@ -38,6 +39,8 @@ def register():
     prefs.update_panel(prefs.get_addon_prefs(), bpy.context)
 
 def unregister():
+    if bpy.app.background:
+        return
     ui_panels.unregister()
     import_brush_pack.unregister()
     rotate_canvas.unregister()
diff --git a/greasepencil_tools/import_brush_pack.py b/greasepencil_tools/import_brush_pack.py
index 2b960af6..8ee54003 100644
--- a/greasepencil_tools/import_brush_pack.py
+++ b/greasepencil_tools/import_brush_pack.py
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
 import bpy
-import re
 import ssl
 import urllib.request
 import urllib.parse
@@ -26,23 +25,6 @@ def simple_dl_url(url, dest, fallback_url=None):
             print('\nDownload page for manual install:', fallback_url)
         return e
 
-def download_url(url, dest):
-    '''download passed url to dest file (include filename)'''
-    import shutil
-    import time
-    ssl._create_default_https_context = ssl._create_unverified_context
-    start_time = time.time()
-
-    try:
-        with urllib.request.urlopen(url) as response, open(dest, 'wb') as out_file:
-            shutil.copyfileobj(response, out_file)
-    except Exception as e:
-        print('Error trying to download\n', e)
-        return e
-
-    print(f"Download time {time.time() - start_time:.2f}s",)
-
-
 def get_brushes(blend_fp):
     cur_brushes = [b.name for b in bpy.data.brushes]
     with bpy.data.libraries.load(str(blend_fp), link=False) as (data_from, data_to):
@@ -92,13 +74,9 @@ class GP_OT_install_brush_pack(bpy.types.Operator):
         self._append_brushes(Path(self.temp) / blendname)
 
     def execute(self, context):
-
         import tempfile
-        import json
-        import hashlib
         import os
 
-        ## get temp dir
         temp = tempfile.gettempdir()
         if not temp:
             self.report({'ERROR'}, 'no os temporary directory found to download brush pack (using python tempfile.gettempdir())')
@@ -106,71 +84,40 @@ class GP_OT_install_brush_pack(bpy.types.Operator):
 
         self.temp = Path(temp)
 
-        ## download link from gitlab
-        # brush pack project https://gitlab.com/pepe-school-land/gp-brush-pack
-        repo_url = r'https://gitlab.com/api/v4/projects/21994857'
-        tree_url = f'{repo_url}/repository/tree'
+        dl_url = 'http://download.blender.org/demo/bundles/bundles-3.0/grease-pencil-brush-pack.zip'
 
         ## need to create an SSl context or linux fail and raise unverified ssl
         ssl._create_default_https_context = ssl._create_unverified_context
 
+        file_size = None
+
         try:
-            with urllib.request.urlopen(tree_url) as response:
-                html = response.read()
+            with urllib.request.urlopen(dl_url) as response:
+                file_size = int(response.getheader('Content-Length'))
         except:
             ## try loading from tempdir
-            packs = [f for f in os.listdir(self.temp) if 'GP_brush_pack' in f and f.endswith('.blend')]
+            packs = [f for f in os.listdir(self.temp) if 'gp_brush_pack' in f.lower() and f.endswith('.blend')]
             if packs:
                 packs.sort()
                 self._append_brushes(Path(self.temp) / packs[-1])
                 self.report({'WARNING'}, 'Brushes loaded from temp directory (No download)')
-                # print('Could not reach web url : Brushes were loaded from temp directory file (No download)')
                 return {"FINISHED"}
 
-            self.report({'ERROR'}, f'Check your internet connexion, Impossible to connect to url: {tree_url}')
+            self.report({'ERROR'}, f'Check your internet connexion, Impossible to connect to url: {dl_url}')
             return {"CANCELLED"}
 
-        if not html:
-            self.report({'ERROR'}, f'No response read from: {tree_url}')
+        if file_size is None:
+            self.report({'ERROR'}, f'No response read from: {dl_url}')
             return {"CANCELLED"}
 
-        tree_dic = json.loads(html)
-        zips = [fi for fi in tree_dic if fi['type'] == 'blob' and fi['name'].endswith('.zip')]
-
-        if not zips:
-            print(f'no zip file found in {tree_url}')
-            return {"CANCELLED"}
-
-        ## sort by name to get last
-        zips.sort(key=lambda x: x['name'])
-        last_zip = zips[-1]
-        zipname = last_zip['name']
-        id_num = last_zip['id']
-
-
-        ## url by filename
-        # filepath_encode = urllib.parse.quote(zipname, safe='')# need safe to convert possible '/'
-        # dl_url = f'{repo_url}/repository/files/{filepath_encode}/raw?ref=master'
-
-        ## url by blobs
-        dl_url = f"{repo_url}/repository/blobs/{id_num}/raw"
-
-        self.brushzip = self.temp / zipname
-
+        self.brushzip = self.temp / Path(dl_url).name
 
         ### Load existing files instead of redownloading if exists and up to date (same hash)
         if self.brushzip.exists():
-            ### Test the hash against online git hash (check for update)
-            BLOCK_SIZE = 524288# 512 Kb buf size
-            file_hash = hashlib.sha1()
-            file_hash.update(("blob %u\0" % os.path.getsize(self.brushzip)).encode('utf-8'))
-            with open(self.brushzip, 'rb') as f:
-                fb = f.read(BLOCK_SIZE)
-                while len(fb) > 0:
-                    file_hash.update(fb)
-                    fb = f.read(BLOCK_SIZE)
-
-            if file_hash.hexdigest() == id_num: # same git SHA1
+
+            ### compare using file size with size from url header
+            disk_size = self.brushzip.stat().st_size
+            if disk_size == file_size:
                 ## is up to date, install
                 print(f'{self.brushzip} is up do date, appending brushes')
                 self._install_from_zip()
@@ -178,11 +125,9 @@ class GP_OT_install_brush_pack(bpy.types.Operator):
 
         ## Download, unzip, use blend
         print(f'Downloading brushpack in {self.brushzip}')
-        ## https://cloud.blender.org/p/gallery/5f235cc297f8815e74ffb90b
 
-        fallback_url='https://gitlab.com/pepe-school-land/gp-brush-pack/-/blob/master/Official_GP_brush_pack_v01.zip'
+        fallback_url='https://cloud.blender.org/p/gallery/5f235cc297f8815e74ffb90b'
         err = simple_dl_url(dl_url, str(self.brushzip), fallback_url)
-        # err = download_url(dl_url, str(self.brushzip), fallback_url)
 
         if err:
             self.report({'ERROR'}, 'Could not download brush pack. Check your internet connection. (see console for detail)')



More information about the Bf-extensions-cvs mailing list