2012-10-21 01:14:50 +00:00
|
|
|
<!doctype html>
|
2016-03-20 17:50:14 +00:00
|
|
|
<html>
|
2011-06-07 19:10:59 +00:00
|
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
2016-03-20 17:57:30 +00:00
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
2012-10-21 01:14:50 +00:00
|
|
|
|
2021-05-23 09:47:07 +00:00
|
|
|
<title>TubeStats</title>
|
2012-10-21 01:14:50 +00:00
|
|
|
|
2021-05-23 09:47:07 +00:00
|
|
|
|
2020-03-06 18:58:40 +00:00
|
|
|
<link rel="stylesheet" href="dist/reset.css">
|
|
|
|
<link rel="stylesheet" href="dist/reveal.css">
|
2021-05-23 09:47:07 +00:00
|
|
|
<link rel="stylesheet" href="dist/theme/simple.css" id="theme">
|
2012-08-08 05:14:12 +00:00
|
|
|
|
2020-05-08 19:04:19 +00:00
|
|
|
<!-- Theme used for syntax highlighted code -->
|
2020-05-19 09:02:59 +00:00
|
|
|
<link rel="stylesheet" href="plugin/highlight/monokai.css" id="highlight-theme">
|
2011-06-07 19:10:59 +00:00
|
|
|
</head>
|
|
|
|
<body>
|
2012-06-03 21:30:37 +00:00
|
|
|
<div class="reveal">
|
2011-12-27 05:29:00 +00:00
|
|
|
<div class="slides">
|
2021-05-23 09:47:07 +00:00
|
|
|
<section data-markdown>
|
|
|
|
# TubeStats
|
|
|
|
*A hobby project: Consistency in a YouTube channel*
|
|
|
|
|
|
|
|
Shivan Sivakumaran
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
## Inspiration
|
|
|
|
- Ali Abdaal
|
|
|
|
- Consistency - how consistent?
|
|
|
|
- Getting better as a beginner
|
|
|
|
- www.tubestats.app
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
## What does TubeStats do?
|
|
|
|
1. Takes user input
|
|
|
|
2. Provides statistics
|
|
|
|
</section>
|
|
|
|
<section data-background-image="tubestats_parsing.gif"
|
|
|
|
data-background-size="750px">
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
## 1. User input
|
|
|
|
```python
|
|
|
|
# Channel ID
|
|
|
|
'UCoOae5nYA7VqaXzerajD0lg'
|
|
|
|
# Link to channel
|
|
|
|
'https://www.youtube.com/channel/UCoOae5nYA7VqaXzerajD0lg'
|
|
|
|
# Link to video
|
|
|
|
'https://www.youtube.com/watch?v=epF2SYpWtos'
|
|
|
|
# Video ID
|
|
|
|
'epF2SYpWtos'
|
|
|
|
```
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
## 2. Statistics
|
|
|
|
![](all-graph.png)
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
![](time-diff.png)
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
## How does TubeStats work?
|
|
|
|
### Part 1 of 2
|
|
|
|
1. How to set up a development environment?
|
|
|
|
2. How to access the video information?
|
|
|
|
3. How to store password and API keys?
|
|
|
|
4. How do we get and store the video statistics?
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
## Development environment
|
|
|
|
```bash
|
|
|
|
$ mkdir tubestats
|
|
|
|
$ cd tubestats
|
|
|
|
|
|
|
|
$ python3 -m venv venv
|
|
|
|
$ source venv/bin/activate
|
|
|
|
$ (venv)
|
|
|
|
|
|
|
|
$ git init
|
|
|
|
```
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
## Video information
|
|
|
|
- use `beautifulsoup`, `scraPY`, `selenium`
|
|
|
|
- YouTube Data API
|
|
|
|
</section>
|
2021-05-23 10:29:03 +00:00
|
|
|
<section data-markdown>
|
|
|
|
## Storing passwords
|
|
|
|
- Hard code?
|
|
|
|
- `python-dotenv`
|
|
|
|
- `.env`
|
|
|
|
- `.gitignore`
|
|
|
|
</section>
|
|
|
|
<section data-markdown>
|
|
|
|
```python
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
|
|
load_dotenv()
|
|
|
|
API_KEY = os.getenv('API_KEY')
|
|
|
|
```
|
|
|
|
</section>
|
2021-05-23 09:47:07 +00:00
|
|
|
<section data-markdown>
|
|
|
|
## How does TubeStats work?
|
|
|
|
### Part 2 of 2
|
|
|
|
5. How to organise the code?
|
|
|
|
6. How to test the code?
|
|
|
|
7. How to display the data and allow interaction?
|
|
|
|
8. How to account for variable input?
|
|
|
|
|
|
|
|
|
2011-12-27 05:29:00 +00:00
|
|
|
</div>
|
2011-06-07 19:10:59 +00:00
|
|
|
</div>
|
2012-03-24 16:48:16 +00:00
|
|
|
|
2020-05-04 08:39:37 +00:00
|
|
|
<script src="dist/reveal.js"></script>
|
2020-05-18 18:52:51 +00:00
|
|
|
<script src="plugin/notes/notes.js"></script>
|
2020-05-18 12:41:56 +00:00
|
|
|
<script src="plugin/markdown/markdown.js"></script>
|
|
|
|
<script src="plugin/highlight/highlight.js"></script>
|
2011-12-05 02:07:33 +00:00
|
|
|
<script>
|
2020-05-18 18:52:51 +00:00
|
|
|
// More info about initialization & config:
|
2020-05-19 16:27:00 +00:00
|
|
|
// - https://revealjs.com/initialization/
|
|
|
|
// - https://revealjs.com/config/
|
2012-08-12 00:25:55 +00:00
|
|
|
Reveal.initialize({
|
2019-06-10 04:57:07 +00:00
|
|
|
hash: true,
|
2020-05-18 18:52:51 +00:00
|
|
|
|
2020-05-19 16:27:00 +00:00
|
|
|
// Learn about plugins: https://revealjs.com/plugins/
|
2020-04-23 07:39:26 +00:00
|
|
|
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
|
2012-08-12 00:25:55 +00:00
|
|
|
});
|
2012-08-04 19:53:52 +00:00
|
|
|
</script>
|
2011-06-07 19:10:59 +00:00
|
|
|
</body>
|
2012-08-04 04:33:27 +00:00
|
|
|
</html>
|