background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Download "Automating Instagram with Python and Selenium - EuroPython2017"

input logo icon
Cover of audio
Please wait. We're preparing links for easy ad-free video watching and downloading.
console placeholder icon
Video tags
|

Video tags

python
instagram
selenium
coding
programming
conference
europython
talk
Subtitles
|

Subtitles

subtitles menu arrow
  • ruRussian
Download
00:00:02
okay it's now time for the the next
00:00:04
session and we have Tim Gman talking to
00:00:06
us about automating Instagram with
00:00:08
python and selenium please give them a
00:00:10
warm
00:00:12
[Applause]
00:00:15
welcome hey everyone thanks for coming
00:00:17
and welcome to automated Instagram with
00:00:19
python and selenium and I hope you're a
00:00:22
little bit excited because we''ll been
00:00:23
talking about some great stuff including
00:00:26
why you should use automation what
00:00:27
selenium is we'll do some Instagram
00:00:30
automation right here and talk about a
00:00:32
page object design pattern and after
00:00:35
that we'll quickly take a look at my
00:00:36
tool instapy and last but not least we
00:00:39
will go into why open source is
00:00:41
important and how you can level up your
00:00:43
own open source Pro portfolio and
00:00:47
projects uh like has been said I'm Tim
00:00:50
and I'm currently a c student in Germany
00:00:52
and the creator of instapy and if you
00:00:55
have any questions feel free to contact
00:00:56
me on any of the social medias or
00:00:59
directly we are Gmail I'll be happy to
00:01:01
chat and if you have any questions later
00:01:05
today or tomorrow and you can't remember
00:01:07
my face I got this white dot on the back
00:01:10
of my head and it's really kind of to
00:01:14
remember
00:01:15
me also make sure to follow me on
00:01:17
Twitter because I'll be posting the
00:01:18
slide still
00:01:20
later but now without wasting any
00:01:23
further time let's get right into it so
00:01:25
why should you do
00:01:27
automation I'm pretty sure every single
00:01:30
one in this room has at least one task
00:01:32
he could and actually should automate
00:01:35
but they don't do it they instead just
00:01:37
do it by hand and I interestingly got
00:01:41
some emails through instapy from social
00:01:44
marketing companies that told me that
00:01:46
asked me to automate their Instagram
00:01:49
growth process because they have like um
00:01:53
one or two people sitting there and
00:01:54
logging into clients accounts liking
00:01:57
pictures commenting stuff and following
00:01:59
people and they do it all by hand eight
00:02:01
hours a day and I think this is really
00:02:04
ridiculous especially since automating
00:02:06
stuff is most of the time onetime effort
00:02:09
you don't have to do it every time you
00:02:10
might have to make some slight
00:02:12
adjustments but the big part is done and
00:02:16
it will save you time the more the more
00:02:19
often you have to do it especially since
00:02:21
a lot of tasks are EAS automatable than
00:02:26
you actually think they are I just
00:02:29
recently had to to send an email to
00:02:31
every single contact on a CSV file and I
00:02:34
could have gone in there and do this by
00:02:36
hand but instead I just wrote a script
00:02:38
to go through the CSV file and send out
00:02:41
an email to everything so I had time for
00:02:43
more important
00:02:44
stuff and speaking of Instagram or
00:02:48
Twitter Facebook you could actually do
00:02:51
something like this but as things gets
00:02:54
more complex this will really explode in
00:02:56
complexity
00:02:58
and has some some disadvantages that's
00:03:01
why we will use a software only solution
00:03:03
and we will use selenium here and I
00:03:06
don't know how many of you have H
00:03:08
selenium uh could you give me quick hand
00:03:10
sign Oh okay that's quite a lot for
00:03:13
those who don't know uh selenium is
00:03:15
actually a testing tool for front ends
00:03:17
especially web front ends but you can
00:03:20
also do it with Java front ends and uh
00:03:24
yeah it's actually for testing your web
00:03:26
apps for example you could test a flask
00:03:30
web app with it but it's also very good
00:03:34
for automating boring tasks which of
00:03:37
course liking stuff uh on Instagram is
00:03:40
if you want to do it
00:03:44
efficiently and who has already he of
00:03:48
react VJs or angular probably everyone
00:03:51
and you can't uh crawl websites which
00:03:54
are dynamically rendered like Facebook
00:03:57
Twitter Instagram with with uh simple
00:04:00
requests that's why selenium is also
00:04:02
very
00:04:04
interesting and since we're using python
00:04:07
here installing it is as easy as pip
00:04:09
install selenium and we're now ready to
00:04:12
do some real Instagram automation so
00:04:15
let's just take a look at what we have
00:04:18
to do we have to start a new browser we
00:04:20
have to navigate to Instagram once we're
00:04:22
on Instagram we can log Us in and once
00:04:25
we're logged in we can then start to
00:04:26
click these little hearty icons to
00:04:29
actually like
00:04:30
pictures and since we're using selenium
00:04:33
here this is really easy and we have to
00:04:36
Simply import the web driver element
00:04:39
from from selenium and once we've done
00:04:42
that we can instantiate our a new
00:04:44
browser and in our case we will just use
00:04:46
the Chrome browser here but you can use
00:04:48
Firefox or check out the documentation
00:04:51
which browsers are also
00:04:53
supported and in the braises here you
00:04:55
can pass the path to the Chrome driver
00:04:58
this is not necessary but gives you some
00:05:01
nice um Security on different platforms
00:05:06
and once we've got our browser object
00:05:07
ready we can then use the get method to
00:05:12
navigate to any page in our case of
00:05:13
course this is
00:05:15
Instagram and once we're on Instagram we
00:05:18
can
00:05:20
then get to our next step and well the
00:05:23
sleep is just here to make sure the
00:05:25
browser doesn't close instantly and we
00:05:26
can see something and the browser.
00:05:28
closes here for for a clean exit which
00:05:31
is recommended by
00:05:34
selenium let's take a look at what
00:05:36
happens so if we
00:05:39
enter if we start the script we will see
00:05:42
that uh it opens a new browser and
00:05:44
navigates to
00:05:47
Instagram and if you're now on Instagram
00:05:50
we can we see that there is um there is
00:05:54
no login form it's simply the signup
00:05:57
form and we have to make sure we get to
00:05:58
the login form form
00:06:01
here do you see yeah um and in this case
00:06:05
there is this little login link on the
00:06:06
bottom of the page with which we can
00:06:08
switch from the signup form to the login
00:06:11
form and this is really good point to
00:06:14
introduce A New Concept here uh from
00:06:17
selenium and this is finding and
00:06:19
clicking elements so so we in order to
00:06:22
find an element on a page we can take a
00:06:25
look at a page source and we have to
00:06:27
find a nice signature of the element and
00:06:29
in this case it's just an a tag with the
00:06:32
class of underscore FC and so on and the
00:06:36
text of login so we use that knowledge
00:06:40
to get the element we are our browser
00:06:44
element and for Chrome you can simply
00:06:47
use the dev tools as well as Safari they
00:06:50
all have very nice Dev tools where you
00:06:52
can search elements pretty
00:06:55
efficiently if we translate this into
00:06:57
code now we can use our browser object
00:07:00
to find element by X paath and for those
00:07:02
who don't know xath is just a query
00:07:05
language for XML documents as HTML in
00:07:09
this example and the X path here is just
00:07:12
like I said we will use the uh A- link
00:07:16
as an anchor and we will search for the
00:07:19
A- link which has an tag a name of login
00:07:22
and text of login in this case and since
00:07:25
we now have the login element we can
00:07:28
simply do trigger Tri a click on it
00:07:30
which will actually trigger a click on
00:07:33
the login element here and you can see
00:07:35
this little
00:07:36
flickering and this is just selenium
00:07:39
clicking on the Link login link to get
00:07:41
us to the login form
00:07:42
here perfect so we now on the login form
00:07:46
and can log Us in we now have only have
00:07:48
to send our username and password to the
00:07:52
login form and once we've done that we
00:07:53
are logged in to Instagram so let's
00:07:57
check that out we first have to again
00:08:01
check the page source for our elements
00:08:03
and we'll also introduce A New Concept
00:08:05
here which is called action chains and
00:08:08
it does what it is called after it
00:08:10
simply chains actions together and in
00:08:14
this case we will just look for the form
00:08:16
element and the login button and if we
00:08:20
yet and translate this into code again
00:08:22
we will get something like this and
00:08:24
again we will use the browser element to
00:08:27
find stuff by X path and for the inputs
00:08:30
it's just for/ for /d/ input which is of
00:08:35
course X path for our input
00:08:38
forum and then we can instantiate a new
00:08:40
action
00:08:41
chain element which will pass the
00:08:44
browser and we then have in access to
00:08:47
some methods here which are move to
00:08:49
element click Send keys and perform
00:08:53
which will trigger the whole action
00:08:56
chain to uh
00:08:57
execute and if if we take a look at the
00:09:00
code from bottom to from the top to the
00:09:03
bottom we first move to the first input
00:09:05
element which is the username we then
00:09:07
click the input element and this will
00:09:11
really have a more natur natural feeling
00:09:15
and a more human feeling than just
00:09:16
trigging clicks by
00:09:19
JavaScript and after we clicked into
00:09:22
this user element we can then send our
00:09:25
username to it in this case it's
00:09:27
contacting
00:09:28
joho and and once we've done that we can
00:09:30
move to the second form element of
00:09:32
course and send our password in there
00:09:36
after we entered our password and
00:09:37
username we can then simply create a new
00:09:40
action chain
00:09:42
and of course click the element and I
00:09:45
just added a second action chain here
00:09:47
because um you have to see that it you
00:09:50
can also use it for one element only you
00:09:52
don't have to have like 10 elements or
00:09:54
two of
00:09:56
three so again let's take a look at what
00:09:59
this code snippet
00:10:01
does and this case it will just go in
00:10:03
and enter username and password and
00:10:06
click the login element here and of
00:10:09
course this will trigger our Instagram
00:10:11
to load the Fe feed page and we are
00:10:14
actually now looked in
00:10:16
successfully this is where it gets
00:10:18
interesting because once we're logged in
00:10:21
we can't instantly start C clicking on
00:10:23
these hearty icons because we when we
00:10:27
take a close look at Instagram
00:10:30
and Twitter of course and Facebook all
00:10:31
have this feature there is this little
00:10:33
circly loading but loading circle on the
00:10:36
bottom of the page which will only get
00:10:38
new content once we reach the bottom of
00:10:41
the page so there's not an too big of an
00:10:44
overhead here and this will just
00:10:47
dynamically load new content into our
00:10:49
page and depending on how many images
00:10:52
how many stuff we want we have to first
00:10:54
get get hold of that and make sure that
00:10:58
we have have enough P elements on the
00:11:00
page if we want to do 20 it's not a
00:11:02
problem but if we want to do 100 or 200
00:11:04
elements on our front page we will have
00:11:07
to tackle this
00:11:08
and again we will introduce New Concept
00:11:11
which are special keys and with the
00:11:14
normal Sent send Keys method we can
00:11:17
simply send text like our username and
00:11:19
password but we have to use special keys
00:11:21
for stuff like delete Enter space bar
00:11:26
and in our case uh home the home and the
00:11:29
End Key which will trigger the page to
00:11:31
go to the top of the page and the end
00:11:33
key will trigger it to be go to the
00:11:36
bottom and let's translate this into
00:11:38
code again this will lead to something
00:11:41
like this we have to import the keys the
00:11:43
special keys from selenium again and
00:11:45
from then on we can simply use the keys
00:11:48
and here's a special special element
00:11:52
which we have to Define before is the
00:11:54
body element because we need an anchor
00:11:56
to send our commands to we need an
00:11:58
anchor to send this keys to and we can't
00:12:01
just use maybe the Instagram logo or
00:12:05
something like that but we have to have
00:12:08
a really a solid solid element which
00:12:10
will stay the same in this case it's the
00:12:11
body element because it's of course the
00:12:14
element you click in and you operate in
00:12:16
when you're using the browser
00:12:18
yourself and then we can simply do a for
00:12:21
Loop and in this case we will do it
00:12:23
three times we will go to the bot bottom
00:12:25
of the page to the top again to the
00:12:27
bottom of the page and we will sleep two
00:12:29
seconds in between each to make sure
00:12:31
that the loading actually succeeds and
00:12:33
we will get new
00:12:35
content so if we take another look at
00:12:37
how this code gets executed you will see
00:12:40
that it moves to the bottom of the page
00:12:42
and it moves up again and it it's all it
00:12:44
does it just executes this three times
00:12:46
in a row to make sure we got like 50
00:12:49
elements here to later
00:12:53
like so there is only one step left here
00:12:56
which is finding all the hard elements
00:12:59
and clicking them and you should now be
00:13:01
able to do this all by yourself because
00:13:03
it's we introduced all the concepts here
00:13:05
which are finding elements and clicking
00:13:07
elements of
00:13:09
course and if we take another look at
00:13:12
the page Source here we just have to
00:13:16
find these hard icons and find another
00:13:18
signature here make sure that the
00:13:20
signature is unique to make sure that we
00:13:23
don't get a another element on the page
00:13:25
but exactly the one we need we want
00:13:28
to
00:13:29
and in this case we will use the class
00:13:34
we will use several classes to make
00:13:36
really make sure that we will get only
00:13:38
these elements and we'll just Loop over
00:13:41
it and we will do some printing to make
00:13:44
sure that uh we keep track of how many
00:13:46
elements we already
00:13:48
liked and if we enumerate through it we
00:13:51
will of course add another sleep to make
00:13:53
sure we don't don't get banned
00:13:58
here we will get something like this
00:14:01
where we start up our script from the
00:14:04
start and we will see everything we done
00:14:06
right now so it starts a new browser it
00:14:09
navigates to Instagram once we're on
00:14:11
Instagram it will log Us
00:14:14
in and once we're logged in it will then
00:14:17
as we saw before start to move to the
00:14:20
bottom of the page to the top again and
00:14:22
once it's loaded enough images it can
00:14:26
finally start
00:14:28
to like some pictures we'll just wait a
00:14:31
few seconds here until it's
00:14:35
done and you can will then see that the
00:14:38
page is really like jumping a little bit
00:14:41
there you go and you see that the hard
00:14:43
icons turn red and this is really just a
00:14:47
very
00:14:49
simple automation of of the liking for
00:14:51
your news feed and you can enter you can
00:14:54
add your own automation right now you
00:14:56
can do filtering for friends you can for
00:14:59
example make sure you don't like your
00:15:00
own pictures you can add commenting and
00:15:03
you can add following for the people you
00:15:06
actually see on the front page or maybe
00:15:10
even copy the pictures and post them
00:15:12
yourself or something like that depends
00:15:14
on what really depends on what you want
00:15:16
to do with
00:15:18
it but as you as you've seen right now
00:15:22
we heavily rely on the page structure
00:15:25
and this leads to some problems here
00:15:27
because Instagram Facebook and all these
00:15:30
big Pages where it would be interesting
00:15:33
to do some automation on they changed
00:15:35
their page layout pretty recently and
00:15:37
pretty often and this really leads to
00:15:41
breaks in the code and and make sure
00:15:44
that the code is not working very long
00:15:48
and this is really annoying to fix but
00:15:51
it's pretty quick actually and we'll
00:15:53
look into
00:15:54
some ideas on how to make this more
00:15:57
maintainable and get make sure that our
00:16:00
code is solid more
00:16:02
solid the second thing is different
00:16:04
languages we saw that we rely on the
00:16:07
login text for searching for elements
00:16:11
here and this is
00:16:13
really bad for different countries where
00:16:16
we have for example here in Italy of
00:16:18
course would be Italian or in France it
00:16:20
would be French and so on so we can't we
00:16:23
shouldn't rely on the page uh on the
00:16:25
page language but selenium offer offers
00:16:29
a really nice feature here which we with
00:16:31
which we can simply um Force the browser
00:16:34
to use a specific language and we can
00:16:36
just inforce it to use English in this
00:16:39
case and the most annoying problem is AB
00:16:43
testing and all of these big companies
00:16:45
of course do AB testing for those who
00:16:47
don't know AB testing is just um rolling
00:16:52
out features to a small group in a
00:16:54
specific area like for example all right
00:16:56
we have a new feature we will test it in
00:16:58
only R and if the people in reminy think
00:17:01
this feature is good and like this
00:17:02
feature and there are no problems with
00:17:04
this feature they will roll it out
00:17:06
incrementally to more and more people to
00:17:09
make sure that every person on the
00:17:11
planet if for these big companies gets a
00:17:14
new feature and testing this is really
00:17:17
annoying because you have to make sure
00:17:18
you get all the informations from the
00:17:20
users all right where where are they
00:17:22
located what's what's the language of
00:17:24
their system what system are they using
00:17:27
and all of these small little details
00:17:29
which will or which can lead to a fail
00:17:32
that is really unique to this to that
00:17:37
person but
00:17:40
selenium
00:17:42
uh uh recommends P things an object
00:17:45
design pattern for this page it's called
00:17:48
page object design pattern and it of
00:17:50
course is what it tells it's an object
00:17:53
for every page so we would have an an
00:17:55
object for our login page we would have
00:17:57
an object for our news page and so on
00:18:01
and this really gets us more
00:18:03
maintainable code because we only have
00:18:05
one place to make our changes around the
00:18:08
UI so in order to make changes right now
00:18:12
uh we would have to go through all the
00:18:14
whole code and make all the changes to
00:18:17
the xath and this is really really
00:18:19
annoying and we don't want to do
00:18:21
that it also reduces a duplicated code
00:18:24
because it has a nice layer of
00:18:27
abstraction here which will will move
00:18:29
all the code to one one big bulb and in
00:18:33
this code in this place there will be
00:18:36
the only
00:18:38
logic third thing is it adds through
00:18:41
this abstraction layer it as adds a nice
00:18:44
API layer which we can then use in our
00:18:46
actual code base to kind of get some
00:18:48
readable code and and if we add some
00:18:50
comments and um little hints what we did
00:18:55
here we can really get nice contributors
00:18:58
and make sure that the contributors
00:19:00
understand our code and can contribute
00:19:02
as
00:19:03
well and since we're all real
00:19:06
programmers here we will look at an uml
00:19:08
diagram of this page object this design
00:19:10
pattern here and it looks something like
00:19:13
this well no yeah just joking it looks
00:19:16
more like this and as you can see here
00:19:20
this is an example of the Google search
00:19:22
page uh where
00:19:24
every attribute is an element and in
00:19:27
this case for example the URL is an
00:19:30
attribute the search box is an attribute
00:19:32
and so on and every method reps an
00:19:35
action for example navigation
00:19:37
searching and clicking the field lucky
00:19:40
button for
00:19:41
example and of course it is actually a
00:19:44
test pattern so we have an actual test
00:19:47
class here for each page object we need
00:19:50
a test object
00:19:52
here and don't know don't matter if you
00:19:56
got this right now we will look at an
00:19:58
example with Instagram here and we'll
00:20:00
use the Instagram login form for this
00:20:03
we'll we won't focus on on the App Store
00:20:06
buttons or the
00:20:08
login uh the signup link here we'll just
00:20:11
focus on the username input the password
00:20:14
input input and the login button here
00:20:17
and if we again translate this into code
00:20:20
we will get something like this where we
00:20:21
have a class for our insta login page
00:20:24
and with in within the Constructor
00:20:26
Constructor we will Define every
00:20:29
attribute every element as we said
00:20:32
recently in this case it would be the
00:20:34
user box the password box and the login
00:20:36
button and once we found all these
00:20:38
elements we can then use it in the
00:20:40
complete in the full class right now so
00:20:43
in our case we will implement the login
00:20:45
method and it will get past the username
00:20:48
and password and here in in the login
00:20:51
method we can then instantiate a new
00:20:53
action chain and go through all the
00:20:57
methods here and do move to element like
00:20:59
we did before and one interesting thing
00:21:02
about the page object design pattern is
00:21:05
that it returns a new page object for
00:21:07
the next page we will move to so in our
00:21:09
case as you saw when we log in we will
00:21:12
move to the inst in to the feed page
00:21:14
where our news feed is located so we
00:21:16
will return a new instance of the insta
00:21:19
feed page object in our
00:21:23
case so right now we will switch over to
00:21:27
instapy because don't want to implement
00:21:29
this all yourself and think about how
00:21:32
you can implement this and break your
00:21:34
head about what what changes Instagram
00:21:37
Mak sense something like that and I'm
00:21:39
really amazed and really excited to talk
00:21:42
about this here today because this is
00:21:44
actually what led to this talk and um
00:21:47
I'm really excited how big this got and
00:21:50
what the open source Community made out
00:21:52
of this and it is called instapy of
00:21:55
course and right now we have around 2
00:21:58
cas stars on GitHub which is I think
00:22:00
pretty nice for something like this
00:22:02
especially since there are a lot of
00:22:04
services out there which got token down
00:22:06
by Instagram itself but there were in
00:22:09
there were Services out there and this
00:22:11
is really completely open source
00:22:12
everyone can contribute and look at it
00:22:14
and uh even copy it if they want to I
00:22:19
have uh 32 contributors which are from
00:22:22
which for are into the core developer
00:22:24
team right now and we got over 420 Forks
00:22:28
of this project and I hope there is a
00:22:31
lot more to come because I want to keep
00:22:33
this alive and make sure that people can
00:22:35
actually use it and this many
00:22:38
contributors this many interested people
00:22:41
leads some to some very interesting
00:22:43
stuff like an active community means
00:22:47
there is quick help for everyone so if
00:22:49
someone submits an issue there's an if
00:22:51
if I
00:22:52
can't help him with this issue there are
00:22:55
like 100 200 people that maybe have have
00:22:58
the same problem who can also comment on
00:23:01
his stuff and uh and help me fix all the
00:23:04
problems and make sure that the people
00:23:06
actually can use this and to give you
00:23:09
kind of an impression what instapy can
00:23:11
do here's a little list of features of
00:23:14
course you can do following liking
00:23:16
unfollowing commenting you can like by
00:23:18
tag and you can Target your users
00:23:21
specifically by location for example if
00:23:23
you have a um a pizzeria or uh any kind
00:23:27
of shop you can make sure that only
00:23:30
people in your location will be notified
00:23:33
of course it works on a server so you
00:23:34
can use digital Ocean or any kind of
00:23:36
virtual server to run it it's has Docker
00:23:40
support you can write you can post
00:23:43
emojis and one interesting thing is
00:23:47
clarify I don't know how many of you
00:23:49
know clarify but it's an image uh smart
00:23:53
image recognition API and with it you
00:23:56
can make sure that you don't like any
00:23:57
not safe work stuff or inappropriate
00:23:59
stuff or maybe you're you're from some
00:24:01
country and you don't want to like nude
00:24:04
stuff or it depends on your preferences
00:24:06
and you can really make sure that the
00:24:08
comment pictures you comment on and
00:24:09
people you follow are not some kind of
00:24:12
weirdos
00:24:14
here and I think the API is pretty
00:24:16
interesting too so this is what it looks
00:24:18
like you just have to import instapy
00:24:20
from instapy and in the insta Pyon
00:24:23
structure you can then just pass your
00:24:26
username and password and after the look
00:24:28
in you can do some settings in this case
00:24:30
we will just make sure that we don't
00:24:32
interact with any account that has more
00:24:34
than 2 and a half thousand followers and
00:24:37
we want to do commenting on 10% as well
00:24:40
as following on 10% we want to use the
00:24:43
comments cool awesome and nice um and we
00:24:46
want to make sure that this this bot
00:24:48
don't interact with our real friends so
00:24:50
we can make sure that our real friends
00:24:52
are not included here and of course we
00:24:55
can do some text search where not safe
00:24:58
from work and naked are excluded and
00:25:01
what if some of these don't include
00:25:03
words are included in the text it will
00:25:05
skip the P the picture and not like it
00:25:08
and then we can finally do some liking
00:25:10
by tags for example in this case we will
00:25:12
just like 100 pictures for nature and
00:25:16
c and let's talk about open source in
00:25:19
general and why it's important and I'm
00:25:22
pretty sure a lot of people in here
00:25:24
already do open source and this is
00:25:25
awesome but those who don't know those
00:25:28
who don't do it you really have to think
00:25:31
think about it if you have any project
00:25:33
on your on your hard drive that could be
00:25:35
open source why not do it I mean all of
00:25:38
all in here already use open source for
00:25:41
their projects but why not give
00:25:43
something back to the community if you
00:25:45
have something laying around it doesn't
00:25:46
matter if you contribute it to GitHub or
00:25:49
gitlab and make it open source for
00:25:51
people to use it and I think this is
00:25:53
really the most important thing to think
00:25:56
about it's also good for new developers
00:25:59
to build a portfolio because people will
00:26:01
find you on the internet and if you got
00:26:03
great stuff they might contact you might
00:26:06
want to work with you and even companies
00:26:08
get interested in
00:26:10
you and this is where you get
00:26:12
opportunities from and if you if you
00:26:15
really look interesting they'll contact
00:26:17
you so you don't have to send out
00:26:19
any any papers or something like that to
00:26:22
make to app applicate on uh
00:26:27
companies
00:26:28
to make it nice for you and give you a
00:26:31
little bit of motivation here is what
00:26:33
open source did for me by now I got 12
00:26:37
job offers and nine internship off
00:26:39
internship offers sorry from around the
00:26:41
world as well as a ton of new contacts
00:26:44
that contacted me through instapy and I
00:26:46
think this really speaks for itself if
00:26:48
you got something that's that's
00:26:51
interesting and maybe a little bit
00:26:54
controversial it's
00:26:55
really just a matter of time until until
00:26:58
people think about it and and talk about
00:27:01
it and really give you feedback on it
00:27:05
and want to help out and these job
00:27:07
offers and contexts are from around the
00:27:09
world including Sweden Sydney argentinia
00:27:13
Brazilia the UK USA even from uh Ireland
00:27:19
and Singapore or Shanghai and I think
00:27:22
this really speaks for itself and of
00:27:25
course I got this talk from it which is
00:27:28
nice for me as
00:27:31
well to close this off here are some
00:27:34
tips I think are really important for
00:27:37
your open source portfolio if you're
00:27:38
interested in in doing some open source
00:27:41
stuff make sure to include or to keep
00:27:44
this information and make sure to
00:27:47
improve these tips
00:27:49
here the first one is ADD documentation
00:27:53
I've seen so many projects out there who
00:27:56
has not have have no real documentation
00:28:00
and this is this is really crucial I
00:28:02
know it's annoying for people to write
00:28:04
documentation but if people don't
00:28:07
understand your project or don't even
00:28:08
know what the features of your project
00:28:10
are this is this just insane how should
00:28:13
they use should they look take a look
00:28:15
into the P code I don't think so really
00:28:19
few people actually do
00:28:22
that the second is spread the word you
00:28:24
can use channels like hecken news Reddit
00:28:27
or def post something like this to make
00:28:29
sure that people actually see
00:28:31
your pro um your portfolio and your
00:28:34
projects to make sure that you get
00:28:36
feedback and and people to get people to
00:28:40
talk about your
00:28:41
tool and if nobody since nobody if
00:28:44
nobody hears about your project of
00:28:46
course nobody will use
00:28:48
it the last one is support the users and
00:28:51
this is really time consuming but it's
00:28:54
really worth it it's a lot of work but
00:28:56
it's worth it and
00:28:59
if somebody uses your tool and he stops
00:29:01
using your
00:29:02
tool because they don't get it to work
00:29:05
they will never come back and you you
00:29:08
lost a chance to get a new user so what
00:29:11
what's next for for instapy and this
00:29:14
project we want you to take a look at it
00:29:18
maybe contribute it use it give us
00:29:20
feedback and maybe add some issues or
00:29:22
something like that we will we want to
00:29:24
add new features like a
00:29:26
guey smar to follow in a more human
00:29:29
Automation and like like I said if you
00:29:32
have any questions or recommendations
00:29:35
offers anything just make sure to
00:29:37
contact me on any of the social medias
00:29:39
or Gmail and I'll be happy to chat later
00:29:43
or through one of these channels thank
00:29:45
you for your attention

