Skip to content

Commit

Permalink
version 0.14.0
Browse files Browse the repository at this point in the history
## New features
- add flags
    - --name-template to give the media's file name template
    - --season-template go give the season part template of the path
- add fields to config.json
    - 	SeasonPathTemplate
        > Template for season path, can be empty to skip season in path. When missing uses default naming
	-   ShowNameTemplate
        >Template for the name of mp4 file, can't be empty. When missing, uses default naming
	-   TitleFilter
        >ShowTitle or Episode title must match this regexp to be downloaded
	-   TitleExclude
        >ShowTitle and Episode title must not match this regexp to be downloaded
- Name template implementation
    - for movies
        > `{{.Title}}.mp4`
    - for shows
        > `{{.Showtitle}} - {{.Aired.Time.Format "2006-01-02"}}.mp4`
    - for series
        > `{{.Showtitle}} - s{{.Season | printf "%02d" }}e{{.Episode | printf "%02d" }} - {{.Title}}.mp4`
- Season path template implementation
    - for movies
        >   (empty)
    - for shows:
        > `Season {{.Aired.Time.Year | printf "%04d" }}`
    - for series
        > `Season {{.Season | printf "%02d" }}`

## Fixes
- artetv
    - Fix #67 [artetv] Can't visit URL "Too Many Requests"
        - Implementation of query throttling
        - Reduce query to search API
  • Loading branch information
simulot committed Feb 14, 2021
1 parent 7e5f07e commit 7e7368f
Show file tree
Hide file tree
Showing 22 changed files with 670 additions and 463 deletions.
98 changes: 83 additions & 15 deletions README.md
Expand Up @@ -58,20 +58,22 @@ tar -czvf aspiratv_0.8.0_Linux_x86_64.tar.gz

```
Usage of aspiratv:
--config string Configuration file name. (default "config.json")
-d, --destination string Destination path for all shows.
--force Force media download.
--headless Headless mode. Progression bars are not displayed.
-b, --keep-bonuses Download bonuses when true (default true)
--log string Give the log file name.
-l, --log-level string Log level (INFO,TRACE,ERROR,DEBUG) (default "ERROR")
-a, --max-aged int Retrieve media younger than MaxAgedDays.
-m, --max-tasks int Maximum concurrent downloads at a time. (default 8)
-p, --provider string Provider to be used with download command. Possible values : artetv, francetv, gulli
-s, --show-path string Force show's path.
-e, --title-exclude string Showtitle and Episode title must not satisfy regexp filter
-f, --title-filter string Showtitle or Episode title must satisfy regexp filter
-n, --write-nfo Write NFO file for KODI,Emby,Plex... (default true)
--config string Configuration file name. (default "config.json")
-d, --destination string Destination path for all shows.
--force Force media download.
--headless Headless mode. Progression bars are not displayed.
-b, --keep-bonuses Download bonuses when true
--log string Give the log file name.
-l, --log-level string Log level (INFO,TRACE,ERROR,DEBUG) (default "ERROR")
-a, --max-aged int Retrieve media younger than MaxAgedDays.
-m, --max-tasks int Maximum concurrent downloads at a time. (default 12)
--name-template template Show name file template
-p, --provider string Provider to be used with download command. Possible values : artetv, francetv, gulli
--season-template template Season directory template
-s, --show-path string Force show's path.
-e, --title-exclude string Showtitle and Episode title must not satisfy regexp filter
-f, --title-filter string Showtitle or Episode title must satisfy regexp filter
-n, --write-nfo Write NFO file for Jellyfin, KODI, Emby, Plex... (default true)
```

Le programme fonctionne selon deux modilités :
Expand Down Expand Up @@ -123,6 +125,66 @@ Exemple, les épisodes seront téléchagés dans le répertoire `~/Videos/Maison
./aspiratv --provider=francetv --show-path = ~/Videos/MaisonF5 download "La maison France 5"
```

### --name-template

Cette option permet de constituer le nom du fichier .mp4 selon vos besoins. Le système de template est système de la librairie standard. [Voir la documentation de la libraie.](https://pkg.go.dev/text/template)

Il est possible d'utiliser les champs suivants:
| Champ | Description |
|-|-
| .Title | Titre de l'épisode
| .Showtitle | Nom de la série, de l'émission
| .Season | Numéro de saison ou année de diffusion
| .Episode | Episode
| .UniqueID | Identifion de l'émission chez le diffuseur (voir exemple)
| .Aired | Date de difusion (voir exemple)


#### Modèle par défaut pour les séries:
`{{.Showtitle}} - s{{.Season | printf "%02d" }}e{{.Episode | printf "%02d" }} - {{.Title}}.mp4`

Exemples :
> Les Dalton - s03e03 - A l'intérieur de Rantanplan.mp4
> Doctor Who - s12e01 - La chute des espions partie 1.mp4
#### Modèle par défaut pour les émissions régulières:
`{{.Showtitle}} - {{.Aired.Time.Format "2006-01-02"}}.mp4`

Exemple:

> Tout le monde a son mot à dire - 2021-02-10.mp4
> 28 minutes - 2021-02-11.mp4
#### Autres Exemples

Plusieurs émissions peuvent être diffusées le même jour, à la même date et avec le même titre. Sans précaution, le fichier de la deuximème diffusion écrase le premier. Pour garder toutes les diffusions, on peut rajouter l'identifiant unique donné par le diffuseur:

`{{ .Showtitle}} - {{ .Aired.Time.Format \"2006-01-02\" }} - {{(index .UniqueID 0).ID}}.mp4`

>Tout le monde a son mot à dire - 2021-02-10 - 2235183.nfo
### --season-template
Il est possible d'adapter le nom du répertoire correspondant à la saison. Les mêmes champs sont possibles.

#### Modèle par défaut pour les séries:
`Season {{.Season | printf "%02d" }}`

Exemple:
> Season 03
#### Modèle par défaut pour les émissions régulières:
`Season {{.Aired.Time.Year | printf "%04d" }}`

Exemple:
> Season 2021

## --title-filter string
Permet de télécharger que les épisodes dont le titre correspond à l'expression régulière.

### --title-exclude string
Permet d'exclure les épisodes dont le titre correspond à l'expression régulière.
Il est possible de combiner les deux filtres.

## Les options communes aux deux modes :

Expand Down Expand Up @@ -192,7 +254,13 @@ Le fichier config.json contient les paramètres et la liste des émissions que l
"Destination": "Jeunesse",
"TitleFilter": "(?i)Oggy"
},

