# Youtube_subscription_manager

[![PyPI](http://img.shields.io/pypi/v/youtube-sm.svg)](http://pypi.python.org/pypi/youtube-sm/)
[![example](https://sawyerf.gitlab.io/youtube_sm/exampleshield.svg)](https://sawyerf.gitlab.io/youtube_sm/example.html)
[![docs](https://img.shields.io/static/v1?label=docs&message=master&color=brightgreen)](docs/Home.md)
[<img alt="Github" src="https://ionogy.github.io/kernel.css/GitHub-Mark.png" width="22px">](https://github.com/sawyerf/youtube-sm)
[![GitLab](https://sawyerf.gitlab.io/youtube_sm/gitlab.jpg)](https://gitlab.com/sawyerf/youtube-sm)

<p><img align='right' width=400px height=auto src='https://sawyerf.gitlab.io/youtube_sm/binome.jpg' /></p>

- [Description](#description)
- [Installation](#installation)
- [Usage](#usage)
- [Commands](#commands)
- [Support Platforms](#support-platforms)
- [Example](#example)
- [Type of File](#type-of-file)
- [Cache](#cache)
- [Requirements](#requirements)
- [Compatible](#compatible)
- [Screenshots](#screenshots)

*If you have a problem, create an issue rather than sending me an email otherwise the response time will be longer, Thanks.*

## Description
Youtube_subscription_manager is an alternative to youtube.com to retrieve the videos of your subscriptions feed without requires an account [*(You can also recover the videos of other platform)*](#support-platforms).

It can gather informations about every video in a playlist, a channel or your subsciptions feed and outputs it as a html page, a detailed list or a list of links.

## Installation
1. Clone the project: `git clone https://github.com/sawyerf/youtube-sm.git`
2. Open the folder you just cloned : `cd youtube-sm`
3. Execute the setup: `sudo python3 setup.py install`
4. Recover your subscription file in youtube and you are ready to go !

## Usage

1. Download your subscriptions configuration from youtube.com ([here](https://www.youtube.com/subscription_manager?action_takeout=1))
2. Once this is done, you may load it by using the following command :
```
youtube-sm --init [file]
```

3. Finally, you can start using the program using the commands shown below :
```
youtube-sm [OPTIONS]
```

## Commands

```
-a           URL       Add a sub to your sub list.
-e                     Edit your sub list.
-h                     Print this help text and exit.
-l           URL       Analyze only one sub.
-m           MODE      Choose the type of the output file (html, json, raw, list).
-r                     Remove the cache.
-t           DAYS      Select how many DAYS ago the last content written to your file will be dated .
-v                     Verbose.
--af         FILE      Add a list of sub to your sub list.
--ax         FILE      Add a xml file in your sub list.
--cat                  View your subscriptions.
--css        STYLE     Export the css files (light, dark, switch).
--dead                 Show the dead channels + those who posted no videos.
--help                 Print this help text and exit.
--html                 Recover sub with html page instead of RSS. This method recover more videos.
--init       FILE      Remove all your subs and add new.
--loading              Print a progress bar.
--old                  Show channels who didn't post videos since DAYS.
--output     FILE      Write the output in FILE.
--version              Print version.
--test                 
```

## Support Platforms
- ~~Dailymotion~~
- Evous Manifestation
- Infoconcert
- La Quadrature du Net
- Peertube
- Reddit
- Revolution Permanente
- Twitter
- Youtube

## Example

- Basic
```
youtube-sm
```

- Your sub since 1 month
```
youtube-sm -t 30 --css --loading
```

- All the videos of a channel
```
youtube-sm -l https://www.youtube.com/channel/UC-lHJZR3Gqxm24_Vd_AJ5Yw -t -1 -m list --loading -r --output test.csv
```

- Add a sub
```
youtube-sm -a https://www.youtube.com/channel/UC-lHJZR3Gqxm24_Vd_AJ5Yw
```

## Type of File
#### Raw :
```
{date}     {video_id}     {channel_id}     {title}     {channel}     {link_pic}
```
#### List :
```
https://www.youtube.com/watch?v={video_id}
```
#### View :
```
{views}
```
#### Json :
```json
{
	"url": {
		"content": "https://www.youtube.com/watch?v=ID",
		"image": "https://i.ytimg.com/vi/ID/mqdefault.jpg",
		"uploader": "https://youtube.com/channel/ID"
	},
	"date": "2020-04-23 16:08:22",
	"title": "Video Title",
	"uploader": "Channel",
	"views": "228283"
}
```
#### Html :
```html
<!--NEXT -->
<div class="video">
	<a class="left" href="{video_id}">
		<div class="container">
			<img src="{link_pic}">
			<div class="bottom-right">{time}</div>
		</div>
	</a>
	<a href="https://www.youtube.com/watch?v={video_id}"><h4>{title}</h4> </a>
	<a href="https://www.youtube.com/channel/{channel_id}"> <p>{channel}</p> </a>
	<p>{date}</p>
	<p class="clear"></p>
</div>
```

## Cache
3 files are generated by the program : `sub.swy`, `log` and `data/`.
- `sub.swy` is a list of yours subscriptions.
- `log` contains the script's time of execution.
- `data/` is a folder where the information for every video are stored.

These 3 files are generated in:
- Windows: `C:\Users\<name>\.youtube_sm\`.
- Linux/MacOS:   `/home/<name>/.cache/youtube_sm/.`.

## Requirements
- Python 3

## Compatible
- Linux
- Windows
- Android (Termux)
- MacOS

## Screenshots
<a href="https://sawyerf.gitlab.io/youtube_sm/example.html"><img src="https://sawyerf.gitlab.io/youtube_sm/sub_mob.jpg" alt="Phone screen" width=405px height=720px>
<img src="https://sawyerf.gitlab.io/youtube_sm/sub_pc.jpg" alt="PC screen" width=100% height=auto></a>