Description:

Check out the tool InstaPy: https://github.com/timgrossmann/InstaPy Read the article here: https://medium.freecodecamp.org/my-open-source-instagram-bot-got-me-2-500-real-followers-for-5-in-server-costs-e40491358340 Selenium is a tool mostly used for testing GUI applications, but it also gives you the ability to automate online interactions e.g. logging in to your social media accounts and liking the posts of others. Testing shouldn't be the only domain Selenium is the tool to go! Join me for insights about automating the fast changing webpage of Instagram.

Preparing download options

popular icon
Popular
hd icon
HD video
audio icon
Only sound
total icon
All
* — If the video is playing in a new tab, go to it, then right-click on the video and select "Save video as..."
** — Link intended for online playback in specialized players

Questions about downloading video

mobile menu iconHow can I download "Automating Instagram with Python and Selenium - EuroPython2017" video?mobile menu icon

  • http://unidownloader.com/ website is the best way to download a video or a separate audio track if you want to do without installing programs and extensions.

  • The UDL Helper extension is a convenient button that is seamlessly integrated into YouTube, Instagram and OK.ru sites for fast content download.

  • UDL Client program (for Windows) is the most powerful solution that supports more than 900 websites, social networks and video hosting sites, as well as any video quality that is available in the source.

  • UDL Lite is a really convenient way to access a website from your mobile device. With its help, you can easily download videos directly to your smartphone.