{
"Show": "Tout le monde a son mot à dire",
"Provider": "francetv",
"ShowPath": "${HOME}/Videos/TV/TLMASMAD",
"SeasonPathTemplate": "Season {{.Aired.Time.Year | printf \"%04d\"}}",
"ShowNameTemplate": "{{ .Showtitle}} - {{ .Aired.Time.Format \"2006-01-02\" }} - {{(index .UniqueID 0).ID}}.mp4"
}
]
}
```
Expand Down
43 changes: 43 additions & 0 deletions changelog.md
@@ -0,0 +1,43 @@


# version 0.14.0

## New features
- add flags
- --name-template to give the media's file name template
- --season-template go give the season part template of the path
- add fields to config.json
- SeasonPathTemplate
> Template for season path, can be empty to skip season in path. When missing uses default naming
- ShowNameTemplate
>Template for the name of mp4 file, can't be empty. When missing, uses default naming
- TitleFilter
>ShowTitle or Episode title must match this regexp to be downloaded
- TitleExclude
>ShowTitle and Episode title must not match this regexp to be downloaded
- Name template implementation
- for movies
> `{{.Title}}.mp4`
- for shows
> `{{.Showtitle}} - {{.Aired.Time.Format "2006-01-02"}}.mp4`
- for series
> `{{.Showtitle}} - s{{.Season | printf "%02d" }}e{{.Episode | printf "%02d" }} - {{.Title}}.mp4`
- Season path template implementation
- for movies
> (empty)
- for shows:
> `Season {{.Aired.Time.Year | printf "%04d" }}`
- for series
> `Season {{.Season | printf "%02d" }}`
## Fixes
- artetv
- Fix #67 [artetv] Can't visit URL "Too Many Requests"
- Implementation of query throttling
- Reduce query to search API

## Other changes
- franctev
- Get Aired and ID form "Toutes les pages" used implement template


6 changes: 3 additions & 3 deletions cmd/aspiratv/config.go
Expand Up @@ -11,8 +11,8 @@ import (
"strings"
"time"

"github.com/simulot/aspiratv/providers"
"github.com/simulot/aspiratv/providers/matcher"
"github.com/simulot/aspiratv/download"
"github.com/simulot/aspiratv/matcher"
)

func (a *app) Initialize(cmd string) {
Expand Down Expand Up @@ -130,7 +130,7 @@ func (a *app) Check(c *config) {
a.logger.Fatal().Printf("Destination %q for show %q is not defined into section Destination of %q", m.Destination, m.Show, c.ConfigFile)
}
} else {
m.ShowRootPath = filepath.Join(s, providers.PathNameCleaner(m.Show))
m.ShowRootPath = filepath.Join(s, download.PathNameCleaner(m.Show))
}
}
}
Expand Down
27 changes: 22 additions & 5 deletions cmd/aspiratv/config.json
Expand Up @@ -11,17 +11,34 @@
"enabled": true
},
"gulli": {
"enabled": false
"enabled": true
},
"artetv": {
"enabled": false
"enabled": true
}
},
"WatchList": [
{
"Show": "Les Lapins Crétins - Invasion",
"Show": "Tout le monde a son mot à dire",
"Provider": "francetv",
"ShowPath": "${HOME}/Videos/DL/TEST/LAPINS"
"ShowPath": "${HOME}/Videos/DL/TEST/TLMASMAD",
"SeasonPathTemplate": "Season {{.Aired.Time.Year | printf \"%04d\"}}",
"ShowNameTemplate": "{{ .Showtitle}} - {{ .Aired.Time.Format \"2006-01-02\" }} - {{(index .UniqueID 0).ID}}.mp4"
},
{
"Show": "Chasseurs de troll",
"Provider": "gulli",
"Destination": "Jeunesse"
},
{
"Show": "Pokémon",
"Provider": "gulli",
"Destination": "Jeunesse"
},
{
"Show": "Les aventures de tintin",
"Provider": "gulli",
"Destination": "Jeunesse"
}
]
}
}

0 comments on commit 7e7368f

Please sign in to comment.