summaryrefslogtreecommitdiff
path: root/roles/tools
diff options
context:
space:
mode:
Diffstat (limited to 'roles/tools')
-rw-r--r--roles/tools/files/mplayer3
-rw-r--r--roles/tools/files/psqlrc5
-rw-r--r--roles/tools/files/remind/commands/work1
-rw-r--r--roles/tools/files/remind/remind@.service10
-rw-r--r--roles/tools/files/vimrc309
-rw-r--r--roles/tools/handlers/main.yml5
-rw-r--r--roles/tools/tasks/main.yml48
-rw-r--r--roles/tools/templates/tmux.conf.j288
-rw-r--r--roles/tools/templates/youtube-viewer.conf.j289
9 files changed, 558 insertions, 0 deletions
diff --git a/roles/tools/files/mplayer b/roles/tools/files/mplayer
new file mode 100644
index 0000000..21cf775
--- /dev/null
+++ b/roles/tools/files/mplayer
@@ -0,0 +1,3 @@
1# Write your default config options here!
2
3
diff --git a/roles/tools/files/psqlrc b/roles/tools/files/psqlrc
new file mode 100644
index 0000000..c51f46e
--- /dev/null
+++ b/roles/tools/files/psqlrc
@@ -0,0 +1,5 @@
1\pset null ¤
2\set COMP_KEYWORD_CASE upper
3\x auto
4\set HISTSIZ -1
5\set ECHO_HIDDEN on
diff --git a/roles/tools/files/remind/commands/work b/roles/tools/files/remind/commands/work
new file mode 100644
index 0000000..edc937d
--- /dev/null
+++ b/roles/tools/files/remind/commands/work
@@ -0,0 +1 @@
REM Mon Tue Wed Thu Fri AT 09:00 MSG Ne pas oublier de démarrer le time tracking !
diff --git a/roles/tools/files/remind/remind@.service b/roles/tools/files/remind/remind@.service
new file mode 100644
index 0000000..3fc221d
--- /dev/null
+++ b/roles/tools/files/remind/remind@.service
@@ -0,0 +1,10 @@
1[Unit]
2Description=Remind daemon
3After=network.target
4
5[Service]
6Type=simple
7ExecStart=/usr/bin/remind -z60 -k'/usr/bin/dunstify -t 0 -a Tracking %%s' %h/.config/remind/%i
8
9[Install]
10WantedBy=default.target
diff --git a/roles/tools/files/vimrc b/roles/tools/files/vimrc
new file mode 100644
index 0000000..6de0f1c
--- /dev/null
+++ b/roles/tools/files/vimrc
@@ -0,0 +1,309 @@
1" ---------- Init, config, backup ---------------
2" Respect XDG directories (more below for cache)
3set viminfo+='1000,n$XDG_STATE_HOME/vim/viminfo
4set runtimepath=$XDG_DATA_HOME/vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,$XDG_DATA_HOME/vim/after
5
6" Run :PlugInstall after adding plugins there
7call plug#begin(expand($XDG_DATA_HOME) . '/vim/plugged')
8
9Plug 'vim-scripts/cecutil'
10Plug 'vim-scripts/LargeFile'
11Plug 'vim-scripts/Align'
12Plug 'vim-scripts/AutoAlign'
13Plug 'jamessan/vim-gnupg'
14Plug 'vim-scripts/taglist.vim'
15Plug 'chrisbra/csv.vim'
16Plug 'mustache/vim-mustache-handlebars'
17Plug 'cakebaker/scss-syntax.vim'
18Plug 'tpope/vim-bundler'
19Plug 'tpope/vim-rails'
20Plug 'ledger/vim-ledger'
21Plug 'beyondwords/vim-twig'
22Plug 'scrooloose/nerdtree'
23Plug 'kien/ctrlp.vim'
24Plug 'rodjek/vim-puppet'
25Plug 'szw/vim-tags'
26Plug 'neomutt/neomutt.vim'
27Plug 'kchmck/vim-coffee-script'
28Plug 'digitaltoad/vim-pug'
29Plug 'vim-scripts/slapd.vim'
30Plug 'vimwiki/vimwiki', { 'branch': 'dev' }
31Plug 'vim-vdebug/vdebug'
32Plug 'tpope/vim-fugitive'
33Plug 'tomlion/vim-solidity'
34Plug 'chrisbra/SudoEdit.vim'
35Plug 'Chiel92/vim-autoformat'
36Plug 'pearofducks/ansible-vim'
37Plug 'juliosueiras/vim-terraform-completion'
38
39call plug#end()
40
41" Charge automatiquement les ftplugins/*.vim selon le type de fichier
42filetype plugin on
43" Charge automatiquement les indent/*.vim selon le type de fichier
44filetype indent on
45
46" Pour que vim garde une copie de sauvegarde des fichiers modifiés.
47set backup
48""" Copied from /usr/share/vim/vimfiles/archlinux.vim
49" Move temporary files to a secure location to protect against CVE-2017-1000382
50if exists('$XDG_CACHE_HOME')
51 let &g:directory=$XDG_CACHE_HOME
52else
53 let &g:directory=$HOME . '/.cache'
54endif
55let g:ctrlp_cache_dir=&g:directory . '/vim/ctrlp//'
56let &g:undodir=&g:directory . '/vim/undo//'
57let &g:backupdir=&g:directory . '/vim/backup//'
58let g:vim_tags_cache_dir = &g:directory . '/vim/ctags//'
59let &g:directory.='/vim/swap//'
60" Create directories if they doesn't exist
61if ! isdirectory($XDG_STATE_HOME . '/vim')
62 silent! call mkdir($XDG_STATE_HOME . '/vim')
63endif
64if ! isdirectory(expand(&g:directory))
65 silent! call mkdir(expand(&g:directory), 'p', 0700)
66endif
67if ! isdirectory(expand(&g:backupdir))
68 silent! call mkdir(expand(&g:backupdir), 'p', 0700)
69endif
70if ! isdirectory(expand(&g:undodir))
71 silent! call mkdir(expand(&g:undodir), 'p', 0700)
72endif
73if ! isdirectory(expand(g:vim_tags_cache_dir))
74 silent! call mkdir(expand(g:vim_tags_cache_dir), 'p', 0700)
75endif
76""" /Copied from /usr/share/vim/vimfiles/archlinux.vim
77
78
79" Ne pas sauver un backup spécial pour les fichiers réseau
80let g:netrw_dirhistmax = 0
81
82" ---------- Mappings ---------------------------
83" map : Normal, Visual, Select, Operator-pending
84" map! : Insert and Command-line
85
86" Le BackSpace fonctionne aussi en mode normal.
87map <BS> X
88
89" Les Control-flèches
90map <ESC>[1;5A <C-Up>
91map! <ESC>[1;5A <C-Up>
92map <ESC>[1;5B <C-Down>
93map! <ESC>[1;5B <C-Down>
94map <ESC>[1;5C <C-Right>
95map! <ESC>[1;5C <C-Right>
96map <ESC>[1;5D <C-Left>
97map! <ESC>[1;5D <C-Left>
98
99map <S-Up> {
100map! <S-Up> <C-O>{
101map <S-Down> }
102map! <S-Down> <C-O>}
103
104
105" ---------- Comportement à la frappe -----------
106" <BS> passe à travers l'indentation, les fins de ligne et le début du "insert"
107set backspace=indent,eol,start
108
109" '<BS>e écrit un é (sinon : ctrl+K ' e)
110" set digraph
111
112" La taille d'une ligne, pour la frappe au kilomètre.
113" Permet 4 niveaux de 'citation' pour les mails/forum
114set textwidth=72
115" set textwidth=80
116
117" Les touches qui font passer à la ligne suivante/précédente. backspace (b),
118" espace (s), flèches (<,>,[,]).
119set whichwrap=b,s,<,>,[,]
120
121" Ne pas mettre deux espaces après la ponctuation quand on "join" deux lignes
122set nojoinspaces
123
124" Quand on tape un ), vim montre furtivement le ( correspondant.
125set showmatch
126
127" Les options de formatage.
128set formatoptions=tcq2
129
130
131" ---------- Recherche --------------------------
132" Pour voir tous les matchs d'une recherche
133set hlsearch
134
135" Pour que les matchs soient affichés pendant que vous tapez le mot recherché
136set incsearch
137
138" On ignore la casse des caractères dans les recherches de chaînes en
139" minuscules; par contre, dès qu'une lettre est en majuscule, on tient compte
140" de la casse de toute la chaîne.
141" Pendant la recherche : \c pour ignorer quand même, \C pour case-sensitive
142set ignorecase
143set smartcase
144
145
146" ---------- Fichiers ---------------------------
147" Pour une complétion automatique des noms de fichiers
148set wildmenu
149
150" La façon dont la complétion présente les choix.
151set wildmode=longest,list:longest,full
152
153" La complétion automatique ignore les fichiers suivants.
154set suffixes=.bak.o.aux.dvi.log.toc.tof
155
156
157" ---------- Buffers ----------------------------
158" On veut pouvoir rendre invisible un buffer
159set hidden
160
161" Pour éviter de trop ralentir en faisant défiler le texte pendant l'exécution
162" des macros.
163set lazyredraw
164
165
166" ----------- Interactions ----------------------
167" On affiche en permanence les numéros de ligne et de colonne.
168set ruler
169
170" Pour ne pas se faire bipper tout le temps.
171set noerrorbells
172set visualbell t_vb=
173
174" Pour avoir des messages de vim qui tiennent sur une seule ligne, ce
175" qui évite d'avoir à presser «Enter» pour voir les messages suivants.
176set shortmess=filnrxoOt
177
178" Quand on tape une commande complexe en mode normal, vim affiche ce que l'on
179" a déjà tapé
180set showcmd
181
182
183" ------------ Indentations ---------------------
184" Conserve l'indentation
185set autoindent
186
187" Remplace les <Tab> par des espaces
188set expandtab
189
190" Nombre d'espaces
191set shiftwidth=2
192set softtabstop=2
193
194" Pour que l'indentation ajuste sur un multiple de 'shiftwidth'.
195set shiftround
196
197" ------------ Folding --------------------------
198set foldmethod=indent
199set foldnestmax=10
200set nofoldenable
201set foldlevel=0
202set foldlevelstart=0
203
204
205" ------------ Auto-commandes -------------------
206" On commence par enlever toutes les autocommandes avant de les définir
207" (pour le cas où ce fichier serait lu plusieurs fois.)
208autocmd!
209
210autocmd BufRead,BufNewFile mutt*[0-9] set nobackup nowritebackup
211autocmd BufRead,BufNewFile .article.* set filetype=mail nobackup
212
213" ledger
214" Don't load ftplugin for ledger
215" autocmd BufReadPre,BufNewFile *ledger* let b:did_ftplugin = 1
216autocmd FileType ledger set textwidth=0
217let g:ledger_main = '~/.ledger/perso'
218
219autocmd FileType puppet set textwidth=0
220
221" ----------- Coloration syntaxique -------------
222syntax enable
223
224highlight Comment term=none ctermfg=darkCyan cterm=none
225highlight Constant term=underline ctermfg=Blue cterm=none
226highlight Error term=reverse ctermfg=White ctermbg=Red cterm=none
227highlight Identifier term=none ctermfg=Green cterm=none
228highlight IncSearch term=reverse ctermfg=Blue ctermbg=White
229highlight Operator term=none ctermfg=darkGray cterm=bold
230highlight PreProc term=underline ctermfg=Magenta cterm=none
231highlight Search term=reverse cterm=reverse
232highlight Special term=bold ctermfg=Blue cterm=bold
233highlight Statement term=bold ctermfg=Red cterm=none
234highlight Todo term=standout ctermfg=White ctermbg=Green cterm=bold
235highlight Type term=bold ctermfg=Brown cterm=none
236
237highlight link Delimiter Operator
238highlight link SpecialChar Special
239
240" lignes "foldées"
241highlight Folded term=standout ctermfg=White ctermbg=Blue cterm=bold
242
243" Pour les diffs (commande vimdiff).
244highlight DiffAdd term=bold ctermfg=Green ctermbg=none cterm=bold
245highlight DiffChange term=bold ctermfg=Cyan ctermbg=none
246highlight DiffDelete term=bold ctermfg=Red ctermbg=none cterm=bold
247highlight DiffText term=standout ctermfg=White ctermbg=Cyan cterm=bold
248
249" ------------- Fonctions, commandes, macros ----
250" Identer les fichiers (json, xml)
251function PRangeFunc(command_line, syntax) range
252 if a:firstline==1 && a:lastline==line('$')
253 execute 'set filetype=' . a:syntax
254 execute 'syntax on'
255 endif
256 execute a:firstline . "," . a:lastline . '!' . a:command_line
257endfunction
258
259command -range=% Pjson normal <Esc>`>a<CR><Esc>mb`<i<CR><Esc>ma:'a,'b-1 call PRangeFunc('python -m json.tool', 'json')<CR>
260command -range=% Pxml normal <Esc>`>a<CR><Esc>mb`<i<CR><Esc>ma:'a,'b-1 call PRangeFunc('xmllint --format --encode UTF8 -', 'xml')<CR>
261command -range=% Pdeflate normal <Esc>`>a<CR><Esc>mb`<i<CR><Esc>ma:'a,'b-1 call PRangeFunc('python -c "import zlib; import sys; sys.stdout.buffer.write(zlib.decompress(sys.stdin.buffer.read()))"', '')<CR>
262command -range=% Pinflate normal <Esc>`>a<CR><Esc>mb`<i<CR><Esc>ma:'a,'b-1 call PRangeFunc('python -c "import zlib; import sys; sys.stdout.buffer.write(zlib.compress(sys.stdin.buffer.read()))"', '')<CR>
263command! -range=% Pastebin execute <line1> . "," . <line2> . "w !curl -F 'c=@-' https://ptpb.pw"
264
265noremap <F3> :Autoformat<CR>
266vmap <F8> :Pxml<CR>
267vmap <F9> :Pjson<CR>
268
269" gpg-encryptes files
270let g:GPGPreferArmor=1
271let g:GPGDefaultRecipients=["ismael.bouya@normalesup.org"]
272let g:GPGUsesPipes=1
273
274command Decrypt 1,$!gpg -d -q
275command Encrypt 1,$!gpg -e -q --armor -r ismael.bouya@normalesup.org
276command -range=% Runhash s/:\([_a-zA-Z0-9]\+\)\( \+\)=> \( *\)/\1:\2\3/
277
278function! s:DiffWithSaved()
279 let filetype=&ft
280 diffthis
281 vnew | r # | normal! 1Gdd
282 diffthis
283 exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
284endfunction
285command! DiffSaved call s:DiffWithSaved()
286
287" Load NERDTree on startup if no file were specified
288" autocmd StdinReadPre * let s:std_in=1
289" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
290" Load NERDTree on startup
291"autocmd VimEnter * NERDTree | wincmd p
292let g:vim_tags_auto_generate = 1
293let g:vim_tags_project_tags_command = "ctags -R {OPTIONS} {DIRECTORY} 2>/dev/null"
294map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR>
295map <A-]> :vsp <CR>:exec("tag ".expand("<cword>"))<CR>
296
297let g:ctrlp_extensions = ['tag', 'buffertag', 'dir', 'undo', 'line']
298set modeline
299
300set grepprg=grep\ -rn\ $*\ /dev/null
301let c_comment_strings=1
302if !exists(":DiffOrig")
303 command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
304 \ | wincmd p | diffthis
305endif
306
307set list
308set listchars=tab:>-,trail:-
309
diff --git a/roles/tools/handlers/main.yml b/roles/tools/handlers/main.yml
new file mode 100644
index 0000000..a282512
--- /dev/null
+++ b/roles/tools/handlers/main.yml
@@ -0,0 +1,5 @@
1---
2- name: reload systemd
3 systemd:
4 daemon_reload: true
5 scope: user
diff --git a/roles/tools/tasks/main.yml b/roles/tools/tasks/main.yml
new file mode 100644
index 0000000..aa61aab
--- /dev/null
+++ b/roles/tools/tasks/main.yml
@@ -0,0 +1,48 @@
1---
2- name: Import other tools
3 include_role:
4 name: "{{ item }}"
5 loop:
6 - git
7 - gnupg
8- name: mplayer config file
9 copy:
10 src: mplayer
11 dest: $XDG_CONFIG_HOME/mplayer/config
12- name: psql config file
13 copy:
14 src: psqlrc
15 dest: $XDG_CONFIG_HOME/psql/psqlrc
16- name: psql history directory
17 file:
18 path: $XDG_STATE_HOME/psql
19 state: directory
20- name: vim config file
21 register: vim_result
22 copy:
23 src: vimrc
24 dest: $XDG_CONFIG_HOME/vim/vimrc
25- name: run PlugInstall
26 shell: vim -c PlugInstall -c qa
27 when: vim_result.changed
28- name: tmux config file
29 template:
30 src: tmux.conf.j2
31 dest: $XDG_CONFIG_HOME/tmux/tmux.conf
32- name: youtube viewer config file
33 template:
34 src: youtube-viewer.conf.j2
35 dest: $XDG_CONFIG_HOME/youtube-viewer/youtube-viewer.conf
36- name: remind config file
37 synchronize:
38 recursive: yes
39 archive: no
40 checksum: yes
41 src: remind/commands/
42 dest: /$XDG_CONFIG_HOME/remind/
43- name: remind service file
44 copy:
45 src: remind/remind@.service
46 dest: $XDG_CONFIG_HOME/systemd/user/
47 notify:
48 - reload systemd
diff --git a/roles/tools/templates/tmux.conf.j2 b/roles/tools/templates/tmux.conf.j2
new file mode 100644
index 0000000..8aad615
--- /dev/null
+++ b/roles/tools/templates/tmux.conf.j2
@@ -0,0 +1,88 @@
1# Pour les nostalgiques de screen
2# comme les raccourcis ne sont pas les mêmes, j'évite
3set-option -g prefix C-a
4unbind-key C-b
5bind-key a send-prefix
6
7bind-key C-d detach
8unbind-key C-z
9bind-key C-z resize-pane -Z
10bind-key h switch-client -t remote
11
12unbind-key )
13unbind-key (
14bind-key -r ( switch-client -p
15bind-key -r ) switch-client -n
16
17bind-key -n M-Left previous-window
18bind-key -n M-Right next-window
19bind-key -n M-PageDown switch-client -n
20bind-key -n M-PageUp switch-client -p
21
22bind-key M set-window-option monitor-activity
23bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; new-window -n "urlview" '$SHELL -c "urlview < /tmp/tmux-buffer; rm -f /tmp/tmux-buffer"'
24
25bind-key C-c run-shell -b "tmux save-buffer - | xclip -i -sel clipboard"
26bind-key C-v run-shell "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
27
28bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-selection-and-cancel \; run-shell -b "tmux save-buffer - | xclip -i -selection primary"
29bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection-and-cancel \; run-shell -b "tmux save-buffer - | xclip -i -selection primary"
30bind-key -T root MouseUp2Pane run-shell "tmux set-buffer \"$(xclip -o -selection primary)\"; tmux paste-buffer"
31
32# même hack que sur screen lorsqu'on veut profiter du scroll du terminal
33# (xterm ...)
34set-option -g terminal-overrides 'xterm*:smcup@:rmcup@:Tc'
35
36# Renumeroter les fenetres quand on en ferme une
37set-option -g renumber-windows on
38
39#Pour les ctrl+arrow
40set-option -g xterm-keys on
41
42# c'est un minimum (defaut 2000)
43set-option -g history-limit 10000
44
45# lorsque j'ai encore un tmux ailleurs seule
46# sa fenetre active réduit la taille de ma fenetre locale
47set-window-option -g aggressive-resize on
48
49# Pour etre alerté sur une alerte dans une autre fenêtre
50set-option -g visual-activity off
51set-option -g visual-bell off
52
53# numéroter a partir de 1, pratique pour l'accès direct
54set-option -g base-index 1
55
56# repercuter le contenu de la fenetre dans la barre de titre
57# reference des string : man tmux (status-left)
58set-option -g set-titles on
59set-option -g set-titles-string '#H #W #T' # host window command
60
61set-option -g update-environment "DISPLAY SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY XDG_VTNR"
62
63set-window-option -g window-status-bell-style fg=yellow,bold,underscore
64
65set -g default-terminal screen-256color
66
67set -g mouse on
68
69{% if role.get(profile) == "fretlink" %}
70new-session -A -c "$HOME/workdir/admin-root" -s admin-root
71send-keys "../start" C-m
72rename-window "running"
73new-window
74new-session -A -c "$HOME/workdir/carrier-directory" -s carrier-directory
75send-keys "../start" C-m
76rename-window "running"
77new-window
78new-session -A -c "$HOME/workdir/notifier" -s notifier
79send-keys "../start" C-m
80rename-window "running"
81new-window
82new-session -A -c "$HOME/workdir/geodata" -s geodata
83new-session -A -c "$HOME/workdir/app" -s app
84send-keys "../start" C-m
85rename-window "running"
86new-window
87select-window -t 1
88{% endif %}
diff --git a/roles/tools/templates/youtube-viewer.conf.j2 b/roles/tools/templates/youtube-viewer.conf.j2
new file mode 100644
index 0000000..3107584
--- /dev/null
+++ b/roles/tools/templates/youtube-viewer.conf.j2
@@ -0,0 +1,89 @@
1#!/usr/bin/perl
2
3# Youtube Viewer 3.3.4 - configuration file
4
5our $CONFIG = {
6 auto_captions => 0,
7 autohide_watched => 0,
8 cache_dir => "{{ lookup('env', 'XDG_CACHE_HOME') }}/youtube-viewer",
9 captions_dir => "/tmp",
10 clobber => 0,
11 colors => 1,
12 combine_multiple_videos => 0,
13 confirm => 0,
14 convert_cmd => "ffmpeg -i *IN* *OUT*",
15 convert_to => undef,
16 copy_caption => 0,
17 dash_mp4_audio => 1,
18 dash_support => 1,
19 debug => 0,
20 download_and_play => 0,
21 download_in_parallel => 0,
22 download_with_wget => 0,
23 downloads_dir => ".",
24 env_proxy => 1,
25 fat32safe => 0,
26 fullscreen => 0,
27 get_captions => 1,
28 get_term_width => 1,
29 highlight_color => "bold",
30 highlight_watched => 0,
31 history => 0,
32 history_file => "{{ lookup('env', 'XDG_STATE_HOME') }}/youtube-viewer/history.txt",
33 history_limit => 10000,
34 hl => "en_US",
35 http_proxy => undef,
36 interactive => 1,
37 keep_original_video => 0,
38 maxResults => 20,
39 order => undef,
40 page => 1,
41 publishedAfter => undef,
42 publishedBefore => undef,
43 regionCode => undef,
44 remove_played_file => 0,
45 resolution => "original",
46 results_fixed_width => 0,
47 results_with_colors => 0,
48 results_with_details => 0,
49 safeSearch => undef,
50 skip_if_exists => 0,
51 srt_languages => ["en", "fr"],
52 subscriptions_order => "relevance",
53 thousand_separator => ",",
54 video_filename_format => "*FTITLE*.*FORMAT*",
55 video_player_selected => "mplayer",
56 video_players => {
57 mplayer => {
58 arg => "-prefer-ipv4 -really-quiet -title *TITLE*",
59 audio => "-audiofile *AUDIO*",
60 cmd => "/usr/bin/mplayer",
61 fs => "-fs",
62 novideo => "-novideo",
63 srt => "-sub *SUB*",
64 },
65 mpv => {
66 arg => "--really-quiet --title *TITLE* --no-ytdl",
67 audio => "--audio-file *AUDIO*",
68 cmd => "mpv",
69 fs => "--fullscreen",
70 novideo => "--no-video",
71 srt => "--sub-file *SUB*",
72 },
73 vlc => {
74 arg => "--quiet --play-and-exit --no-video-title-show --input-title-format *TITLE*",
75 audio => "--input-slave *AUDIO*",
76 cmd => "vlc",
77 fs => "--fullscreen",
78 novideo => "--intf dummy --novideo",
79 srt => "--sub-file *SUB*",
80 },
81 },
82 videoCaption => undef,
83 videoDefinition => undef,
84 videoDimension => undef,
85 videoDuration => undef,
86 videoLicense => undef,
87 videoSyndicated => undef,
88 youtube_video_url => "https://www.youtube.com/watch?v=%s",
89}