mobile menu iconWhich format of "Automating Instagram with Python and Selenium - EuroPython2017" video should I choose?mobile menu icon

  • The best quality formats are FullHD (1080p), 2K (1440p), 4K (2160p) and 8K (4320p). The higher the resolution of your screen, the higher the video quality should be. However, there are other factors to consider: download speed, amount of free space, and device performance during playback.

mobile menu iconWhy does my computer freeze when loading a "Automating Instagram with Python and Selenium - EuroPython2017" video?mobile menu icon

  • The browser/computer should not freeze completely! If this happens, please report it with a link to the video. Sometimes videos cannot be downloaded directly in a suitable format, so we have added the ability to convert the file to the desired format. In some cases, this process may actively use computer resources.

mobile menu iconHow can I download "Automating Instagram with Python and Selenium - EuroPython2017" video to my phone?mobile menu icon

  • You can download a video to your smartphone using the website or the PWA application UDL Lite. It is also possible to send a download link via QR code using the UDL Helper extension.

mobile menu iconHow can I download an audio track (music) to MP3 "Automating Instagram with Python and Selenium - EuroPython2017"?mobile menu icon

  • The most convenient way is to use the UDL Client program, which supports converting video to MP3 format. In some cases, MP3 can also be downloaded through the UDL Helper extension.

mobile menu iconHow can I save a frame from a video "Automating Instagram with Python and Selenium - EuroPython2017"?mobile menu icon

  • This feature is available in the UDL Helper extension. Make sure that "Show the video snapshot button" is checked in the settings. A camera icon should appear in the lower right corner of the player to the left of the "Settings" icon. When you click on it, the current frame from the video will be saved to your computer in JPEG format.

mobile menu iconWhat's the price of all this stuff?mobile menu icon

  • It costs nothing. Our services are absolutely free for all users. There are no PRO subscriptions, no restrictions on the number or maximum length of downloaded videos.