Skip to content

Conversation

@gravyboat
Copy link
Member

Fixes #1123

@gravyboat gravyboat mentioned this pull request Nov 14, 2018
Copy link
Member

@beardypig beardypig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this together @gravyboat :)

@bastimeyer
Copy link
Member

@gravyboat could you please add the necessary TravisCI package dependencies here

- nsis

That's the available package whitelist for Ubuntu trusty:
https://raw.githubusercontent.com/travis-ci/apt-package-safelist/master/ubuntu-trusty

package names are

imagemagick
optipng

@codecov
Copy link

codecov bot commented Nov 27, 2018

Codecov Report

Merging #2165 into master will increase coverage by 0.99%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #2165      +/-   ##
==========================================
+ Coverage   51.36%   52.36%   +0.99%     
==========================================
  Files         234      237       +3     
  Lines       14236    14712     +476     
==========================================
+ Hits         7313     7704     +391     
- Misses       6923     7008      +85

@beardypig
Copy link
Member

Incase my inline comment got lost:

ImageMagick can do it all. Using ImageMagick 7.0.8, the ico looks decent and you get all the sizes generated for you. The optipng stage does nothing in the end as the ico file ends up the same size either way :)

convert -density 256x256 -background transparent icon.svg -define icon:auto-resize -colors 256 icon.ico

@gravyboat
Copy link
Member Author

I'll try to get around to this over the weekend, been a bit busy lately unfortunately.

@gravyboat
Copy link
Member Author

gravyboat commented Dec 14, 2018

Hmm, seems like there is an issue with the ico conversion: convert.im6: width or height exceeds limit icon.ico' @ error/icon.c/WriteICONImage/833. Looks like this is due to icon:auto-resize requiring a 256x256 input image.

@gravyboat
Copy link
Member Author

I messed with the image conversion but it wasn't working properly so I've gone back to the simplified convert and mv. If you want to mess with it some more feel free @beardypig, but I'm not even sure if we want to use imagemagick for the svg -> ico conversion as it seems like people have had pretty mixed results. If anyone else had feedback let me know, otherwise let's get this merged in so we can do a 1.0 release. This is the last hurdle to do so I believe.

@beardypig
Copy link
Member

It worked fine for me... must be an old version on the travis vm :(
My only other comment would be that using optipng doesn't appear to be required as the ico file will end up the same size with or without it :)

@gravyboat
Copy link
Member Author

gravyboat commented Dec 15, 2018

@beardypig The optipng command is further compressing the icon by between 6%-28% per image: https://travis-ci.org/streamlink/streamlink/jobs/467841224#L1742 depending on the original png size. It's not a huge gain, but the smaller we can keep the files the better. If you want me to remove it however I can. If not let's get this approved so we can move along the 1.0 release :)

@gravyboat gravyboat mentioned this pull request Dec 15, 2018
@beardypig
Copy link
Member

@gravyboat sure it compresses the pngs, but then the pngs are turned in to an ico which (in my testing) ended up the same size wether the input pngs were compressed or not :)

@gravyboat
Copy link
Member Author

@beardypig Fair enough! I've removed it and updated the ico creation command.

.travis.yml Outdated
packages:
- nsis
- imagemagick
- optipng
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- optipng

No need to install it now :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bah this is what I get for trying to crunch this in before going somewhere! Fixed.

@beardypig
Copy link
Member

LGTM.

@back-to
Copy link
Collaborator

back-to commented Dec 18, 2018

the old file doggo.ico and its references could be removed at the same time.

https://github.com/streamlink/streamlink/blob/87a55fe4a026c5673f4135ddb6a9f03cd9a1c5b4/win32/doggo.ico

Streamlink also makes use of an image (doggo.ico) created by Jinho Jung, distributed under the CC BY-SA 2.0 license.

streamlink/NOTICE

Lines 51 to 102 in 87a55fe

doggo.ico License
=================
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
1. Definitions
"Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.
"Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.
"Licensor" means the individual or entity that offers the Work under the terms of this License.
"Original Author" means the individual or entity who created the Work.
"Work" means the copyrightable work of authorship offered under the terms of this License.
"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
"License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
to create and reproduce Derivative Works;
to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.
For the avoidance of doubt, where the work is a musical composition:
Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work.
Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).
Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.
4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested.
You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License.
If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
8. Miscellaneous
Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.

Streamlink also makes use of an image (doggo.ico) created by Jinho Jung, distributed under the CC BY-SA 2.0 license.

