Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPullusb <bernou.samuel@gmail.com>2022-02-13 18:48:43 +0300
committerPullusb <bernou.samuel@gmail.com>2022-02-13 18:48:43 +0300
commit90fbd177c9850e21bae2238faba791815be566f0 (patch)
treea3f5bbca09c44f2f30aa4c862109fa313a26649c /greasepencil_tools
parentb0502cd83ca389c8deb3f7458fcd13efa080982f (diff)
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.
Diffstat (limited to 'greasepencil_tools')
-rw-r--r--greasepencil_tools/__init__.py7
-rw-r--r--greasepencil_tools/import_brush_pack.py85
2 files changed, 20 insertions, 72 deletions
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)')