将图像/文档作为问题附件上载到Github

ghuc的Python项目详细描述


GHUC

pypipython 3.5,3.6,3.7license:mitCircleci状态

ghuc(派生自githubusercontent并发音为gee·huck)是一个命令行工具,用于将图像/文档作为问题附件上载到github。图像可以在https://user images.githubusercontent.com上找到,文档可以在https://github.com/<;user>;/<;repo>;/files/..上找到。它自动化了传统的导航到回购的流程->;打开问题->;上载图像->;复制URL,这非常麻烦。随着imgur的不断恶化,一站式上传到user-images.githubusercontent.com对于偶尔嵌入在文档或评论部分/论坛帖子中的图片来说是次好的选择。

ghuc部分由selenium webdriver提供动力。在MacOS、Linux和Windows上测试和支持。

请尊重Github的TOS,不要滥用此工具。

内容

安装

pip install ghuc

建议通过pipx单独安装。

非python依赖项

由于ghuc使用selenium webdriver,因此需要以下浏览器和驱动程序组合之一:

  • Firefox的geckodriver
  • chrome/chromium使用chromedriver

可选依赖项

  • libmagic是准确检测mime类型所必需的;否则,将根据文件扩展名猜测mime类型。

用法

$ ghuc -h
usage: ghuc [-h] [-r REPOSITORY_ID] [-x PROXY] [-q] [--debug] [--gui]            [--container] [--version]            PATH [PATH ...]Uploads images/documents to GitHub as issue attachments. Seehttps://github.com/zmwangx/ghuc for detailed documentation.positional arguments:  PATHoptional arguments:  -h, --help            show this help message and exit  -r REPOSITORY_ID, --repository-id REPOSITORY_ID                        id of repository to upload from (defaults to 1)  -x PROXY, --proxy PROXY                        HTTP or SOCKS proxy  -q, --quiet           set logging level to ERROR  --debug               set logging level to DEBUG  --gui                 disable headless mode when running browser sessions                        through Selenium WebDriver  --container           add extra browser options to work around problems in                        containers  --version             show program's version number and exit

注意:

  • github并不支持所有文件类型。在编写以下内容时,我引用支持:

    < Buff行情>

    gif,jpeg,jpg,png,docx(真的吗?)、gz、log、pdf、pptx、txt、xlsx和zip。

  • 第一次使用ghuc时,系统将提示您输入github凭据以登录(请参见它的工作原理;您可以使用下面记录的环境变量来绕过交互式提示)。你r cookies将被缓存,但您的凭据永远不会被存储。随后的运行可能会每隔一段时间给github打一次电话以获取新的令牌,但理想情况下,您不需要再次登录。

  • --repository id:确定上载文档的url显示为哪个repo。例如,在默认的1下,url可以是https://github.com/mojombo/grit/files/3027504/random.pdf;当设置为36502时,您可以改为使用https://github.com/git/git/files/3027505/random.pdf" rel="nofollow">https://github.com/git/git/files/3027505/random.pdf。只要id中存在存储库,此选项就是示意性的。据我所知,此选项对图像上载没有影响。

  • --代理:支持http和socks(4/4a/5/5h)代理,即识别以下协议前缀:http://https://socks4://socks4a://socks5://socks5h://。如果未指定协议,则假定为http://。也可以使用https\u proxy环境变量。

  • --gui--container:这些主要是开发/测试选项;最终用户不需要触摸它们。--对于最终用户系统来说,容器可能尤其不安全。

环境变量

  • github_usernamegithub_passwordgithub_totp_secret:提供凭据时,不显示交互提示。github_totp_secret仅在使用totp进行双因素身份验证时才需要。如果只对2fa使用文本消息(非常不鼓励),则登录流可能工作,但不能保证(因为我没有这样的设置;欢迎使用贡献)。如果你只在2fa中使用fido u2f,那你就倒霉了。
  • https\u proxy:请参见--proxy

工作原理

将文件作为问题附件上载需要两个级别的身份验证:github会话cookies和一个uploadPolicyAuthentityToken(csrf排序令牌)。uploadPolicyAuthentityToken在登录时可以在任何带有注释框的GitHub页面上找到,并且每个注释框都有效一段时间(如果没有专门的测试,很难说有多长,但有效期至少超过一天)。

ghuc通过selenium webdriver登录github,缓存会话cookie和令牌。然后,它使用缓存的值执行所有上载,并且在令牌过期之前不再接触浏览器(因此正常上载应该相当快),此时它会尝试还原以前的浏览器会话并获取新令牌。

FAQ

  • 为什么不是木偶师?< /P>

    从开发人员的角度来看,puppeter比selenium webdriver灵活得多,但是每次安装都必须下载一个捆绑的、大约100MB的、非自动更新的chromium副本,而下次使用chromium时它已经过时了,这对用户来说真的很不利。我也不是node/npm生态系统的粉丝。最后,同步对这个项目是有好处的。

待办事项

  • selenium调用中的尊重代理选项(当前浏览器使用系统代理设置);
  • 页面加载:等待domcontentloaded而不是loade(selenium默认值,在慢速连接上浪费大量时间);
  • 处理身份验证失败并允许重试(目前我们假定所有凭据都正确)。

许可证

版权所有©2019 Zhiming Wangi@zhimmingwang.org。麻省理工学院的执照。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java当使用SAST工具时,为什么我们必须为编译语言(例如C/C++)使用“构建包装器”?   从C++调用java   java在键入时重新存储单词   java Magnolia实例化模块类失败   为什么我可以在java的for循环中创建很少的文件对象   netbeans JAVA:将事件创建为单独的程序。。。可能吗?   标准不使用java关键字的目的是什么?   java如何将列表计数与单个整数值进行比较?   编写谓词练习JAVA技能   Java 8中是否有Scala的等价物?   java有人能指出这段代码的错误吗?这是一个卡片重绘程序,但由于某些原因,一些卡片会重复   java使驱动程序“通用”   java如何在Hibernate中删除多个关联而不实际删除对象