xiebruce / PicUploader

一个还不错的图床工具,支持Mac/Win/Linux服务器、支持压缩后上传、添加图片或文字水印、多文件同时上传、同时上传到多个云、右击任意文件上传、快捷键上传剪贴板截图、Web版上传、支持作为Mweb/Typora发布图片接口、作为PicGo/ShareX/uPic等的自定义图床,支持在服务器上部署作为图床接口,支持上传任意格式文件。
https://www.xiebruce.top/17.html
MIT License
1.19k stars 169 forks source link

剪切板插件mac下开机自启没有生效 #6

Closed singworld closed 5 years ago

singworld commented 5 years ago

开机后需要自己在root下启动才能生效 开机 ps aux | grep PicUploaderHelper screenshot_upload_tmp.png

root下手动开启 screenshot_upload_tmp.png

这个也加了 要把运行终端比如iTerm2(或者你自己习惯用的其它终端工具)加入到系统偏好设置→ 安装与隐私→辅助功能里面

jiandaxin commented 5 years ago

下面图片不知道咋花了 好像图片地址给我替换了 原始图片刚打开也是慢慢加载清晰的 然后被捕捉到了模糊的

原始图片是这张https://img.jianxiaoxin.com/2019/04/13/3ebe59c12b72517d14b7955578e503e4.png

jiandaxin commented 5 years ago

用启动的进程id也关闭不了进程 每次用 ps aux | grep PicUploaderHelper 查出来的ID也不一样

singworld commented 5 years ago

root 开启以后。过半小时左右自动关闭了

  if f(*args) is False:
  File "/Users/singworld/picupload/PicUploaderHelper-macOS/PicUploaderHelper.py", line 134, in on_release
    current.remove(key)
KeyError: <Key.cmd: <55>>
Traceback (most recent call last):
  File "/Users/singworld/picupload/PicUploaderHelper-macOS/PicUploaderHelper.py", line 139, in <module>
    listener.join()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/__init__.py", line 205, in join
    six.reraise(exc_type, exc_value, exc_traceback)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/six.py", line 692, in reraise
    raise value.with_traceback(tb)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/__init__.py", line 157, in inner
    return f(self, *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/darwin.py", line 261, in _handler
    self._handle(proxy, event_type, event, refcon)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/keyboard/_darwin.py", line 218, in _handle
    self.on_release(key)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/__init__.py", line 78, in inner
xiebruce commented 5 years ago

@jiandaxin 1、png图片有交错技术,也就是说从模糊到清晰本来本来就是一种图片加载技术,用于应对图片加载慢的问题,这比从上到下一块一块加载给人的感觉好多了,这跟我们自己的配置没有任何关系,网速慢png图片就是这么加载的。 2、用启动进程的id关不掉提示什么?如果可以,请贴上操作过程的图,我可以帮你看看。 3、启动进程后每次id不一样,如果你启动后没有关,id不可能自己变,除非你重新启动了,重新启动了进程id当然不会一样了,系统给你分配的哪个id就哪个id啊,进程id又不能自己指定。

xiebruce commented 5 years ago

@singworld 自动启动不行的话,暂时先手动启动吧,手动启动会半小时自动关掉,我之前好像也偶尔遇到过,但现在又没遇到过了,我一直用着没问题,不知道你设置的快捷键是哪个?也许跟这有关。

singworld commented 5 years ago

@xiebruce 开机自启有一个我用户名下的进程,这个时候不能用,然后我用root开启后提示进程id477 然后ps aux | grep PicUploaderHelper显示有两个进程一个原先的,另一个进程id会在提示进程上+1 显示root进程是478 然后我用kill -477 kill -478 提示kill: not enough arguments image screenshot_upload_tmp.png

singworld commented 5 years ago

@xiebruce 图片加载技术这个知道。只是GitHub上会把地址换掉 好像原理是抓取你图片的某个瞬间自动生成一张新的图片地址换成了这个域名下的https://camo.githubusercontent.com。然后就抓到一张模糊的照片。 image

xiebruce commented 5 years ago

@singworld 1、运行后提示的进程id确实比实际id小1,这个问题我在修改,至于杀死进程缺少参数那是你kill命令用的有问题,是kill -9 进程id,注意-9就是一个选项来的,比如你的pid是“478”,你要杀死进程就用kill -9 478而不是kill -478。 2、我平时上传md文档到github,我md文件中的图片地址也是我自己图片域名的,到了github上它确实会修改成自己的啊,没有出现过这种模糊的情况,我还是没太明白你到底在做什么操作然后出现这个问题?也是跟我一样,在本地写md文档,然后里面插入了图片,图片域名是你自己的,然后上传到github,再打开这个文档,里面的图片都是模糊的,是这样么?

singworld commented 5 years ago

@xiebruce 只是在lssues上贴自己域名的图片会这样。

xiebruce commented 5 years ago

@singworld 我知道你的意思了,那你把截图工具切换成截图保存jpg估计会好点,反正也没啥区别。

xiebruce commented 5 years ago

@singworld 1、PicUploaderHelper-macOS.zip 已经更新,可以下载了,修复了重复运行会运行多个进程的bug,修复了运行后显示的PID比正确PID小1的bug。 2、你的半小时会自动关闭情况还有吗?我这里运行之后就一直运行着,不会出现自动关闭的情况,如果出现了,多半是你设置的快捷键比较特殊的问题,方便的话,看看你设置的是什么快捷键?

singworld commented 5 years ago

@xiebruce 之前用的 cmd shift +

xiebruce commented 5 years ago

@singworld 那意思是现在换了快捷键就好了呗?cmd+shift++是很多软件的放大快捷键,估计被占用了。

singworld commented 5 years ago

@xiebruce 我换成cmd shift z 还是会关闭。有报错

Unhandled exception in listener callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/__init__.py", line 157, in inner
    return f(self, *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/darwin.py", line 261, in _handler
    self._handle(proxy, event_type, event, refcon)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/keyboard/_darwin.py", line 218, in _handle
    self.on_release(key)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/__init__.py", line 78, in inner
    if f(*args) is False:
  File "/Users/singworld/picupload/PicUploaderHelper-macOS/PicUploaderHelper.py", line 134, in on_release
    current.remove(key)
KeyError: <Key.cmd: <55>>
singworld commented 5 years ago

截图几下好像就会不能上传了, 现在用的cmd shift z 然后查询显示只有一个用户进程 然后再查询开启 可以用了。但显示多个进程 然后再查询一次就变成两个进程了 image

xiebruce commented 5 years ago

@singworld 1、你要搞明白,用ps aux | grep PicUploader查看,一般会有两个出来,但其实只有一个是进程,而另一个是grep的进程,比如下图,第一个框里的才是它的进程,第二个框并不是,这个其实跟我这个工具没关系,你查任何程序的进程,大多数情况都会这样的: image 如果你想不看到那个进程,那你这么用ps aux | grep -v "grep" | grep PicUploader,这样就不会看到那个无关的进程了。

2、你下载我昨天新传的那个了吗?下载了之后,用新下载的里面那个generatesh.sh重新生成一个PicUploaderHelper-start.sh

3、生成之后先别启动,在启动前你用ps aux | grep -v "grep" | grep PicUploader查看之前有没有进程,如果有,那么用kill -9 进程id的方式杀死。

4、config.json里的快捷键暂时不要修改,先用我默认的,我的默认快捷键是alt+shift+u,现在重新用sudo ./PicUploaderHelper-start.sh启动进程进程测试,然后试试alt+shift+u是否能用?然后截图再试试,用我默认的快捷键的原因,是为了测试是不是因为你设置的快捷键的原因导致会崩溃,如果用我默认的快捷键没问题,那么就是因为你设置的快捷键跟其他的有冲突了。

singworld commented 5 years ago

换这个好多了。之前下载默认的好像是cmd shift U 发现用cmd很容易挂,现在又出现剪贴板上传提示成功 ,剪贴板为空的情况,怀疑是某个云有问题, 我把图片保存本地上传又行。 发现上传多个云速度会有点慢需要等待十几秒 想着能否异步上传 上传一个就返回地址 但如果有一个云不成功又想回滚 不知道怎么实现

Unhandled exception in listener callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/__init__.py", line 157, in inner
    return f(self, *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/darwin.py", line 261, in _handler
    self._handle(proxy, event_type, event, refcon)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/keyboard/_darwin.py", line 218, in _handle
    self.on_release(key)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/__init__.py", line 78, in inner
    if f(*args) is False:
  File "/Users/singworld/picupload/PicUploaderHelper-macOS/PicUploaderHelper.py", line 134, in on_release
    current.remove(key)
KeyError: <Key.cmd: <55>>
Traceback (most recent call last):
  File "/Users/singworld/picupload/PicUploaderHelper-macOS/PicUploaderHelper.py", line 139, in <module>
    listener.join()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pynput/_util/__init__.py", line 205, in join
    six.reraise(exc_type, exc_value, exc_traceback)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/six.py", line 692, in reraise
    raise value.with_traceback(tb)
singworld commented 5 years ago

剪切板上传成功不返回地址和之前关进程一样不是一直都不返回。而是偶尔不返回。重新root执行一下就又可以了

xiebruce commented 5 years ago

@singworld 1、你可以查查不成功的时候,PicUploader下边的隐藏文件夹.tmp里面的图片是不是你当前截图的图片,因为是先保存一张图片到这里然后再调用PicUploader进行上传的。 2、查查PicUploaderHelper.py所在目录下的PicUploaderHelper.log里面有没有错误日志。

奇怪,我这一直没这问题呀。

xiebruce commented 5 years ago

@singworld 添加支持Alfred,现在你可以用Alfred来设置快捷键调用PicUploaderHelper.py来上传剪贴板中的截图了,这样应该比直接用PicUploaderHelper.py监听快捷键更好一点,应该不会出现过一段时间无效的问题了:Mac系统使用快捷键上传方式二(配合Alfred)

singworld commented 5 years ago

@xiebruce 更新后 获取链接日志显示Cannot find storage type smms in config file, please check the config file and try again. 我生效设置里没去配置这个呀

xiebruce commented 5 years ago

@singworld 按下图,不用填代理,点一下保存再试试 image

singworld commented 5 years ago

@xiebruce 我用的配置文件

xiebruce commented 5 years ago

@singworld 好的,我处理一下

singworld commented 5 years ago

@xiebruce 粘贴板出现的是这个 ` Warning: file_get_contents(/Users/singworld/PicUploader/config/.config.json): failed to open stream: No such file or directory in /Users/singworld/PicUploader/settings/SettingController.php on line 18

Notice: Undefined index: image in /Users/singworld/PicUploader/settings/SettingController.php on line 275

Notice: Undefined index: customFormat in /Users/singworld/PicUploader/settings/SettingController.php on line 287

Notice: Undefined index: compreLevel in /Users/singworld/PicUploader/uploader/Upload.php on line 61

Warning: array_keys() expects parameter 1 to be array, null given in /Users/singworld/PicUploader/uploader/Upload.php on line 81

Warning: in_array() expects parameter 2 to be array, null given in /Users/singworld/PicUploader/uploader/Upload.php on line 87 `

xiebruce commented 5 years ago

@singworld 嗯,我处理一下这个问题,之前一直用着网页版配置,把这个漏了

xiebruce commented 5 years ago

@singworld 好了,你更新一下

singworld commented 5 years ago

@xiebruce 可以了。感谢大佬

xiebruce commented 5 years ago

@singworld 不客气,现在用Alfred直接粘贴是不是爽多了哈哈

xiebruce commented 5 years ago

@singworld 添加了一个上传前通知,可以更新一下,就是按快捷键后就通知上传中,上传完成后再通知上传成功,因为之前总有点感觉不知道是没按到快捷键还是正在上传中,现在先提示一下我们就知道它确实在上传,而不是没按到快捷键。

singworld commented 5 years ago

@xiebruce 好用 好用上传多个云 有时候其中一个会超时 好像不会实现回滚

xiebruce commented 5 years ago

@singworld 这个肯定不会啦,我又没有做这功能,其中一个会超时,是哪个?每次都是同一个超时,还是每次超时的都是不同的云?或者说哪个云最容易超时?不过我猜是github、smms、Imgur这三个中的一个吧?

singworld commented 5 years ago

@xiebruce 之前ucloud. 昨天又拍云偶尔会挂。最稳的还是腾讯。 可惜网易现在个人认证关闭不能用了

xiebruce commented 5 years ago

@singworld 啊?网易个人不能认证啦?我去年9月还是10月还可以呢哈哈。又拍和Ucloud偶尔会挂?不太应该啊,那你遇到这种情况,最终返回什么了?能正常返回可用的md格式url吗?

jiandaxin commented 5 years ago

之前版本是粘贴板清空 日志里提示某个云超时 现在这个版本是粘贴板里面有输出某个云超时

xiebruce commented 5 years ago

@jiandaxin 奇怪,我一直没遇到这个情况,怎样才能重现?你遇到的多吗?

jiandaxin commented 5 years ago

之前还挺频繁的。今天没遇到

xiebruce commented 5 years ago

@jiandaxin 那应该是你的网络问题,不知道你挂代理没有?github确实会比国内的云慢一点,你上传的图片大概都多大?

jiandaxin commented 5 years ago

没挂代理 传了 腾讯 ucloud 青云 又拍 七牛这五个。图片一般是截图上传

xiebruce commented 5 years ago

@jiandaxin 哈哈,要不是网易关了个人认证,估计就是6个了。 我现在都做异常捕获了,按道理来说异常信息是不会输出到剪贴板的,如果没更新就更新一下,当然除非是多个云中的最后一个云挂了,它的信息就会被输出到剪贴板,因为我上传其实是循环上传。