doggo.ico License
=================
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
1. Definitions
"Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License.
"Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License.
"Licensor" means the individual or entity that offers the Work under the terms of this License.
"Original Author" means the individual or entity who created the Work.
"Work" means the copyrightable work of authorship offered under the terms of this License.
"You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
"License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws.
3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works;
to create and reproduce Derivative Works;
to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works;
to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works.
For the avoidance of doubt, where the work is a musical composition:
Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work.
Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions).
Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions).
The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved.
4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any reference to such Licensor or the Original Author, as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any reference to such Licensor or the Original Author, as requested.
You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.0 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License.
If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and give the Original Author credit reasonable to the medium or means You are utilizing by conveying the name (or pseudonym if applicable) of the Original Author if supplied; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit.
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. Termination
This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
8. Miscellaneous
Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.

@gravyboat
Copy link
Member Author

@back-to Good catch, removed the mentions and the ico itself. @beardypig If there's nothing else let's merge this so we can proceed on to 1.0. We really need to do a new release.

@bastimeyer
Copy link
Member

bastimeyer commented Dec 20, 2018

Can you please move the generated files into the build/files/icons directory instead of just writing them into $PWD? Otherwise it'll pollute the repo's working tree when building the installer locally. The build directory is already being ignored by .gitignore and build/files already contains other files for building the installer.

$ ./scripts/makeinstaller.sh 2>&1 >/dev/null
$ git status
HEAD detached at refs/pull/upstream/2165
Untracked files:
  (use "git add <file>..." to include in what will be committed)

	icon-16.png
	icon-256.png
	icon-32.png
	icon-48.png
	win32/icon.ico

As a suggestion:

diff --git a/script/makeinstaller.sh b/script/makeinstaller.sh
index b1610069..712195c4 100755
--- a/script/makeinstaller.sh
+++ b/script/makeinstaller.sh
@@ -18,9 +18,10 @@ build_dir="$(pwd)/build"
 build_dir_plugins="${build_dir}/lib/streamlink/plugins"
 nsis_dir="${build_dir}/nsis"
 files_dir="${build_dir}/files"
+icons_dir="${files_dir}/icons"
 # get the dist directory from an environment variable, but default to the build/nsis directory
 dist_dir="${STREAMLINK_INSTALLER_DIST_DIR:-$nsis_dir}"
-mkdir -p "${build_dir}" "${dist_dir}" "${nsis_dir}" "${files_dir}"
+mkdir -p "${build_dir}" "${dist_dir}" "${nsis_dir}" "${files_dir}" "${icons_dir}"
 
 echo "Building streamlink-${STREAMLINK_VERSION} package..." 1>&2
 python setup.py build 1>&2
@@ -46,10 +47,9 @@ done
 echo "Creating images" 1>&2
 # Create images
 for size in 16 32 48 256; do
-  inkscape --without-gui --export-png="icon-${size}.png" -w ${size} -h ${size} icon.svg
+  inkscape --without-gui --export-png="${icons_dir}/icon-${size}.png" -w ${size} -h ${size} icon.svg
 done
-convert icon-{16,32,48,256}.png icon.ico
-mv icon.ico ./win32/icon.ico
+convert "${icons_dir}"/icon-{16,32,48,256}.png "${icons_dir}/icon.ico"
 
 
 echo "Building ${STREAMLINK_INSTALLER} installer..." 1>&2
@@ -59,7 +59,7 @@ cat > "${build_dir}/streamlink.cfg" <<EOF
 name=Streamlink
 version=${STREAMLINK_VERSION}
 entry_point=streamlink_cli.main:main
-icon=../win32/icon.ico
+icon=${icons_dir}/icon.ico
 
 [Python]
 version=3.6.6

I think this should be it after you've added these changes. Just built the installer and it's working fine.

@gravyboat
Copy link
Member Author

@bastimeyer Good suggestion, should be good to merge now.

apt:
packages:
- nsis
- imagemagick
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think imagemagick is used anymore and it could be removed here
c0b0ac6

packages:
- nsis
- imagemagick
- inkscape
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a test if inkscape is installed should be added in script/makeinstaller.sh

command -v makensis > /dev/null 2>&1 || { echo >&2 "makensis is required to build the installer. Aborting."; exit 1; }
command -v pynsist > /dev/null 2>&1 || { echo >&2 "pynsist is required to build the installer. Aborting."; exit 1; }

command -v inkscape > /dev/null 2>&1 || { echo >&2 "inkscape is required to build the installer. Aborting."; exit 1; }

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done, I also added one for imagemagick. Good idea.

@gravyboat
Copy link
Member Author

Any other comments? Otherwise let's get this merged so we can do a 1.0 release!

@gravyboat
Copy link
Member Author

@bastimeyer Looks like everyone has approved it, can you merge (with a squash from the interface is fine)? I don't like to merge my own PRs.

@bastimeyer bastimeyer merged commit 94a8a73 into streamlink:master Dec 31, 2018
@bastimeyer
Copy link
Member

I usually don't like using the Github UI for merging PRs, because it uses a different committer name... I tried to merge it locally with the correct commit author applied and it was all fine, but it didn't accept it when I tried to push it because of the CI config of the repo and the protected master branch. Whatever...

@gravyboat gravyboat deleted the feature/update_icon branch December 31, 2018 03:47
jackyzy823 pushed a commit to jackyzy823/streamlink that referenced this pull request Mar 20, 2019
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Apr 1, 2020
streamlink 1.3.1 (2020-01-27)

A small patch release that addresses the removal of MPV's legacy option syntax, also with fixes of several plugins, the addition of the --twitch-disable-reruns parameter and dropped support for Python 3.4.

streamlink 1.3.0 (2019-11-22)

A new release with plugin updates and fixes, including Twitch.tv (see #2680), which had to be delayed due to back and forth API changes.

The Twitch.tv workarounds mentioned in #2680 don't have to be applied anymore, but authenticating via --twitch-oauth-token has been disabled, regardless of the origin of the OAuth token (via --twitch-oauth-authenticate or the Twitch website). In order to not introduce breaking changes, both parameters have been kept in this release and the user name will still be logged when using an OAuth token, but receiving item drops or accessing restricted streams is not possible anymore.

Plugins for the following sites have also been added:

    albavision
    news.now.com
    twitcasting.tv
    viu.tv
    vlive.tv
    willax.tv

streamlink 1.2.0 (2019-08-18)

Here are the changes for this month's release

    Multiple plugin fixes
    Fixed single hyphen params at the beginning of --player-args (#2333)
    --http-proxy will set the default value of --https-proxy to same as --http-proxy. (#2536)
    DASH Streams will handle headers correctly (#2545)
    the timestamp for FFMPEGMuxer streams will start with zero (#2559)

streamlink 1.1.1 (2019-04-02)

This is just a small patch release which fixes a build/deploy issue with the new special wheels for Windows on PyPI. (#2392)

streamlink 1.0.0 (2019-01-30)

The celebratory release of Streamlink 1.0.0!

A lot of hard work has gone into getting Streamlink to where it is. Not only is Streamlink used across multiple applications and platforms, but companies as well.

Streamlink started from the inaugural fork of Livestreamer on September 17th, 2016.

Since then, We've hit multiple milestones:

    Over 886 PRs
    Hit 3,000 commits in Streamlink
    Obtaining our first sponsors as well as backers of the project
    The creation of our own logo (streamlink/streamlink#1123)

Thanks to everyone who has contributed to Streamlink (and our backers)! Without you, we wouldn't be where we are today.

Without further ado, here are the changes in release 1.0.0:

    We have a new icon / logo for Streamlink! (streamlink/streamlink#2165)
    Updated dependencies (streamlink/streamlink#2230)
    A ton of plugin updates. Have a look at this search query for all the recent updates.
    You can now provide a custom key URI to override HLS streams (streamlink/streamlink#2139). For example: --hls-segment-key-uri <URI>
    User agents for API communication have been updated (streamlink/streamlink#2194)
    Special synonyms have been added to sort "best" and "worst" streams (streamlink/streamlink#2127). For example: streamlink --stream-sorting-excludes '>=480p' URL best,best-unfiltered
    Process output will no longer show if tty is unavailable (streamlink/streamlink#2090)
    We've removed BountySource in favour of our OpenCollective page. If you have any features you'd like to request, please open up an issue with the request and possibly consider backing us!
    Improved terminal progress display for wide characters (streamlink/streamlink#2032)
    Fixed a bug with dynamic playlists on playback (streamlink/streamlink#2096)
    Fixed makeinstaller.sh (streamlink/streamlink#2098)
    Old Livestreamer deprecations and API references were removed (streamlink/streamlink#1987)
    Dependencies have been updated for Python (streamlink/streamlink#1975)
    Newer and more common User-Agents are now used (streamlink/streamlink#1974)
    DASH stream bitrates now round-up to the nearest 10, 100, 1000, etc. (streamlink/streamlink#1995)
    Updated documentation on issue templates (streamlink/streamlink#1996)
    URL have been added for better processing of HTML tags (streamlink/streamlink#1675)
    Fixed sort and prog issue (streamlink/streamlink#1964)
    Reformatted issue templates (streamlink/streamlink#1966)
    Fixed crashing bug with player-continuous-http option (streamlink/streamlink#2234)
    Make sure all dev dependencies (streamlink/streamlink#2235)
    -r parameter has been replaced for --rtmp-rtmpdump (streamlink/streamlink#2152)

Breaking changes:

    A large number of unmaintained or NSFW plugins have been removed. You can find the PR that implemented that change here: streamlink/streamlink#2003 . See our CONTRIBUTING.md documentation for plugin policy.
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Apr 6, 2020
streamlink 1.3.1 (2020-01-27)

A small patch release that addresses the removal of MPV's legacy option syntax, also with fixes of several plugins, the addition of the --twitch-disable-reruns parameter and dropped support for Python 3.4.

streamlink 1.3.0 (2019-11-22)

A new release with plugin updates and fixes, including Twitch.tv (see #2680), which had to be delayed due to back and forth API changes.

The Twitch.tv workarounds mentioned in #2680 don't have to be applied anymore, but authenticating via --twitch-oauth-token has been disabled, regardless of the origin of the OAuth token (via --twitch-oauth-authenticate or the Twitch website). In order to not introduce breaking changes, both parameters have been kept in this release and the user name will still be logged when using an OAuth token, but receiving item drops or accessing restricted streams is not possible anymore.

Plugins for the following sites have also been added:

    albavision
    news.now.com
    twitcasting.tv
    viu.tv
    vlive.tv
    willax.tv

streamlink 1.2.0 (2019-08-18)

Here are the changes for this month's release

    Multiple plugin fixes
    Fixed single hyphen params at the beginning of --player-args (#2333)
    --http-proxy will set the default value of --https-proxy to same as --http-proxy. (#2536)
    DASH Streams will handle headers correctly (#2545)
    the timestamp for FFMPEGMuxer streams will start with zero (#2559)

streamlink 1.1.1 (2019-04-02)

This is just a small patch release which fixes a build/deploy issue with the new special wheels for Windows on PyPI. (#2392)

streamlink 1.0.0 (2019-01-30)

The celebratory release of Streamlink 1.0.0!

A lot of hard work has gone into getting Streamlink to where it is. Not only is Streamlink used across multiple applications and platforms, but companies as well.

Streamlink started from the inaugural fork of Livestreamer on September 17th, 2016.

Since then, We've hit multiple milestones:

    Over 886 PRs
    Hit 3,000 commits in Streamlink
    Obtaining our first sponsors as well as backers of the project
    The creation of our own logo (streamlink/streamlink#1123)

Thanks to everyone who has contributed to Streamlink (and our backers)! Without you, we wouldn't be where we are today.

Without further ado, here are the changes in release 1.0.0:

    We have a new icon / logo for Streamlink! (streamlink/streamlink#2165)
    Updated dependencies (streamlink/streamlink#2230)
    A ton of plugin updates. Have a look at this search query for all the recent updates.
    You can now provide a custom key URI to override HLS streams (streamlink/streamlink#2139). For example: --hls-segment-key-uri <URI>
    User agents for API communication have been updated (streamlink/streamlink#2194)
    Special synonyms have been added to sort "best" and "worst" streams (streamlink/streamlink#2127). For example: streamlink --stream-sorting-excludes '>=480p' URL best,best-unfiltered
    Process output will no longer show if tty is unavailable (streamlink/streamlink#2090)
    We've removed BountySource in favour of our OpenCollective page. If you have any features you'd like to request, please open up an issue with the request and possibly consider backing us!
    Improved terminal progress display for wide characters (streamlink/streamlink#2032)
    Fixed a bug with dynamic playlists on playback (streamlink/streamlink#2096)
    Fixed makeinstaller.sh (streamlink/streamlink#2098)
    Old Livestreamer deprecations and API references were removed (streamlink/streamlink#1987)
    Dependencies have been updated for Python (streamlink/streamlink#1975)
    Newer and more common User-Agents are now used (streamlink/streamlink#1974)
    DASH stream bitrates now round-up to the nearest 10, 100, 1000, etc. (streamlink/streamlink#1995)
    Updated documentation on issue templates (streamlink/streamlink#1996)
    URL have been added for better processing of HTML tags (streamlink/streamlink#1675)
    Fixed sort and prog issue (streamlink/streamlink#1964)
    Reformatted issue templates (streamlink/streamlink#1966)
    Fixed crashing bug with player-continuous-http option (streamlink/streamlink#2234)
    Make sure all dev dependencies (streamlink/streamlink#2235)
    -r parameter has been replaced for --rtmp-rtmpdump (streamlink/streamlink#2152)

Breaking changes:

    A large number of unmaintained or NSFW plugins have been removed. You can find the PR that implemented that change here: streamlink/streamlink#2003 . See our CONTRIBUTING.md documentation for plugin policy.
Billy2011 pushed a commit to Billy2011/streamlink-27 that referenced this pull request May 14, 2020
mkbloke pushed a commit to mkbloke/streamlink that referenced this pull request Aug 18, 2020
resiproxy pushed a commit to resiproxy/streamlink that referenced this pull request Nov 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants