New
This commit is contained in:
parent
ca452cf3ad
commit
de9a72801e
11
Movie_AVC_1080p.bat
Normal file
11
Movie_AVC_1080p.bat
Normal file
@ -0,0 +1,11 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p aud="Enter Audio Language= "
|
||||
|
||||
|
||||
wvripper.pyc %URL% --region eu --smart-select -vp AVC -q 1080 -gr FUCKU -o Downloads ^
|
||||
--audio-language %aud%
|
||||
|
||||
pause.
|
||||
|
11
Movie_AVC_720p.bat
Normal file
11
Movie_AVC_720p.bat
Normal file
@ -0,0 +1,11 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p aud="Enter Audio Language= "
|
||||
|
||||
|
||||
wvripper.pyc %URL% --region eu --smart-select -vp AVC -q 720 -gr FUCKU -o Downloads ^
|
||||
--audio-language %aud%
|
||||
|
||||
|
||||
pause.
|
12
Movie_HDR_4K.bat
Normal file
12
Movie_HDR_4K.bat
Normal file
@ -0,0 +1,12 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
|
||||
|
||||
wvripper.pyc %URL% --region eu -vp UHD —android -q 2160 -gr FUCKU -o Downloads ^
|
||||
--audio-language en ^
|
||||
--subtitle-language en
|
||||
|
||||
|
||||
pause.
|
||||
|
11
Movie_HEVC_1080p.bat
Normal file
11
Movie_HEVC_1080p.bat
Normal file
@ -0,0 +1,11 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p aud="Enter Audio Language= "
|
||||
|
||||
|
||||
wvripper.pyc %URL% --region eu --smart-select -vp HEVC -q 1080 -gr FUCKU -o Downloads ^
|
||||
--audio-language %aud%
|
||||
|
||||
|
||||
pause.
|
11
Movie_HEVC_720p.bat
Normal file
11
Movie_HEVC_720p.bat
Normal file
@ -0,0 +1,11 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p aud="Enter Audio Language= "
|
||||
|
||||
|
||||
wvripper.pyc %URL% --region eu --smart-select -vp HEVC -q 720 -gr FUCKU -o Downloads ^
|
||||
--audio-language %aud%
|
||||
|
||||
|
||||
pause.
|
27
README.md
27
README.md
@ -1,2 +1,29 @@
|
||||
# WV-AMZN-4K-RIPPER
|
||||
Tool To download Amazon 4k SDR HDR 1080, CDM IS Not Included
|
||||
|
||||
For CDM You can Mail :- wvfuck@cyberfiends.net
|
||||
|
||||
Leaked with Lots of Love
|
||||
|
||||
__________
|
||||
.~#########%%;~.
|
||||
/############%%;`\
|
||||
/######/~\/~\%%;,;,\
|
||||
|#######\ /;;;;.,.|
|
||||
|#########\/%;;;;;.,.|
|
||||
XX |##/~~\####%;;;/~~\;,| XX
|
||||
XX..X |#| o \##%;/ o |.| X..XX
|
||||
XX.....X |##\____/##%;\____/.,| X.....XX
|
||||
XXXXX.....XX \#########/\;;;;;;,, / XX.....XXXXX
|
||||
X |......XX%,.@ \######/%;\;;;;, / @#%,XX......| X
|
||||
X |.....X @#%,.@ |######%%;;;;,.| @#%,.@ X.....| X
|
||||
X \...X @#%,.@ |# # # % ; ; ;,| @#%,.@ X.../ X
|
||||
X# \.X @#%,.@ @#%,.@ X./ #
|
||||
## X @#%,.@ @#%,.@ X #
|
||||
, "# #X @#%,.@ @#%,.@ X ##
|
||||
`###X @#%,.@ @#%,.@ ####'
|
||||
. ' ### @#%.,@ @#%,.@ ###`"
|
||||
. ";" @#%.@#%,.@ ;"` ' .
|
||||
' @#%,.@ ,.
|
||||
` , @#%,.@ @@ `
|
||||
@@@ @@@ .
|
||||
|
12
SeaSon_AVC_1080p.bat
Normal file
12
SeaSon_AVC_1080p.bat
Normal file
@ -0,0 +1,12 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p aud="Enter Audio Language= "
|
||||
set/p Episode="Enter Episode= "
|
||||
|
||||
wvripper.pyc %URL% --region eu --smart-select -vp AVC -q 1080 -s 1 -e %Episode% -gr SaiTama -o Downloads ^
|
||||
--audio-language %aud%
|
||||
|
||||
|
||||
pause.
|
||||
|
11
SeaSon_AVC_720.bat
Normal file
11
SeaSon_AVC_720.bat
Normal file
@ -0,0 +1,11 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p aud="Enter Audio Language= "
|
||||
set/p Episode="Enter Episode= "
|
||||
|
||||
wvripper.pyc %URL% --region eu --smart-select -vp AVC -q 720 -s 1 -e %Episode% -gr SaiTama -o Downloads ^
|
||||
--audio-language %aud%
|
||||
|
||||
|
||||
pause.
|
11
SeaSon_HDR_4K.bat
Normal file
11
SeaSon_HDR_4K.bat
Normal file
@ -0,0 +1,11 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p Season="Enter Season Number= "
|
||||
|
||||
wvripper.pyc %URL% --region eu -vp UHD —android -q 2160 -s %Season% -gr SaiTama -o Downloads ^
|
||||
--audio-language en ^
|
||||
--subtitle-language en
|
||||
|
||||
|
||||
pause.
|
11
SeaSon_HEVC_1080p.bat
Normal file
11
SeaSon_HEVC_1080p.bat
Normal file
@ -0,0 +1,11 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p aud="Enter Audio Language= "
|
||||
set/p Episode="Enter Episode= "
|
||||
|
||||
wvripper.pyc %URL% --region eu --smart-select -vp HEVC -q 1080 -s 1 -e %Episode% -gr FUCKU -o Downloads ^
|
||||
--audio-language %aud%
|
||||
|
||||
|
||||
pause.
|
11
SeaSon_HEVC_720.bat
Normal file
11
SeaSon_HEVC_720.bat
Normal file
@ -0,0 +1,11 @@
|
||||
@@ECHO OFF
|
||||
|
||||
set/p URL="Enter Primevideo URL= "
|
||||
set/p aud="Enter Audio Language= "
|
||||
set/p Episode="Enter Episode= "
|
||||
|
||||
wvripper.pyc %URL% --region eu --smart-select -vp HEVC -q 720 -s 1 -e %Episode% -gr SaiTama -o Downloads ^
|
||||
--audio-language %aud%
|
||||
|
||||
|
||||
pause.
|
BIN
configs/Cookies/cl (1).exe
Normal file
BIN
configs/Cookies/cl (1).exe
Normal file
Binary file not shown.
BIN
configs/Cookies/cl.exe
Normal file
BIN
configs/Cookies/cl.exe
Normal file
Binary file not shown.
0
configs/Cookies/cookies_de.txt
Normal file
0
configs/Cookies/cookies_de.txt
Normal file
0
configs/Cookies/cookies_jp.txt
Normal file
0
configs/Cookies/cookies_jp.txt
Normal file
17
configs/Cookies/cookies_ps.txt
Normal file
17
configs/Cookies/cookies_ps.txt
Normal file
@ -0,0 +1,17 @@
|
||||
# HTTP Cookie File downloaded with cookies.txt by Genuinous @genuinous
|
||||
# This file can be used by wget, curl, aria2c and other standard compliant tools.
|
||||
# Usage Examples:
|
||||
# 1) wget -x --load-cookies cookies.txt "https://www.primevideo.com/detail/The-Handmaids-Tale-Series/0QW7NQ3CQIVMI5ED05XYS19P9U"
|
||||
# 2) curl --cookie cookies.txt "https://www.primevideo.com/detail/The-Handmaids-Tale-Series/0QW7NQ3CQIVMI5ED05XYS19P9U"
|
||||
# 3) aria2c --load-cookies cookies.txt "https://www.primevideo.com/detail/The-Handmaids-Tale-Series/0QW7NQ3CQIVMI5ED05XYS19P9U"
|
||||
#
|
||||
.primevideo.com TRUE / TRUE 1653714942 session-id 257-0038347-0468755
|
||||
.primevideo.com TRUE / TRUE 1653714942 ubid-main-av 259-1850744-5064919
|
||||
.primevideo.com TRUE / FALSE 1652961059 i18n-prefs USD
|
||||
.primevideo.com TRUE / TRUE 1652961059 x-main-av "ScrnSKLUeYEm9QlZHlwt3dZo782g6?buizSHPaFdhvjGMEbmm8?7OjHJTqsIQG7?"
|
||||
.primevideo.com TRUE / TRUE 1652961059 at-main-av Atza|IwEBIPO8plmb1MYDw9U1C7pP8JqQyay6o4juc-tcKRWs1W94AYF7XzYzmuEnqnRafyMRsxqaZNAzceuYSWmM4hitJz9u0jbH3HGbdBzoiQBQNeFuAvub0p2Fmp3fpjy8c0185XsQkTjMxfWSoFs6brScaTfrgEl-xfoLNRCT7SNh6I8QgJh9V6onZA9KuRriLQvEBFPEow78ro1rFZZA4rWha2l9
|
||||
.primevideo.com TRUE / TRUE 1652961059 sess-at-main-av "pdEPotZ1sWXm/+f/qV0SJ1aLA+yLWwSM04HLxIlWf3g="
|
||||
.primevideo.com TRUE / FALSE 1655626116 lc-main-av de_DE
|
||||
.primevideo.com TRUE / TRUE 1653714712 session-token "mtRVF4lOAzfyhTEkcJTnul8r9UdIC5egMEPYermEqJg+SvS7WOQDkOQbk878qqNiKv5vFCF67IFoHc8JoJeehwOzyjeKEUtEqrct0T26fWavDo9ih4TuAmm78jI06nIutdB8QyhHcImqxDCHA9GtnAYD6/JSA8aPsY23+1g0dI85LcKTXb7rBk3LxihUBw9f6RVM3p1LwrtvMHMy1D7WZQ=="
|
||||
.primevideo.com TRUE / FALSE 1653714942 session-id-time 2082758401l
|
||||
www.primevideo.com FALSE / FALSE 1652418943 csm-hit tb:V4A6B5JR131JV44WAJEY+s-P6F7H6HX20CJ3MG3NNVX|1622178943543&t:1622178943544&adb:adblk_yes
|
0
configs/Cookies/cookies_uk.txt
Normal file
0
configs/Cookies/cookies_uk.txt
Normal file
22
configs/Cookies/cookies_us.txt
Normal file
22
configs/Cookies/cookies_us.txt
Normal file
@ -0,0 +1,22 @@
|
||||
# HTTP Cookie File downloaded with cookies.txt by Genuinous @genuinous
|
||||
# This file can be used by wget, curl, aria2c and other standard compliant tools.
|
||||
# Usage Examples:
|
||||
# 1) wget -x --load-cookies cookies.txt "https://www.amazon.com/gp/video/detail/B08WYHRBBH/ref=atv_3p_hbo_c_7bUTvm_brws_2_1"
|
||||
# 2) curl --cookie cookies.txt "https://www.amazon.com/gp/video/detail/B08WYHRBBH/ref=atv_3p_hbo_c_7bUTvm_brws_2_1"
|
||||
# 3) aria2c --load-cookies cookies.txt "https://www.amazon.com/gp/video/detail/B08WYHRBBH/ref=atv_3p_hbo_c_7bUTvm_brws_2_1"
|
||||
#
|
||||
.associates-amazon.com TRUE / TRUE 1624841566 abid e6bcb1cc-6df0-b57d-a226-76cb8be24829
|
||||
.amazon.com TRUE / TRUE 1653958585 ubid-main 131-9705044-5253861
|
||||
.amazon.com TRUE / FALSE 2082787201 lc-main en_US
|
||||
.amazon.com TRUE / TRUE 1653958161 ubid-main-av 135-0014401-4583503
|
||||
.amazon.com TRUE / TRUE 1653958016 lc-main-av zh_TW
|
||||
.amazon.com TRUE / FALSE 0 skin noskin
|
||||
.amazon.com TRUE / TRUE 1653958585 session-id 147-2017101-9262448
|
||||
.amazon.com TRUE / TRUE 1653958573 session-token "SmO/Pi7JXxECw4qGIpgvs60FQ04zRGX5ioS27++ZRs02GwR9E+7l9oC1H9oAIKjQOJL+7sU9ZXJswsGFu+Qdv1//hzkBsusXQJV28mHsY1Wn7RvcG+j8bzezebCTHMEMRFnn+E3QEhxTvgpOkiF66P8Z8ATlYYc0zf1GwPq+c6cYfy+k9xQrCIqdQ+YBdO4xPLP03jeKaBS8Ewebw5iIF9QHy8t98IDW16EU5zbqS4s="
|
||||
.amazon.com TRUE / TRUE 1653958573 x-main "9atgnNhYPLAdgqLwOubcLzhra0MEaqE9k0oOqn6APNo@e8g8QuzWUdaLTpqJ4KJ0"
|
||||
.amazon.com TRUE / TRUE 1653958447 at-main Atza|IwEBIOZTPeWg1i5KCfjkoVaDH7vU_Bj6fu4KqrDpv7xp1GcfTQyDNgoFJKaApqF7eG1lsEvwjTXgoIiCGteEhixyG_GO-dhQRQ8eYhkNNrL95YUnZvRCdCA68Mm1n5fR87hkUBFPTp6IO_wx4UOTdPcI-3AKP7D4b_3oA6xdYSkfZo4wrBjMCGX4ZkR2wKGC9rl_Bvs6vsgq4eIXtH_wqAHd0vP4
|
||||
.amazon.com TRUE / TRUE 1653958447 sess-at-main "YWyWD1e0HRsfoRcPJXFKGs+gDXtQTbas47fEVJzWn6A="
|
||||
.amazon.com TRUE / TRUE 1653958447 sst-main Sst1|PQEk337sIEiZEXH7Oe-lynv5CepAtSy7zc8lh22uwm5L-xvvDzQOc7tYMEpgNwBqURUo8mWwKPTVBSscQjMyNLam308eCgTuowo1WfAn7of4Ylspz5aFOamAE6cGqQUpzEiYTEDwSc7ARrs7RjDQ64Pet7vxHXE-ouJorEup35y-yAIv9UtaVIYXFI5WXnjTmO7phqWYvy2hINgw8XQUjhvT_dGYN6l8m_bpRGC1VwtN5d2qFXIUhe7anAGbg_lCufeXIPJZhsDNYXemHG2diPUYxW_Q7mF30t7l6XfHAjIqkM8
|
||||
.amazon.com TRUE / FALSE 1653958573 i18n-prefs USD
|
||||
.amazon.com TRUE / FALSE 1653958585 session-id-time 2082787201l
|
||||
www.amazon.com FALSE / FALSE 1652662578 csm-hit tb:s-KP49VK73TBB0WT6V4WM8|1622422577773&t:1622422578481&adb:adblk_no
|
17
configs/Cookies/included/cookies_ps.txt
Normal file
17
configs/Cookies/included/cookies_ps.txt
Normal file
@ -0,0 +1,17 @@
|
||||
# HTTP Cookie File downloaded with cookies.txt by Genuinous @genuinous
|
||||
# This file can be used by wget, curl, aria2c and other standard compliant tools.
|
||||
# Usage Examples:
|
||||
# 1) wget -x --load-cookies cookies.txt "https://www.primevideo.com/detail/The-Handmaids-Tale-Series/0QW7NQ3CQIVMI5ED05XYS19P9U"
|
||||
# 2) curl --cookie cookies.txt "https://www.primevideo.com/detail/The-Handmaids-Tale-Series/0QW7NQ3CQIVMI5ED05XYS19P9U"
|
||||
# 3) aria2c --load-cookies cookies.txt "https://www.primevideo.com/detail/The-Handmaids-Tale-Series/0QW7NQ3CQIVMI5ED05XYS19P9U"
|
||||
#
|
||||
.primevideo.com TRUE / TRUE 1653714942 session-id 257-0038347-0468755
|
||||
.primevideo.com TRUE / TRUE 1653714942 ubid-main-av 259-1850744-5064919
|
||||
.primevideo.com TRUE / FALSE 1652961059 i18n-prefs USD
|
||||
.primevideo.com TRUE / TRUE 1652961059 x-main-av "ScrnSKLUeYEm9QlZHlwt3dZo782g6?buizSHPaFdhvjGMEbmm8?7OjHJTqsIQG7?"
|
||||
.primevideo.com TRUE / TRUE 1652961059 at-main-av Atza|IwEBIPO8plmb1MYDw9U1C7pP8JqQyay6o4juc-tcKRWs1W94AYF7XzYzmuEnqnRafyMRsxqaZNAzceuYSWmM4hitJz9u0jbH3HGbdBzoiQBQNeFuAvub0p2Fmp3fpjy8c0185XsQkTjMxfWSoFs6brScaTfrgEl-xfoLNRCT7SNh6I8QgJh9V6onZA9KuRriLQvEBFPEow78ro1rFZZA4rWha2l9
|
||||
.primevideo.com TRUE / TRUE 1652961059 sess-at-main-av "pdEPotZ1sWXm/+f/qV0SJ1aLA+yLWwSM04HLxIlWf3g="
|
||||
.primevideo.com TRUE / FALSE 1655626116 lc-main-av de_DE
|
||||
.primevideo.com TRUE / TRUE 1653714712 session-token "mtRVF4lOAzfyhTEkcJTnul8r9UdIC5egMEPYermEqJg+SvS7WOQDkOQbk878qqNiKv5vFCF67IFoHc8JoJeehwOzyjeKEUtEqrct0T26fWavDo9ih4TuAmm78jI06nIutdB8QyhHcImqxDCHA9GtnAYD6/JSA8aPsY23+1g0dI85LcKTXb7rBk3LxihUBw9f6RVM3p1LwrtvMHMy1D7WZQ=="
|
||||
.primevideo.com TRUE / FALSE 1653714942 session-id-time 2082758401l
|
||||
www.primevideo.com FALSE / FALSE 1652418943 csm-hit tb:V4A6B5JR131JV44WAJEY+s-P6F7H6HX20CJ3MG3NNVX|1622178943543&t:1622178943544&adb:adblk_yes
|
23
configs/Cookies/included/cookies_us.txt
Normal file
23
configs/Cookies/included/cookies_us.txt
Normal file
@ -0,0 +1,23 @@
|
||||
# HTTP Cookie File for domains related to amazon.com.
|
||||
# Downloaded with cookies.txt Chrome Extension (https://chrome.google.com/webstore/detail/njabckikapfpffapmjgojcnbfjonfjfg)
|
||||
# Example: wget -x --load-cookies cookies.txt https://www.amazon.com/
|
||||
#
|
||||
.amazon.com TRUE / TRUE 1654080101 session-id 131-7859327-9648921
|
||||
.amazon.com TRUE / TRUE 1654080101 ubid-main 131-7622153-8191118
|
||||
.associates-amazon.com TRUE / TRUE 1624466535 abid a6bcba4b-184a-79ca-fd5d-4f939a73eff4
|
||||
.amazon.com TRUE / FALSE 2082787202 lc-main en_US
|
||||
.amazon.com TRUE / TRUE 1654068574 x-main "qMm01hOue0S61wKyr3cHx7JQW37zGNOnb@rWK7AbQW0XAur8YvcW@GCwGUXUT?nF"
|
||||
.amazon.com TRUE / TRUE 1652926420 at-main Atza|IwEBIJrxfwLUK6HS-5D8TJsvmL4GYytj6qGK2hQrp7WUkEiIb8f_Qyzh456DDgS9JQtoZKFf2j42hQeuN6Yyzp75vnDKBfdFibHk2ESKyrT-1F6wV6ygKbI2HCR6pPX9N93UZf2sBU6J0azAIeVu4no3G6GIlatI9h3SlLfxJxsOhQuDfhgKTNn1G6mekXGd903QYZdXRP9rWcO-jsW08B5yCT6u
|
||||
.amazon.com TRUE / TRUE 1652926420 sess-at-main "OyzHXBcU9E8NV4+67WI32JiY5Po+mdIs+9n8r/uz+oA="
|
||||
.amazon.com TRUE / TRUE 1652926420 sst-main Sst1|PQHUAEZSCnHyQoZlK5WlmQbGCdlKfFzmrEJi0D-iWa_UjWbZ6lny2eCUPGXNSdWqnb8GhfqNAqBf98GYYekTHdbxYc9YrS3pc-YHUc-0tDmNk4faQOAjV546D0zh8T0X05l-HsTZ5oU_vaZJkB1Zec-tb3ZRG3qxX5Lxb7vy6IAxG57036Ykv9IMyGOOCqdgoHa7YS09Ht_pAfAQZYN6VM-LzvnF68iAvAmtISSkyXnQme_PHgozlGGRRj27cJSDXLvQP6ZFNGhFq9kptOxx9Slw6UQBmx1eo0TyfeiCt_6kpAI
|
||||
.amazon.com TRUE / FALSE 1654068574 i18n-prefs USD
|
||||
.aws.amazon.com TRUE / FALSE 1653735711 aws-priv eyJ2IjoxLCJldSI6MCwic3QiOjB9
|
||||
.amazon.com TRUE / FALSE 1653736859 s_fid 08CC8BDD22AD0635-1817E9A096C69103
|
||||
.amazon.com TRUE / FALSE 1653736859 regStatus pre-register
|
||||
.amazon.com TRUE / FALSE 1655895709 aws-target-data %7B%22support%22%3A%221%22%7D
|
||||
.amazon.com TRUE / FALSE 1653735710 aws-target-visitor-id 1622199709297-329210.34_0
|
||||
.aws.amazon.com TRUE / FALSE 1653735710 _mkto_trk id:112-TZM-766&token:_mch-aws.amazon.com-1622199710412-51353
|
||||
.amazon.com TRUE / FALSE 0 skin noskin
|
||||
.amazon.com TRUE / FALSE 1654080101 session-id-time 2082787201l
|
||||
.amazon.com TRUE / FALSE 2082787201 session-token "K6hL7YwHIrZL5wFPfIRl1z+QoXk7m9aQEuDBE4eskYhfrFNtBFgI3XlG7WedhSP9drA1Ouawulrw+Sr+Gz8tsVgQVqOBLr6M30Eu3MmJkKCGDMe6CFLAqXuS3x8f5pnKA2WhkzmHePItVp+1UCp6PrrDB6MWvgK6kdTcWj3RLVd4graGyeAijznY1oHfOOaV7WsNZQpDvE6TW9m3sUOP/A=="
|
||||
www.amazon.com FALSE / FALSE 1652784100 csm-hit tb:s-MSQPAFJNYPA20RVBJ170|1622544099143&t:1622544100333&adb:adblk_no
|
1
configs/KEYS/external.txt
Normal file
1
configs/KEYS/external.txt
Normal file
@ -0,0 +1 @@
|
||||
KID:KEY
|
108
configs/Tokens/primevideo.json
Normal file
108
configs/Tokens/primevideo.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"refresh_token": "Atnr|EwICIFqjcW3qfSYbPsGahXGhAsWeKSW8YbXqDEBQiFrzSH_SdXqEplGhBfcOGC03hdRtqmpIj3oFGwYx0TIwyaJWRqLU2mx0JR6E3iTt_9cSCgICt1hlV9LejnNHKvck5fEsZ1343oeDhfZ6br6FZkwsU_x-LNlvDyBBfRYddPMqLq-X7qBJWAXZuvG0YLxWDDuAN1A2BFU4QSWDYvEFuoeIcPgZQtkt5ebVdJxv1keiXF6F-Lgft5b1aBL-eK83G7ZFJPH-lanJZ_3tk_xTOTv13G8XBLeSwwPJ-r70tz8Ccao12g",
|
||||
"access_token": "bearer Atna|EwICID3U3hvIE0TqTBEPqG2B3Nn8Yhr-SFJ3e-aFoEec7oYtssLaFBAKBTmwz9arRM_fRHca2C_aRPMcA5SRto1HkreyzVEdKIfVKiibsZtAxEjeztj9XCCzkoFskeWdBf9nGtMC2872jbigtj0g6QDKiYvH2eh1I6l1Y3yDl-fA1DncGr5qum_lT88JIlMdT9sH8OkJ2YW1-aJhYuZDNXetN-tWTIrPanUQ6OEy9vTEa4ZpOLQEOTeKsJMV0M7aFEc68ZnGmBe-jHxKpbqbw20tnm6mFoVQ5gxySDh_L1qlZPd6WXZ9fiRNSEQwp58m5Vtkitw",
|
||||
"cookies": "session-id=145-5028685-5307043; ubid-main=134-7715513-6480940; x-main=\"1pTJtEcDLpLk25jg7gq0CiWz?6O2Y7EoeAgdCMGvicmGKGSsWY9cvH5XW@oZoTIw\"; at-main=\"Atza|IwEBIKY9z1_GBAJM5wyewJwl8Y_WWW45FX6YvfH_Xd8M8sPI6st3xj2x6DVYN90J508W0y2fFT_gJE2BYSDkezb9maFVMz3EZuIwvylzWOc2a4Qay8LME9fYqRZu2NA4EvsESRrWUgKhW-iX56dDL5Xg-9LJsNYD2l1kvVz4N1Tx4ZTDjfkiV5wRa8asBS-6htJGyOZ93xvhjz8oS3Aubed4SUHRfS1NPusExThL-6Pl4qsNFtuth_uVQRengHgzgj-7WAoGiW4NytrtlpxcXiL14MWseo0TdEZAuZEloLblad06a7t1vIy9HZfCnSUfLsKmAdBLAl2f9wd8uJgW5EHOeTHG\"; sess-at-main=\"eIH1m+wPTEwWNixmBz9UJe6KOE8CJT2qZSUcz3kt5Ug=\"",
|
||||
"device_serial": "9925GGTLDIMG71I5N730OKVLFL29M9FFYBTAZ4EA",
|
||||
"device_type": "A1KAXIG6VXSG8Y",
|
||||
"expire_in": 1622857693,
|
||||
"params": {
|
||||
"public_code": "BYXUY9",
|
||||
"private_code": "06be357b-269f-4a3e-9ea5-b13bb1ad6f2b",
|
||||
"domain": "com",
|
||||
"region": "ps",
|
||||
"ANDROID_REGISTRATION": {
|
||||
"domain": "Device",
|
||||
"app_name": "AIV",
|
||||
"app_version": "3.12.0",
|
||||
"device_model": "SHIELD Android TV",
|
||||
"os_version": "28",
|
||||
"device_type": "A1KAXIG6VXSG8Y",
|
||||
"device_serial": "9925GGTLDIMG71I5N730OKVLFL29M9FFYBTAZ4EA",
|
||||
"device_name": "%FIRST_NAME%'s%DUPE_STRATEGY_1ST% Shield TV",
|
||||
"software_version": "248"
|
||||
}
|
||||
},
|
||||
"RESPONSE": {
|
||||
"response": {
|
||||
"success": {
|
||||
"extensions": {
|
||||
"device_info": {
|
||||
"device_name": "Rajdeep's 3rd Shield TV",
|
||||
"device_serial_number": "9925GGTLDIMG71I5N730OKVLFL29M9FFYBTAZ4EA",
|
||||
"device_type": "A1KAXIG6VXSG8Y"
|
||||
},
|
||||
"customer_info": {
|
||||
"account_pool": "Amazon",
|
||||
"user_id": "amzn1.account.AELPYORG7577ZOG4WH33UGEQPU5A",
|
||||
"home_region": "NA",
|
||||
"name": "Rajdeep Biswas",
|
||||
"given_name": "Rajdeep"
|
||||
}
|
||||
},
|
||||
"tokens": {
|
||||
"website_cookies": [
|
||||
{
|
||||
"Path": "/",
|
||||
"Secure": "true",
|
||||
"Value": "145-5028685-5307043",
|
||||
"Expires": "30 May 2041 05:19:13 GMT",
|
||||
"Domain": ".amazon.com",
|
||||
"HttpOnly": "false",
|
||||
"Name": "session-id"
|
||||
},
|
||||
{
|
||||
"Path": "/",
|
||||
"Secure": "true",
|
||||
"Value": "134-7715513-6480940",
|
||||
"Expires": "30 May 2041 05:19:13 GMT",
|
||||
"Domain": ".amazon.com",
|
||||
"HttpOnly": "false",
|
||||
"Name": "ubid-main"
|
||||
},
|
||||
{
|
||||
"Path": "/",
|
||||
"Secure": "true",
|
||||
"Value": "\"1pTJtEcDLpLk25jg7gq0CiWz?6O2Y7EoeAgdCMGvicmGKGSsWY9cvH5XW@oZoTIw\"",
|
||||
"Expires": "30 May 2041 05:19:13 GMT",
|
||||
"Domain": ".amazon.com",
|
||||
"HttpOnly": "false",
|
||||
"Name": "x-main"
|
||||
},
|
||||
{
|
||||
"Path": "/",
|
||||
"Secure": "true",
|
||||
"Value": "\"Atza|IwEBIKY9z1_GBAJM5wyewJwl8Y_WWW45FX6YvfH_Xd8M8sPI6st3xj2x6DVYN90J508W0y2fFT_gJE2BYSDkezb9maFVMz3EZuIwvylzWOc2a4Qay8LME9fYqRZu2NA4EvsESRrWUgKhW-iX56dDL5Xg-9LJsNYD2l1kvVz4N1Tx4ZTDjfkiV5wRa8asBS-6htJGyOZ93xvhjz8oS3Aubed4SUHRfS1NPusExThL-6Pl4qsNFtuth_uVQRengHgzgj-7WAoGiW4NytrtlpxcXiL14MWseo0TdEZAuZEloLblad06a7t1vIy9HZfCnSUfLsKmAdBLAl2f9wd8uJgW5EHOeTHG\"",
|
||||
"Expires": "5 Jun 2021 05:19:13 GMT",
|
||||
"Domain": ".amazon.com",
|
||||
"HttpOnly": "true",
|
||||
"Name": "at-main"
|
||||
},
|
||||
{
|
||||
"Path": "/",
|
||||
"Secure": "true",
|
||||
"Value": "\"eIH1m+wPTEwWNixmBz9UJe6KOE8CJT2qZSUcz3kt5Ug=\"",
|
||||
"Expires": "5 Jun 2021 05:19:13 GMT",
|
||||
"Domain": ".amazon.com",
|
||||
"HttpOnly": "true",
|
||||
"Name": "sess-at-main"
|
||||
}
|
||||
],
|
||||
"store_authentication_cookie": {
|
||||
"cookie": "7oCEXDSy60WboDHQYCe/T0jQ+1NDez+6/5MbLVNZDtNmk1fz/74JBIZXldC+Auu3Kn2sLJsZ6a5nq4rGPWub3H47nq6NJEkcKkk/2GU49dTUX05cVFw+HDHStc/G0Wd5KwL0ad4VBuZ3FA0izAi2P0SFDIqt52JERuZfcfUf7kwIhz3B9cvOboS7EMBNzlLD"
|
||||
},
|
||||
"mac_dms": {
|
||||
"device_private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA0dXVFsllaGZK1SM9hr96Wc9qY6be/+39My9xGXv5FNyjvkjR\nK73WEq/jANaZ9Bv4vPHK75Qa/MmqGv9WDrjFCW+/525rz9MdgBSwtKidEHR7uCaI\nINtWlR5gPaMUmlHLYchRfWmxDIErO0WUhK5h7mhanp2EfA1UwMe2dZxJWp+esgSd\nxdvn+pW3hiGU0jB7+HGFLnxwPlASUXpLQkjXdeanBTtNCfX5m6QKREy0wTzpklCt\nJqMadva8ibYM12s3LF7N0hJhE7Vyp5pKAmbFG8pNgYbJ2CVG97bmgKYpgx/Yt+Mb\n70Z70xXZPUx3ZOSWsESmi3ah3VMsInJukwmp0wIDAQABAoIBAQDOXvbHBWX1yn0Y\nqCMPzmv/vi3NOkYiASc/2w3p2XK8oM9uCuGlmnvbPx8MKQObAJOfCFLlU41DRvdE\nvBEgQ3qN8FkVvRTNfb2KxU6RLy/iCh3PnB3P6sh5ujk/BY/ywjU7wy7aIEOfn74r\n+h+6amMofXt6ekLdWqMbQo/hlcbTF1W0zzI+aWbbGNdh+xavvD3LC37jGRD1VxNe\nvPATuX5MpCdTa/qrDbrnqlnKoXXbWO+DvNgMWi5IjCancqp9BW8J9rAQ5OA6fRLD\n7pFtWi+V18/Gttj6rOGvOpmC7LRp4JNSG2rQzR8PTg43R7dyd2dQIn4krswxKYPA\nOpRvi2gpAoGBAP5pudhprE5aaHeZTt+MytmJ4BiLgjoVbWOCtup/VVktEQbN7EUJ\nlJcWGF5Qo0C3WaN4vOlRKm5e/Kt1QvaHb8faE0zNh1WTqz47G8iVy+qehYE1PywG\nUabz0tau0y/ZZE/LXrQwVD2Dt4nwlfysc3/xnDs1pM0Wxxg2nMeehuHlAoGBANMk\n64EHCGHAvxU/y5mWre8zc4Fd66eipc8MFgPlJVCj9ffRpnUU9N9aRKuuilMbA82Z\nEL7MAXkfAlPCal2MGFlbJSYGvFygPeFg0NvQXoK+uc3A5nDJJBZrxGlutDVobs67\nnSpglt6b1A79029C3sYgs55ZDYsLPnQ6xKFp/QFXAoGALuHy0nOewg2dBLUmuMFs\nPCxRNJS42dVLBDR5Wrs+UiGg6p0V9h7u1+zFbtPzUaC4DwzX2zMO26n7a+k+/sk0\niyKfvd5+GwIMY3pnA06/diviNE5Ipuc/MsHpz5AF8OJhvuaePBxP2colD3FbYmWx\nHxm6DZs0FGsnI0olGBAZkRUCgYA3KOEBXzX4W6NPyM/Guw+LevSE6mVi8OHCOlUS\nBW3/KCZc7H9A/Q2PwARKmZl3ZopSztcKET+dRdWUzih9cdj2lxIYYhAZXp9r3qAR\nnNjj7TGbJ/bLpjBwTw0Lwij//t1b0rWXWY5wb2Mx22u+GEkcl3R1PKyGE5ToRmYS\nCR9YlwKBgQDfVuQZCfPJmDpKldf3up0hgY+ZC5SrpX3QM0Fz5RrhKwPfRvWENJMT\nEqyOXOGJ2RaDRcEjtF2b9/v3mTD5RB68Qozj0vTRPxjzbrjs5rg8VCVeZGBUlGRx\nnkUNDaeO4PYd4+UW2nNFEoawQYB1J71paOvk20QKueM1MRUpEI6gdA==\n-----END RSA PRIVATE KEY-----\n",
|
||||
"adp_token": "{enc:0p/vZ2wugGUr8L3A6hBKRzlgo5pHXOH2/Iu9fK4VYGxIUHhRrMtMonE9CFjTTNX6TcHPRXjUqWRPqvZo6Sg5NNua16bO/+SVtdOTGFyVg9dX6c81bCUtS6GyljEsvUSuq4kfbjo7l0Xgh27Y5ihASgwpMybD58+ifUqkgIuxNpUmWDOZiVZYi7+EUdM8EDilRlHf7LwOhkzGDSmaKKeSxRNNBgqozaUraUciM1+a3CM7lOFlJJePf/li4NpfdAC9A2Ww8TroIEE9HuiWCV/6t1HlBYKZH8RTgMiwQDpi7qc8hSlfE2gJwAAmlJEQUY8A7P+4EYa4fKU3tsIe0e1DF4pxMBzVSaTZH3EpHmrrpBKF4xywYKosCY/c/jxfS6gog4BecNXAIW8YL+nfpLtTLIqlTiKNHfTwm6AhT5TIgKq3sSWY9pwPO0BNov6tcXQ5caQllul1PJhLPN2PjPQ9/7fyzKjrxi3oZiVdS7gh7mlievOmplAVixc9K4fc/xiTy8fyQZqck1v/9paWqi6NJnQdYqt0wtK5qYz0p3oaLZI3G8/zz6MLeZxpKyXr88jqbvNthLpdxXe1cB5sRMNJRp8gSdluH5mR1dB05GAYwbU+GbckkEoQIqHB3vQLSMJUjMTXv/a43+uTqd8E1vjtMgrpy4mhbmcBrrPF1K0LWR8z3T2Z75sRWxNb8KpW43ouw0ck3Sm05cYegIma5b8P9/NbiRfZm/9Gz0GVQz25U1NqE4a7pBOk3jE3oooscsf3GZM+5TENvZDx4MAV979FEA/Z2k4jgrrOduTIYwfuF4PGjNkN1QsMuYczxHmrjsvuNJ3TM76/IcG5jBGfFQZBQO5Fzv3R7l4dlqISYtV17MkCDNnXwJ6rohnz8H0C+gxbR/Kcl+tWdtAAHkKYIgmCfkZgPByQTSKwC1je4EuC6YL96sR+LV5GUg8kaLJ/Ud3RZ/fnxZ+gi/jRskjKN2Hxn/8ZugMoxySfSc7RRBaSowUErnt8iPgg/8owi8OZUpMsDPr0sIKgjZScRklsJeAeDv1l031Y9EgabbCUm7O7Vtp1l6fXQWfKZcxYYKqypGBh}{key:Vc+00rapFNEmIT8NYQRlJqt8S9ZxCFpz+MVaGdng4jVu5EE00X/tFQzusA8FGaWW3rpbYqHSpKEZVa2gJapE4sgB9dWLaiT6tidNE4aKmgopF2/+ubc9lahrDjVTsvczx9RoTvvEtMgJtvwJ04rOb4N93q25K/IyUEFve7U/NcASSumpoB07Q2OIiW6DPHimqms/Y00W4NFq6F/unnO5vdEZWYeql+W3NTJd4pR+zC1rpgOpvFbquiibcgdxVm2Y4fQqNil6GdA9biCx7Otr6BudaJzxij1to9tH4tBt+LgibGrRA+aYWtrnt4rijor4tLdlqRo3jKaSBBZ+pYTO3w==}{iv:qThxxSnffr/fJPoOCU5U4w==}{name:QURQVG9rZW5FbmNyeXB0aW9uS2V5}{serial:Mg==}"
|
||||
},
|
||||
"bearer": {
|
||||
"access_token": "Atna|EwICIA7Jo3vvomqEX-KCECWtgoCap7ksP5_4S75wLzPrYDAGPYI2Jk06lVQJRuOZBCH7znrUETXpPp1Fbvsp-Ucn0CtT5Ql0gx5_damtPsnxoG1BiBo75Zjq_EZeyal8f12U53IVcXhLD2vjiis9s21PuP0uL3K6hH1qLgTktX6WfwAnt-Y8t7Kj_jFPf-0cjFlLHvs5gmEnKmqWDpxa4OSbougPMU1cmH5iXrWKuYAE-542nw",
|
||||
"refresh_token": "Atnr|EwICIFqjcW3qfSYbPsGahXGhAsWeKSW8YbXqDEBQiFrzSH_SdXqEplGhBfcOGC03hdRtqmpIj3oFGwYx0TIwyaJWRqLU2mx0JR6E3iTt_9cSCgICt1hlV9LejnNHKvck5fEsZ1343oeDhfZ6br6FZkwsU_x-LNlvDyBBfRYddPMqLq-X7qBJWAXZuvG0YLxWDDuAN1A2BFU4QSWDYvEFuoeIcPgZQtkt5ebVdJxv1keiXF6F-Lgft5b1aBL-eK83G7ZFJPH-lanJZ_3tk_xTOTv13G8XBLeSwwPJ-r70tz8Ccao12g",
|
||||
"expires_in": "3600"
|
||||
}
|
||||
},
|
||||
"customer_id": "amzn1.account.AELPYORG7577ZOG4WH33UGEQPU5A"
|
||||
}
|
||||
},
|
||||
"request_id": "e6229631-03db-41f4-a3ce-8aba27c91de7"
|
||||
}
|
||||
}
|
BIN
configs/__init__.pyc
Normal file
BIN
configs/__init__.pyc
Normal file
Binary file not shown.
13
configs/config.cfg
Normal file
13
configs/config.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[CONFIG]
|
||||
|
||||
|
||||
#####################PROXY#####################
|
||||
|
||||
nrd_email =
|
||||
nrd_password =
|
||||
|
||||
prv_email =
|
||||
prv_password =
|
||||
|
||||
tor_email =
|
||||
tor_password =
|
BIN
configs/config.pyc
Normal file
BIN
configs/config.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers.pyc
Normal file
BIN
helpers/Parsers.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/__init__.pyc
Normal file
BIN
helpers/Parsers/__init__.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo.pyc
Normal file
BIN
helpers/Parsers/primevideo.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/__init__.pyc
Normal file
BIN
helpers/Parsers/primevideo/__init__.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/clients.pyc
Normal file
BIN
helpers/Parsers/primevideo/clients.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/extractor.pyc
Normal file
BIN
helpers/Parsers/primevideo/extractor.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/license_request.pyc
Normal file
BIN
helpers/Parsers/primevideo/license_request.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/metadata.pyc
Normal file
BIN
helpers/Parsers/primevideo/metadata.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/metadata2.pyc
Normal file
BIN
helpers/Parsers/primevideo/metadata2.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/playback.pyc
Normal file
BIN
helpers/Parsers/primevideo/playback.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/prime.pyc
Normal file
BIN
helpers/Parsers/primevideo/prime.pyc
Normal file
Binary file not shown.
BIN
helpers/Parsers/primevideo/utils.pyc
Normal file
BIN
helpers/Parsers/primevideo/utils.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/ProxyHandler.pyc
Normal file
BIN
helpers/Utils/ProxyHandler.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/__init__.pyc
Normal file
BIN
helpers/Utils/__init__.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/aria2.pyc
Normal file
BIN
helpers/Utils/aria2.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/ffmpeg.pyc
Normal file
BIN
helpers/Utils/ffmpeg.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/keyloader.pyc
Normal file
BIN
helpers/Utils/keyloader.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/ripprocess.pyc
Normal file
BIN
helpers/Utils/ripprocess.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/schedule.pyc
Normal file
BIN
helpers/Utils/schedule.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/subtitle.pyc
Normal file
BIN
helpers/Utils/subtitle.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/utils.pyc
Normal file
BIN
helpers/Utils/utils.pyc
Normal file
Binary file not shown.
BIN
helpers/Utils/vpn.pyc
Normal file
BIN
helpers/Utils/vpn.pyc
Normal file
Binary file not shown.
BIN
helpers/__init__.pyc
Normal file
BIN
helpers/__init__.pyc
Normal file
Binary file not shown.
BIN
helpers/main.pyc
Normal file
BIN
helpers/main.pyc
Normal file
Binary file not shown.
BIN
helpers/tracks.pyc
Normal file
BIN
helpers/tracks.pyc
Normal file
Binary file not shown.
BIN
helpers/tracks_colored.pyc
Normal file
BIN
helpers/tracks_colored.pyc
Normal file
Binary file not shown.
BIN
helpers/wvdownloader.pyc
Normal file
BIN
helpers/wvdownloader.pyc
Normal file
Binary file not shown.
BIN
helpers/wvtracks.pyc
Normal file
BIN
helpers/wvtracks.pyc
Normal file
Binary file not shown.
BIN
pywidevine/cdm/__pycache__/cdm.cpython-39.pyc
Normal file
BIN
pywidevine/cdm/__pycache__/cdm.cpython-39.pyc
Normal file
Binary file not shown.
BIN
pywidevine/cdm/__pycache__/deviceconfig.cpython-39.pyc
Normal file
BIN
pywidevine/cdm/__pycache__/deviceconfig.cpython-39.pyc
Normal file
Binary file not shown.
BIN
pywidevine/cdm/__pycache__/key.cpython-39.pyc
Normal file
BIN
pywidevine/cdm/__pycache__/key.cpython-39.pyc
Normal file
Binary file not shown.
BIN
pywidevine/cdm/__pycache__/session.cpython-39.pyc
Normal file
BIN
pywidevine/cdm/__pycache__/session.cpython-39.pyc
Normal file
Binary file not shown.
369
pywidevine/cdm/cdm.py
Normal file
369
pywidevine/cdm/cdm.py
Normal file
@ -0,0 +1,369 @@
|
||||
#if __name__ == 'pywidevine.cdm':
|
||||
import base64
|
||||
|
||||
import os
|
||||
import time
|
||||
import binascii
|
||||
|
||||
from google.protobuf.message import DecodeError
|
||||
from google.protobuf import text_format
|
||||
|
||||
from pywidevine.cdm.formats import wv_proto2_pb2 as wv_proto2
|
||||
from pywidevine.cdm.session import Session
|
||||
from pywidevine.cdm.key import Key
|
||||
from Cryptodome.Random import get_random_bytes
|
||||
from Cryptodome.Random import random
|
||||
from Cryptodome.Cipher import PKCS1_OAEP, AES
|
||||
from Cryptodome.Hash import CMAC, SHA256, HMAC, SHA1
|
||||
from Cryptodome.PublicKey import RSA
|
||||
from Cryptodome.Signature import pss
|
||||
from Cryptodome.Util import Padding
|
||||
import logging
|
||||
import warnings
|
||||
|
||||
|
||||
class Cdm:
|
||||
def __init__(self):
|
||||
self.logger = logging.getLogger(__name__)
|
||||
self.sessions = {}
|
||||
|
||||
def open_session(self, init_data_b64, device, raw_init_data = None, offline=False):
|
||||
self.logger.debug("open_session(init_data_b64={}, device={}".format(init_data_b64, device))
|
||||
self.logger.info("opening new cdm session")
|
||||
if device.session_id_type == 'android':
|
||||
# format: 16 random hexdigits, 2 digit counter, 14 0s
|
||||
rand_ascii = ''.join(random.choice('ABCDEF0123456789') for _ in range(16))
|
||||
counter = '01' # this resets regularly so its fine to use 01
|
||||
rest = '00000000000000'
|
||||
session_id = rand_ascii + counter + rest
|
||||
session_id = session_id.encode('ascii')
|
||||
elif device.session_id_type == 'chrome':
|
||||
rand_bytes = get_random_bytes(16)
|
||||
session_id = rand_bytes
|
||||
else:
|
||||
# other formats NYI
|
||||
self.logger.error("device type is unusable")
|
||||
return 1
|
||||
if raw_init_data and isinstance(raw_init_data, (bytes, bytearray)):
|
||||
# used for NF key exchange, where they don't provide a valid PSSH
|
||||
init_data = raw_init_data
|
||||
self.raw_pssh = True
|
||||
else:
|
||||
init_data = self._parse_init_data(init_data_b64)
|
||||
self.raw_pssh = False
|
||||
|
||||
if init_data:
|
||||
new_session = Session(session_id, init_data, device, offline)
|
||||
else:
|
||||
self.logger.error("unable to parse init data")
|
||||
return 1
|
||||
self.sessions[session_id] = new_session
|
||||
self.logger.info("session opened and init data parsed successfully")
|
||||
return session_id
|
||||
|
||||
|
||||
def _parse_init_data(self, init_data_b64):
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter('error')
|
||||
parsed_init_data = wv_proto2.WidevineCencHeader()
|
||||
try:
|
||||
self.logger.debug("trying to parse init_data directly")
|
||||
parsed_init_data.ParseFromString(base64.b64decode(init_data_b64))
|
||||
except (DecodeError, SystemError):
|
||||
self.logger.debug("unable to parse as-is, trying with removed pssh box header")
|
||||
try:
|
||||
id_bytes = parsed_init_data.ParseFromString(base64.b64decode(init_data_b64)[32:])
|
||||
except (DecodeError, SystemError):
|
||||
self.logger.error("unable to parse, unsupported init data format")
|
||||
return None
|
||||
self.logger.debug("init_data:")
|
||||
for line in text_format.MessageToString(parsed_init_data).splitlines():
|
||||
self.logger.debug(line)
|
||||
return parsed_init_data
|
||||
|
||||
|
||||
def close_session(self, session_id):
|
||||
self.logger.debug("close_session(session_id={})".format(session_id))
|
||||
self.logger.info("closing cdm session")
|
||||
if session_id in self.sessions:
|
||||
self.sessions.pop(session_id)
|
||||
self.logger.info("cdm session closed")
|
||||
return 0
|
||||
else:
|
||||
self.logger.info("session {} not found".format(session_id))
|
||||
return 1
|
||||
|
||||
def set_service_certificate(self, session_id, cert_b64):
|
||||
self.logger.debug("set_service_certificate(session_id={}, cert={})".format(session_id, cert_b64))
|
||||
self.logger.info("setting service certificate")
|
||||
|
||||
if session_id not in self.sessions:
|
||||
self.logger.error("session id doesn't exist")
|
||||
return 1
|
||||
|
||||
session = self.sessions[session_id]
|
||||
|
||||
message = wv_proto2.SignedMessage()
|
||||
|
||||
try:
|
||||
message.ParseFromString(base64.b64decode(cert_b64))
|
||||
except DecodeError:
|
||||
self.logger.error("failed to parse cert as SignedMessage")
|
||||
|
||||
service_certificate = wv_proto2.SignedDeviceCertificate()
|
||||
|
||||
if message.Type:
|
||||
self.logger.debug("service cert provided as signedmessage")
|
||||
try:
|
||||
service_certificate.ParseFromString(message.Msg)
|
||||
except DecodeError:
|
||||
self.logger.error("failed to parse service certificate")
|
||||
return 1
|
||||
else:
|
||||
self.logger.debug("service cert provided as signeddevicecertificate")
|
||||
try:
|
||||
service_certificate.ParseFromString(base64.b64decode(cert_b64))
|
||||
except DecodeError:
|
||||
self.logger.error("failed to parse service certificate")
|
||||
return 1
|
||||
|
||||
self.logger.debug("service certificate:")
|
||||
for line in text_format.MessageToString(service_certificate).splitlines():
|
||||
self.logger.debug(line)
|
||||
|
||||
session.service_certificate = service_certificate
|
||||
session.privacy_mode = True
|
||||
|
||||
return 0
|
||||
|
||||
def get_license_request(self, session_id):
|
||||
self.logger.debug("get_license_request(session_id={})".format(session_id))
|
||||
self.logger.info("getting license request")
|
||||
|
||||
if session_id not in self.sessions:
|
||||
self.logger.error("session ID does not exist")
|
||||
return 1
|
||||
|
||||
session = self.sessions[session_id]
|
||||
|
||||
# raw pssh will be treated as bytes and not parsed
|
||||
if self.raw_pssh:
|
||||
license_request = wv_proto2.SignedLicenseRequestRaw()
|
||||
else:
|
||||
license_request = wv_proto2.SignedLicenseRequest()
|
||||
client_id = wv_proto2.ClientIdentification()
|
||||
|
||||
if not os.path.exists(session.device_config.device_client_id_blob_filename):
|
||||
self.logger.error("no client ID blob available for this device")
|
||||
return 1
|
||||
|
||||
with open(session.device_config.device_client_id_blob_filename, "rb") as f:
|
||||
try:
|
||||
cid_bytes = client_id.ParseFromString(f.read())
|
||||
except DecodeError:
|
||||
self.logger.error("client id failed to parse as protobuf")
|
||||
return 1
|
||||
|
||||
self.logger.debug("building license request")
|
||||
if not self.raw_pssh:
|
||||
license_request.Type = wv_proto2.SignedLicenseRequest.MessageType.Value('LICENSE_REQUEST')
|
||||
license_request.Msg.ContentId.CencId.Pssh.CopyFrom(session.init_data)
|
||||
else:
|
||||
license_request.Type = wv_proto2.SignedLicenseRequestRaw.MessageType.Value('LICENSE_REQUEST')
|
||||
license_request.Msg.ContentId.CencId.Pssh = session.init_data # bytes
|
||||
|
||||
if session.offline:
|
||||
license_type = wv_proto2.LicenseType.Value('OFFLINE')
|
||||
else:
|
||||
license_type = wv_proto2.LicenseType.Value('DEFAULT')
|
||||
license_request.Msg.ContentId.CencId.LicenseType = license_type
|
||||
license_request.Msg.ContentId.CencId.RequestId = session_id
|
||||
license_request.Msg.Type = wv_proto2.LicenseRequest.RequestType.Value('NEW')
|
||||
license_request.Msg.RequestTime = int(time.time())
|
||||
license_request.Msg.ProtocolVersion = wv_proto2.ProtocolVersion.Value('CURRENT')
|
||||
if session.device_config.send_key_control_nonce:
|
||||
license_request.Msg.KeyControlNonce = random.randrange(1, 2**31)
|
||||
|
||||
if session.privacy_mode:
|
||||
if session.device_config.vmp:
|
||||
self.logger.debug("vmp required, adding to client_id")
|
||||
self.logger.debug("reading vmp hashes")
|
||||
vmp_hashes = wv_proto2.FileHashes()
|
||||
with open(session.device_config.device_vmp_blob_filename, "rb") as f:
|
||||
try:
|
||||
vmp_bytes = vmp_hashes.ParseFromString(f.read())
|
||||
except DecodeError:
|
||||
self.logger.error("vmp hashes failed to parse as protobuf")
|
||||
return 1
|
||||
client_id._FileHashes.CopyFrom(vmp_hashes)
|
||||
self.logger.debug("privacy mode & service certificate loaded, encrypting client id")
|
||||
self.logger.debug("unencrypted client id:")
|
||||
for line in text_format.MessageToString(client_id).splitlines():
|
||||
self.logger.debug(line)
|
||||
cid_aes_key = get_random_bytes(16)
|
||||
cid_iv = get_random_bytes(16)
|
||||
|
||||
cid_cipher = AES.new(cid_aes_key, AES.MODE_CBC, cid_iv)
|
||||
|
||||
encrypted_client_id = cid_cipher.encrypt(Padding.pad(client_id.SerializeToString(), 16))
|
||||
|
||||
service_public_key = RSA.importKey(session.service_certificate._DeviceCertificate.PublicKey)
|
||||
|
||||
service_cipher = PKCS1_OAEP.new(service_public_key)
|
||||
|
||||
encrypted_cid_key = service_cipher.encrypt(cid_aes_key)
|
||||
|
||||
encrypted_client_id_proto = wv_proto2.EncryptedClientIdentification()
|
||||
|
||||
encrypted_client_id_proto.ServiceId = session.service_certificate._DeviceCertificate.ServiceId
|
||||
encrypted_client_id_proto.ServiceCertificateSerialNumber = session.service_certificate._DeviceCertificate.SerialNumber
|
||||
encrypted_client_id_proto.EncryptedClientId = encrypted_client_id
|
||||
encrypted_client_id_proto.EncryptedClientIdIv = cid_iv
|
||||
encrypted_client_id_proto.EncryptedPrivacyKey = encrypted_cid_key
|
||||
|
||||
license_request.Msg.EncryptedClientId.CopyFrom(encrypted_client_id_proto)
|
||||
else:
|
||||
license_request.Msg.ClientId.CopyFrom(client_id)
|
||||
|
||||
if session.device_config.private_key_available:
|
||||
key = RSA.importKey(open(session.device_config.device_private_key_filename).read())
|
||||
session.device_key = key
|
||||
else:
|
||||
self.logger.error("need device private key, other methods unimplemented")
|
||||
return 1
|
||||
|
||||
self.logger.debug("signing license request")
|
||||
|
||||
hash = SHA1.new(license_request.Msg.SerializeToString())
|
||||
signature = pss.new(key).sign(hash)
|
||||
|
||||
license_request.Signature = signature
|
||||
|
||||
session.license_request = license_request
|
||||
|
||||
self.logger.debug("license request:")
|
||||
for line in text_format.MessageToString(session.license_request).splitlines():
|
||||
self.logger.debug(line)
|
||||
self.logger.info("license request created")
|
||||
self.logger.debug("license request b64: {}".format(base64.b64encode(license_request.SerializeToString())))
|
||||
return license_request.SerializeToString()
|
||||
|
||||
def provide_license(self, session_id, license_b64):
|
||||
self.logger.debug("provide_license(session_id={}, license_b64={})".format(session_id, license_b64))
|
||||
self.logger.info("decrypting provided license")
|
||||
|
||||
if session_id not in self.sessions:
|
||||
self.logger.error("session does not exist")
|
||||
return 1
|
||||
|
||||
session = self.sessions[session_id]
|
||||
|
||||
if not session.license_request:
|
||||
self.logger.error("generate a license request first!")
|
||||
return 1
|
||||
|
||||
license = wv_proto2.SignedLicense()
|
||||
try:
|
||||
license.ParseFromString(base64.b64decode(license_b64))
|
||||
except DecodeError:
|
||||
self.logger.error("unable to parse license - check protobufs")
|
||||
return 1
|
||||
|
||||
session.license = license
|
||||
|
||||
self.logger.debug("license:")
|
||||
for line in text_format.MessageToString(license).splitlines():
|
||||
self.logger.debug(line)
|
||||
|
||||
self.logger.debug("deriving keys from session key")
|
||||
|
||||
oaep_cipher = PKCS1_OAEP.new(session.device_key)
|
||||
|
||||
session.session_key = oaep_cipher.decrypt(license.SessionKey)
|
||||
|
||||
lic_req_msg = session.license_request.Msg.SerializeToString()
|
||||
|
||||
enc_key_base = b"ENCRYPTION\000" + lic_req_msg + b"\0\0\0\x80"
|
||||
auth_key_base = b"AUTHENTICATION\0" + lic_req_msg + b"\0\0\2\0"
|
||||
|
||||
enc_key = b"\x01" + enc_key_base
|
||||
auth_key_1 = b"\x01" + auth_key_base
|
||||
auth_key_2 = b"\x02" + auth_key_base
|
||||
auth_key_3 = b"\x03" + auth_key_base
|
||||
auth_key_4 = b"\x04" + auth_key_base
|
||||
|
||||
cmac_obj = CMAC.new(session.session_key, ciphermod=AES)
|
||||
cmac_obj.update(enc_key)
|
||||
|
||||
enc_cmac_key = cmac_obj.digest()
|
||||
|
||||
cmac_obj = CMAC.new(session.session_key, ciphermod=AES)
|
||||
cmac_obj.update(auth_key_1)
|
||||
auth_cmac_key_1 = cmac_obj.digest()
|
||||
|
||||
cmac_obj = CMAC.new(session.session_key, ciphermod=AES)
|
||||
cmac_obj.update(auth_key_2)
|
||||
auth_cmac_key_2 = cmac_obj.digest()
|
||||
|
||||
cmac_obj = CMAC.new(session.session_key, ciphermod=AES)
|
||||
cmac_obj.update(auth_key_3)
|
||||
auth_cmac_key_3 = cmac_obj.digest()
|
||||
|
||||
cmac_obj = CMAC.new(session.session_key, ciphermod=AES)
|
||||
cmac_obj.update(auth_key_4)
|
||||
auth_cmac_key_4 = cmac_obj.digest()
|
||||
|
||||
auth_cmac_combined_1 = auth_cmac_key_1 + auth_cmac_key_2
|
||||
auth_cmac_combined_2 = auth_cmac_key_3 + auth_cmac_key_4
|
||||
|
||||
session.derived_keys['enc'] = enc_cmac_key
|
||||
session.derived_keys['auth_1'] = auth_cmac_combined_1
|
||||
session.derived_keys['auth_2'] = auth_cmac_combined_2
|
||||
|
||||
self.logger.debug('verifying license signature')
|
||||
|
||||
lic_hmac = HMAC.new(session.derived_keys['auth_1'], digestmod=SHA256)
|
||||
lic_hmac.update(license.Msg.SerializeToString())
|
||||
|
||||
self.logger.debug("calculated sig: {} actual sig: {}".format(lic_hmac.hexdigest(), binascii.hexlify(license.Signature)))
|
||||
|
||||
if lic_hmac.digest() != license.Signature:
|
||||
self.logger.info("license signature doesn't match - writing bin so they can be debugged")
|
||||
with open("original_lic.bin", "wb") as f:
|
||||
f.write(base64.b64decode(license_b64))
|
||||
with open("parsed_lic.bin", "wb") as f:
|
||||
f.write(license.SerializeToString())
|
||||
self.logger.info("continuing anyway")
|
||||
|
||||
self.logger.debug("key count: {}".format(len(license.Msg.Key)))
|
||||
for key in license.Msg.Key:
|
||||
if key.Id:
|
||||
key_id = key.Id
|
||||
else:
|
||||
key_id = wv_proto2.License.KeyContainer.KeyType.Name(key.Type).encode('utf-8')
|
||||
encrypted_key = key.Key
|
||||
iv = key.Iv
|
||||
type = wv_proto2.License.KeyContainer.KeyType.Name(key.Type)
|
||||
|
||||
cipher = AES.new(session.derived_keys['enc'], AES.MODE_CBC, iv=iv)
|
||||
decrypted_key = cipher.decrypt(encrypted_key)
|
||||
if type == "OPERATOR_SESSION":
|
||||
permissions = []
|
||||
perms = key._OperatorSessionKeyPermissions
|
||||
for (descriptor, value) in perms.ListFields():
|
||||
if value == 1:
|
||||
permissions.append(descriptor.name)
|
||||
#print(permissions)
|
||||
else:
|
||||
permissions = []
|
||||
session.keys.append(Key(key_id, type, Padding.unpad(decrypted_key, 16), permissions))
|
||||
|
||||
self.logger.info("decrypted all keys")
|
||||
return 0
|
||||
|
||||
def get_keys(self, session_id):
|
||||
if session_id in self.sessions:
|
||||
return self.sessions[session_id].keys
|
||||
else:
|
||||
self.logger.error("session not found")
|
||||
return 1
|
57
pywidevine/cdm/deviceconfig.py
Normal file
57
pywidevine/cdm/deviceconfig.py
Normal file
@ -0,0 +1,57 @@
|
||||
import os
|
||||
|
||||
device_sony_lvl1 = {
|
||||
'name': 'sony_lvl1',
|
||||
'description': 'sony d6503 firmware 6.0.1 lvl1 security level',
|
||||
'security_level': 1,
|
||||
'session_id_type': 'android',
|
||||
'private_key_available': True,
|
||||
'vmp': False,
|
||||
'send_key_control_nonce': True
|
||||
}
|
||||
|
||||
devices_available = [device_sony_lvl1]
|
||||
|
||||
#from __main__ import dirPath
|
||||
main_folder = os.path.dirname(__file__)
|
||||
#main_folder = os.path.join('.', 'pywidevine', 'cdm')
|
||||
|
||||
FILES_FOLDER = 'devices'
|
||||
|
||||
class DeviceConfig:
|
||||
def __init__(self, device):
|
||||
self.device_name = device['name']
|
||||
self.description = device['description']
|
||||
self.security_level = device['security_level']
|
||||
self.session_id_type = device['session_id_type']
|
||||
self.private_key_available = device['private_key_available']
|
||||
self.vmp = device['vmp']
|
||||
self.send_key_control_nonce = device['send_key_control_nonce']
|
||||
|
||||
if 'keybox_filename' in device:
|
||||
self.keybox_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], device['keybox_filename'])
|
||||
else:
|
||||
self.keybox_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], 'keybox')
|
||||
|
||||
if 'device_cert_filename' in device:
|
||||
self.device_cert_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], device['device_cert_filename'])
|
||||
else:
|
||||
self.device_cert_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], 'device_cert')
|
||||
|
||||
if 'device_private_key_filename' in device:
|
||||
self.device_private_key_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], device['device_private_key_filename'])
|
||||
else:
|
||||
self.device_private_key_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], 'device_private_key')
|
||||
|
||||
if 'device_client_id_blob_filename' in device:
|
||||
self.device_client_id_blob_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], device['device_client_id_blob_filename'])
|
||||
else:
|
||||
self.device_client_id_blob_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], 'device_client_id_blob')
|
||||
|
||||
if 'device_vmp_blob_filename' in device:
|
||||
self.device_vmp_blob_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], device['device_vmp_blob_filename'])
|
||||
else:
|
||||
self.device_vmp_blob_filename = os.path.join(main_folder, FILES_FOLDER, device['name'], 'device_vmp_blob')
|
||||
|
||||
def __repr__(self):
|
||||
return "DeviceConfig(name={}, description={}, security_level={}, session_id_type={}, private_key_available={}, vmp={})".format(self.device_name, self.description, self.security_level, self.session_id_type, self.private_key_available, self.vmp)
|
21
pywidevine/cdm/devices/sony_lvl1/config.json
Normal file
21
pywidevine/cdm/devices/sony_lvl1/config.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"token": "z2.token",
|
||||
"client_info":
|
||||
{
|
||||
"company_name": "Sony",
|
||||
"model_name": "D6503",
|
||||
"architecture_name": "armeabi-v7a",
|
||||
"device_name": "D6503",
|
||||
"product_name": "D6503",
|
||||
"build_info": "Sony/D6503/D6503:6.0.1/23.5.A.1.291/2769308465:user/release-keys",
|
||||
"device_id": "U09OWV9YUEVSSUFfMDdkZV8wMDc1ZTkwMAAAAAAAAAA=",
|
||||
"os_version": "6.0.1"
|
||||
},
|
||||
"capabilities":
|
||||
{
|
||||
"session_token": 1,
|
||||
"max_hdcp_version": "HDCP_V2_2",
|
||||
"oem_crypto_api_version": 11
|
||||
}
|
||||
}
|
||||
|
BIN
pywidevine/cdm/devices/sony_lvl1/device_client_id_blob
Normal file
BIN
pywidevine/cdm/devices/sony_lvl1/device_client_id_blob
Normal file
Binary file not shown.
28
pywidevine/cdm/devices/sony_lvl1/device_private_key
Normal file
28
pywidevine/cdm/devices/sony_lvl1/device_private_key
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCsw9uELBU9gKUT
|
||||
Lt1eK+NKWHOJVrfxRFvF0yunCO5IH63QXyBVbZWziYJluHjLE9Fz6avSq3NB60Wy
|
||||
n2blN/gxAd2zTX9Nz2aqTU5N0lzfbi+aIr1KNmYxnJ76VOK7BA5n7+nLpA3DeUDW
|
||||
AXVK00yqO83ArElJXej+Lj74AFPzkN4ciGHH4MtN/OuYCe0PzCXGM23eaueHp9Gb
|
||||
w6dPOTUsKpywDNKPElFhJ4FWTr6Lw8y/hrmSlYGXh0HtQ4NtR2q/qWFW/ItukCDl
|
||||
IIRnxZeC2U/G9lOH02oYehJRe3Td44KmUE+XF0dD5gklhNDGbGCr3bbGAVt0Fxq8
|
||||
Qu0mIct1AgMBAAECggEANw78KHU8F6ul8CUhW1+1Qf5KY9yFJpjYfoU8BjGsbsPZ
|
||||
yuxmC5Ou/9a0/eH6bQ3V1JEFt0/4nWtzfOecDTT3HfcwRnJOPef5GhElAVwnSPV+
|
||||
qiqkFMCddPYrHDBtSZiTVsB4y/Nuh3tfFFTGoqAQcLg6bEr72CvbkxX97197YcWl
|
||||
VxEkJY/6ubb3j85zyq/3naktLcZQCE/9CCEo/ynqAEgITwWyFKtgVC7kYHj+OgvB
|
||||
1vMcKvgsbiF3ME2QUyjsbkbUGeM6hobZfR4gsbgS4WVZyr2nTY3jL8wuKEe3/jT/
|
||||
Qn7gGhJ/fGRSTYr/zi97UDSlsZjNOk31KLutBCiyCQKBgQDTrZlznpjUcL6ACIv2
|
||||
5umjS/MlxE1kZB5oTGBKTMA/nWITtnMMluNbkdyT7O0YLtI2Sth3P36P25bbqBvW
|
||||
ENBh7XwTZlumcFKdgJooF8SJildU0DFwPRoZTOPBVlzoJIWhOEeDGvkwmitlOdxw
|
||||
F9i5X4kbx9oE9buiwC2hPZkU8wKBgQDQ8G9ec46cNxEm0E6Us9VRQgfdVO5AZ2p1
|
||||
S8g/zzodj+9h74zEcfOGpN5SyPHhv3D2yYlgVCn/wJ9dTQPH7O9zz13vhxRNLkVb
|
||||
iIQh0uyT+I3OWOfR30Op6FmSNQXin0WLcNoRVUerc8arDkezy2O10HYql80wjovq
|
||||
PHJhHXBX9wKBgApV76g1lkDJQIP/5tWncMEIdFbjvuOn/9QX5pu6I6j3hlJwFi4H
|
||||
MBLIjHyslOcZYipEfU1VTFi54CPZkYJiT8p4ThakaNU3ptEJ9nz+rBoLJzh88e0J
|
||||
Dr0tg/FsxhyPq/azSMqeBozY+kV3DcxrXamvgIJav8p+NSs9Nv0ohNEBAoGAEiF7
|
||||
GJAghO/GXj7fQsokLav0MMGo9w/CTjFoTBk4as5NsIrwBS/6OOnfnQFw8+z/6Xpt
|
||||
oF1NU7MsYRVIybWGxd7twNZQ7a2hOSMsjB7YhrKf45MVcsHUBk9yTlypiRPXHhWJ
|
||||
5s0mrfsa90cC89gna+SODH4lwRvtikL6jfDXCdsCgYEApnOtzB40/B6+9heGC1Gl
|
||||
NP8f43sulFd5SmfTlO1aYR9ZgM2iyitFFJmmB2tFK5FShwrWPZGLD7z2yTwoZKKq
|
||||
IMlIwvqpyhVEY+qAVjxUA49EKfKph02M9gDkKY00dAKDIStGwAEDGHCTTUgVzoCv
|
||||
Px5FCz0Oml6fgbJD7kh1OPs=
|
||||
-----END PRIVATE KEY-----
|
BIN
pywidevine/cdm/devices/sony_lvl1/token.bin
Normal file
BIN
pywidevine/cdm/devices/sony_lvl1/token.bin
Normal file
Binary file not shown.
BIN
pywidevine/cdm/formats/__pycache__/wv_proto2_pb2.cpython-39.pyc
Normal file
BIN
pywidevine/cdm/formats/__pycache__/wv_proto2_pb2.cpython-39.pyc
Normal file
Binary file not shown.
466
pywidevine/cdm/formats/wv_proto2.proto
Normal file
466
pywidevine/cdm/formats/wv_proto2.proto
Normal file
@ -0,0 +1,466 @@
|
||||
syntax = "proto2";
|
||||
|
||||
// from x86 (partial), most of it from the ARM version:
|
||||
message ClientIdentification {
|
||||
enum TokenType {
|
||||
KEYBOX = 0;
|
||||
DEVICE_CERTIFICATE = 1;
|
||||
REMOTE_ATTESTATION_CERTIFICATE = 2;
|
||||
}
|
||||
message NameValue {
|
||||
required string Name = 1;
|
||||
required string Value = 2;
|
||||
}
|
||||
message ClientCapabilities {
|
||||
enum HdcpVersion {
|
||||
HDCP_NONE = 0;
|
||||
HDCP_V1 = 1;
|
||||
HDCP_V2 = 2;
|
||||
HDCP_V2_1 = 3;
|
||||
HDCP_V2_2 = 4;
|
||||
}
|
||||
optional uint32 ClientToken = 1;
|
||||
optional uint32 SessionToken = 2;
|
||||
optional uint32 VideoResolutionConstraints = 3;
|
||||
optional HdcpVersion MaxHdcpVersion = 4;
|
||||
optional uint32 OemCryptoApiVersion = 5;
|
||||
}
|
||||
required TokenType Type = 1;
|
||||
//optional bytes Token = 2; // by default the client treats this as blob, but it's usually a DeviceCertificate, so for usefulness sake, I'm replacing it with this one:
|
||||
optional SignedDeviceCertificate Token = 2; // use this when parsing, "bytes" when building a client id blob
|
||||
repeated NameValue ClientInfo = 3;
|
||||
optional bytes ProviderClientToken = 4;
|
||||
optional uint32 LicenseCounter = 5;
|
||||
optional ClientCapabilities _ClientCapabilities = 6; // how should we deal with duped names? will have to look at proto docs later
|
||||
optional FileHashes _FileHashes = 7; // vmp blob goes here
|
||||
}
|
||||
|
||||
message DeviceCertificate {
|
||||
enum CertificateType {
|
||||
ROOT = 0;
|
||||
INTERMEDIATE = 1;
|
||||
USER_DEVICE = 2;
|
||||
SERVICE = 3;
|
||||
}
|
||||
required CertificateType Type = 1; // the compiled code reused this as ProvisionedDeviceInfo.WvSecurityLevel, however that is incorrect (compiler aliased it as they're both identical as a structure)
|
||||
optional bytes SerialNumber = 2;
|
||||
optional uint32 CreationTimeSeconds = 3;
|
||||
optional bytes PublicKey = 4;
|
||||
optional uint32 SystemId = 5;
|
||||
optional uint32 TestDeviceDeprecated = 6; // is it bool or int?
|
||||
optional bytes ServiceId = 7; // service URL for service certificates
|
||||
}
|
||||
|
||||
// missing some references,
|
||||
message DeviceCertificateStatus {
|
||||
enum CertificateStatus {
|
||||
VALID = 0;
|
||||
REVOKED = 1;
|
||||
}
|
||||
optional bytes SerialNumber = 1;
|
||||
optional CertificateStatus Status = 2;
|
||||
optional ProvisionedDeviceInfo DeviceInfo = 4; // where is 3? is it deprecated?
|
||||
}
|
||||
|
||||
message DeviceCertificateStatusList {
|
||||
optional uint32 CreationTimeSeconds = 1;
|
||||
repeated DeviceCertificateStatus CertificateStatus = 2;
|
||||
}
|
||||
|
||||
message EncryptedClientIdentification {
|
||||
required string ServiceId = 1;
|
||||
optional bytes ServiceCertificateSerialNumber = 2;
|
||||
required bytes EncryptedClientId = 3;
|
||||
required bytes EncryptedClientIdIv = 4;
|
||||
required bytes EncryptedPrivacyKey = 5;
|
||||
}
|
||||
|
||||
// todo: fill (for this top-level type, it might be impossible/difficult)
|
||||
enum LicenseType {
|
||||
ZERO = 0;
|
||||
DEFAULT = 1; // 1 is STREAMING/temporary license; on recent versions may go up to 3 (latest x86); it might be persist/don't persist type, unconfirmed
|
||||
OFFLINE = 2;
|
||||
}
|
||||
|
||||
// todo: fill (for this top-level type, it might be impossible/difficult)
|
||||
// this is just a guess because these globals got lost, but really, do we need more?
|
||||
enum ProtocolVersion {
|
||||
CURRENT = 21; // don't have symbols for this
|
||||
}
|
||||
|
||||
|
||||
message LicenseIdentification {
|
||||
optional bytes RequestId = 1;
|
||||
optional bytes SessionId = 2;
|
||||
optional bytes PurchaseId = 3;
|
||||
optional LicenseType Type = 4;
|
||||
optional uint32 Version = 5;
|
||||
optional bytes ProviderSessionToken = 6;
|
||||
}
|
||||
|
||||
|
||||
message License {
|
||||
message Policy {
|
||||
optional bool CanPlay = 1; // changed from uint32 to bool
|
||||
optional bool CanPersist = 2;
|
||||
optional bool CanRenew = 3;
|
||||
optional uint32 RentalDurationSeconds = 4;
|
||||
optional uint32 PlaybackDurationSeconds = 5;
|
||||
optional uint32 LicenseDurationSeconds = 6;
|
||||
optional uint32 RenewalRecoveryDurationSeconds = 7;
|
||||
optional string RenewalServerUrl = 8;
|
||||
optional uint32 RenewalDelaySeconds = 9;
|
||||
optional uint32 RenewalRetryIntervalSeconds = 10;
|
||||
optional bool RenewWithUsage = 11; // was uint32
|
||||
}
|
||||
message KeyContainer {
|
||||
enum KeyType {
|
||||
SIGNING = 1;
|
||||
CONTENT = 2;
|
||||
KEY_CONTROL = 3;
|
||||
OPERATOR_SESSION = 4;
|
||||
}
|
||||
enum SecurityLevel {
|
||||
SW_SECURE_CRYPTO = 1;
|
||||
SW_SECURE_DECODE = 2;
|
||||
HW_SECURE_CRYPTO = 3;
|
||||
HW_SECURE_DECODE = 4;
|
||||
HW_SECURE_ALL = 5;
|
||||
}
|
||||
message OutputProtection {
|
||||
enum CGMS {
|
||||
COPY_FREE = 0;
|
||||
COPY_ONCE = 2;
|
||||
COPY_NEVER = 3;
|
||||
CGMS_NONE = 0x2A; // PC default!
|
||||
}
|
||||
optional ClientIdentification.ClientCapabilities.HdcpVersion Hdcp = 1; // it's most likely a copy of Hdcp version available here, but compiler optimized it away
|
||||
optional CGMS CgmsFlags = 2;
|
||||
}
|
||||
message KeyControl {
|
||||
required bytes KeyControlBlock = 1; // what is this?
|
||||
required bytes Iv = 2;
|
||||
}
|
||||
message OperatorSessionKeyPermissions {
|
||||
optional uint32 AllowEncrypt = 1;
|
||||
optional uint32 AllowDecrypt = 2;
|
||||
optional uint32 AllowSign = 3;
|
||||
optional uint32 AllowSignatureVerify = 4;
|
||||
}
|
||||
message VideoResolutionConstraint {
|
||||
optional uint32 MinResolutionPixels = 1;
|
||||
optional uint32 MaxResolutionPixels = 2;
|
||||
optional OutputProtection RequiredProtection = 3;
|
||||
}
|
||||
optional bytes Id = 1;
|
||||
optional bytes Iv = 2;
|
||||
optional bytes Key = 3;
|
||||
optional KeyType Type = 4;
|
||||
optional SecurityLevel Level = 5;
|
||||
optional OutputProtection RequiredProtection = 6;
|
||||
optional OutputProtection RequestedProtection = 7;
|
||||
optional KeyControl _KeyControl = 8; // duped names, etc
|
||||
optional OperatorSessionKeyPermissions _OperatorSessionKeyPermissions = 9; // duped names, etc
|
||||
repeated VideoResolutionConstraint VideoResolutionConstraints = 10;
|
||||
}
|
||||
optional LicenseIdentification Id = 1;
|
||||
optional Policy _Policy = 2; // duped names, etc
|
||||
repeated KeyContainer Key = 3;
|
||||
optional uint32 LicenseStartTime = 4;
|
||||
optional uint32 RemoteAttestationVerified = 5; // bool?
|
||||
optional bytes ProviderClientToken = 6;
|
||||
// there might be more, check with newer versions (I see field 7-8 in a lic)
|
||||
// this appeared in latest x86:
|
||||
optional uint32 ProtectionScheme = 7; // type unconfirmed fully, but it's likely as WidevineCencHeader describesit (fourcc)
|
||||
}
|
||||
|
||||
message LicenseError {
|
||||
enum Error {
|
||||
INVALID_DEVICE_CERTIFICATE = 1;
|
||||
REVOKED_DEVICE_CERTIFICATE = 2;
|
||||
SERVICE_UNAVAILABLE = 3;
|
||||
}
|
||||
//LicenseRequest.RequestType ErrorCode; // clang mismatch
|
||||
optional Error ErrorCode = 1;
|
||||
}
|
||||
|
||||
message LicenseRequest {
|
||||
message ContentIdentification {
|
||||
message CENC {
|
||||
//optional bytes Pssh = 1; // the client's definition is opaque, it doesn't care about the contents, but the PSSH has a clear definition that is understood and requested by the server, thus I'll replace it with:
|
||||
optional WidevineCencHeader Pssh = 1;
|
||||
optional LicenseType LicenseType = 2; // unfortunately the LicenseType symbols are not present, acceptable value seems to only be 1 (is this persist/don't persist? look into it!)
|
||||
optional bytes RequestId = 3;
|
||||
}
|
||||
message WebM {
|
||||
optional bytes Header = 1; // identical to CENC, aside from PSSH and the parent field number used
|
||||
optional LicenseType LicenseType = 2;
|
||||
optional bytes RequestId = 3;
|
||||
}
|
||||
message ExistingLicense {
|
||||
optional LicenseIdentification LicenseId = 1;
|
||||
optional uint32 SecondsSinceStarted = 2;
|
||||
optional uint32 SecondsSinceLastPlayed = 3;
|
||||
optional bytes SessionUsageTableEntry = 4; // interesting! try to figure out the connection between the usage table blob and KCB!
|
||||
}
|
||||
optional CENC CencId = 1;
|
||||
optional WebM WebmId = 2;
|
||||
optional ExistingLicense License = 3;
|
||||
}
|
||||
enum RequestType {
|
||||
NEW = 1;
|
||||
RENEWAL = 2;
|
||||
RELEASE = 3;
|
||||
}
|
||||
optional ClientIdentification ClientId = 1;
|
||||
optional ContentIdentification ContentId = 2;
|
||||
optional RequestType Type = 3;
|
||||
optional uint32 RequestTime = 4;
|
||||
optional bytes KeyControlNonceDeprecated = 5;
|
||||
optional ProtocolVersion ProtocolVersion = 6; // lacking symbols for this
|
||||
optional uint32 KeyControlNonce = 7;
|
||||
optional EncryptedClientIdentification EncryptedClientId = 8;
|
||||
}
|
||||
|
||||
// raw pssh hack
|
||||
message LicenseRequestRaw {
|
||||
message ContentIdentification {
|
||||
message CENC {
|
||||
optional bytes Pssh = 1; // the client's definition is opaque, it doesn't care about the contents, but the PSSH has a clear definition that is understood and requested by the server, thus I'll replace it with:
|
||||
//optional WidevineCencHeader Pssh = 1;
|
||||
optional LicenseType LicenseType = 2; // unfortunately the LicenseType symbols are not present, acceptable value seems to only be 1 (is this persist/don't persist? look into it!)
|
||||
optional bytes RequestId = 3;
|
||||
}
|
||||
message WebM {
|
||||
optional bytes Header = 1; // identical to CENC, aside from PSSH and the parent field number used
|
||||
optional LicenseType LicenseType = 2;
|
||||
optional bytes RequestId = 3;
|
||||
}
|
||||
message ExistingLicense {
|
||||
optional LicenseIdentification LicenseId = 1;
|
||||
optional uint32 SecondsSinceStarted = 2;
|
||||
optional uint32 SecondsSinceLastPlayed = 3;
|
||||
optional bytes SessionUsageTableEntry = 4; // interesting! try to figure out the connection between the usage table blob and KCB!
|
||||
}
|
||||
optional CENC CencId = 1;
|
||||
optional WebM WebmId = 2;
|
||||
optional ExistingLicense License = 3;
|
||||
}
|
||||
enum RequestType {
|
||||
NEW = 1;
|
||||
RENEWAL = 2;
|
||||
RELEASE = 3;
|
||||
}
|
||||
optional ClientIdentification ClientId = 1;
|
||||
optional ContentIdentification ContentId = 2;
|
||||
optional RequestType Type = 3;
|
||||
optional uint32 RequestTime = 4;
|
||||
optional bytes KeyControlNonceDeprecated = 5;
|
||||
optional ProtocolVersion ProtocolVersion = 6; // lacking symbols for this
|
||||
optional uint32 KeyControlNonce = 7;
|
||||
optional EncryptedClientIdentification EncryptedClientId = 8;
|
||||
}
|
||||
|
||||
|
||||
message ProvisionedDeviceInfo {
|
||||
enum WvSecurityLevel {
|
||||
LEVEL_UNSPECIFIED = 0;
|
||||
LEVEL_1 = 1;
|
||||
LEVEL_2 = 2;
|
||||
LEVEL_3 = 3;
|
||||
}
|
||||
optional uint32 SystemId = 1;
|
||||
optional string Soc = 2;
|
||||
optional string Manufacturer = 3;
|
||||
optional string Model = 4;
|
||||
optional string DeviceType = 5;
|
||||
optional uint32 ModelYear = 6;
|
||||
optional WvSecurityLevel SecurityLevel = 7;
|
||||
optional uint32 TestDevice = 8; // bool?
|
||||
}
|
||||
|
||||
|
||||
// todo: fill
|
||||
message ProvisioningOptions {
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message ProvisioningRequest {
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message ProvisioningResponse {
|
||||
}
|
||||
|
||||
message RemoteAttestation {
|
||||
optional EncryptedClientIdentification Certificate = 1;
|
||||
optional string Salt = 2;
|
||||
optional string Signature = 3;
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message SessionInit {
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message SessionState {
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message SignedCertificateStatusList {
|
||||
}
|
||||
|
||||
message SignedDeviceCertificate {
|
||||
|
||||
//optional bytes DeviceCertificate = 1; // again, they use a buffer where it's supposed to be a message, so we'll replace it with what it really is:
|
||||
optional DeviceCertificate _DeviceCertificate = 1; // how should we deal with duped names? will have to look at proto docs later
|
||||
optional bytes Signature = 2;
|
||||
optional SignedDeviceCertificate Signer = 3;
|
||||
}
|
||||
|
||||
|
||||
// todo: fill
|
||||
message SignedProvisioningMessage {
|
||||
}
|
||||
|
||||
// the root of all messages, from either server or client
|
||||
message SignedMessage {
|
||||
enum MessageType {
|
||||
LICENSE_REQUEST = 1;
|
||||
LICENSE = 2;
|
||||
ERROR_RESPONSE = 3;
|
||||
SERVICE_CERTIFICATE_REQUEST = 4;
|
||||
SERVICE_CERTIFICATE = 5;
|
||||
}
|
||||
optional MessageType Type = 1; // has in incorrect overlap with License_KeyContainer_SecurityLevel
|
||||
optional bytes Msg = 2; // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
|
||||
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
|
||||
optional bytes Signature = 3; // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
|
||||
optional bytes SessionKey = 4; // often RSA wrapped for licenses
|
||||
optional RemoteAttestation RemoteAttestation = 5;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// This message is copied from google's docs, not reversed:
|
||||
message WidevineCencHeader {
|
||||
enum Algorithm {
|
||||
UNENCRYPTED = 0;
|
||||
AESCTR = 1;
|
||||
};
|
||||
optional Algorithm algorithm = 1;
|
||||
repeated bytes key_id = 2;
|
||||
|
||||
// Content provider name.
|
||||
optional string provider = 3;
|
||||
|
||||
// A content identifier, specified by content provider.
|
||||
optional bytes content_id = 4;
|
||||
|
||||
// Track type. Acceptable values are SD, HD and AUDIO. Used to
|
||||
// differentiate content keys used by an asset.
|
||||
optional string track_type_deprecated = 5;
|
||||
|
||||
// The name of a registered policy to be used for this asset.
|
||||
optional string policy = 6;
|
||||
|
||||
// Crypto period index, for media using key rotation.
|
||||
optional uint32 crypto_period_index = 7;
|
||||
|
||||
// Optional protected context for group content. The grouped_license is a
|
||||
// serialized SignedMessage.
|
||||
optional bytes grouped_license = 8;
|
||||
|
||||
// Protection scheme identifying the encryption algorithm.
|
||||
// Represented as one of the following 4CC values:
|
||||
// 'cenc' (AESCTR), 'cbc1' (AESCBC),
|
||||
// 'cens' (AESCTR subsample), 'cbcs' (AESCBC subsample).
|
||||
optional uint32 protection_scheme = 9;
|
||||
|
||||
// Optional. For media using key rotation, this represents the duration
|
||||
// of each crypto period in seconds.
|
||||
optional uint32 crypto_period_seconds = 10;
|
||||
}
|
||||
|
||||
|
||||
// remove these when using it outside of protoc:
|
||||
|
||||
// from here on, it's just for testing, these messages don't exist in the binaries, I'm adding them to avoid detecting type programmatically
|
||||
message SignedLicenseRequest {
|
||||
enum MessageType {
|
||||
LICENSE_REQUEST = 1;
|
||||
LICENSE = 2;
|
||||
ERROR_RESPONSE = 3;
|
||||
SERVICE_CERTIFICATE_REQUEST = 4;
|
||||
SERVICE_CERTIFICATE = 5;
|
||||
}
|
||||
optional MessageType Type = 1; // has in incorrect overlap with License_KeyContainer_SecurityLevel
|
||||
optional LicenseRequest Msg = 2; // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
|
||||
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
|
||||
optional bytes Signature = 3; // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
|
||||
optional bytes SessionKey = 4; // often RSA wrapped for licenses
|
||||
optional RemoteAttestation RemoteAttestation = 5;
|
||||
}
|
||||
|
||||
// hack
|
||||
message SignedLicenseRequestRaw {
|
||||
enum MessageType {
|
||||
LICENSE_REQUEST = 1;
|
||||
LICENSE = 2;
|
||||
ERROR_RESPONSE = 3;
|
||||
SERVICE_CERTIFICATE_REQUEST = 4;
|
||||
SERVICE_CERTIFICATE = 5;
|
||||
}
|
||||
optional MessageType Type = 1; // has in incorrect overlap with License_KeyContainer_SecurityLevel
|
||||
optional LicenseRequestRaw Msg = 2; // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
|
||||
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
|
||||
optional bytes Signature = 3; // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
|
||||
optional bytes SessionKey = 4; // often RSA wrapped for licenses
|
||||
optional RemoteAttestation RemoteAttestation = 5;
|
||||
}
|
||||
|
||||
|
||||
message SignedLicense {
|
||||
enum MessageType {
|
||||
LICENSE_REQUEST = 1;
|
||||
LICENSE = 2;
|
||||
ERROR_RESPONSE = 3;
|
||||
SERVICE_CERTIFICATE_REQUEST = 4;
|
||||
SERVICE_CERTIFICATE = 5;
|
||||
}
|
||||
optional MessageType Type = 1; // has in incorrect overlap with License_KeyContainer_SecurityLevel
|
||||
optional License Msg = 2; // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
|
||||
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
|
||||
optional bytes Signature = 3; // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
|
||||
optional bytes SessionKey = 4; // often RSA wrapped for licenses
|
||||
optional RemoteAttestation RemoteAttestation = 5;
|
||||
}
|
||||
|
||||
message SignedServiceCertificate {
|
||||
enum MessageType {
|
||||
LICENSE_REQUEST = 1;
|
||||
LICENSE = 2;
|
||||
ERROR_RESPONSE = 3;
|
||||
SERVICE_CERTIFICATE_REQUEST = 4;
|
||||
SERVICE_CERTIFICATE = 5;
|
||||
}
|
||||
optional MessageType Type = 1; // has in incorrect overlap with License_KeyContainer_SecurityLevel
|
||||
optional SignedDeviceCertificate Msg = 2; // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
|
||||
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
|
||||
optional bytes Signature = 3; // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
|
||||
optional bytes SessionKey = 4; // often RSA wrapped for licenses
|
||||
optional RemoteAttestation RemoteAttestation = 5;
|
||||
}
|
||||
|
||||
//vmp support
|
||||
message FileHashes {
|
||||
message Signature {
|
||||
optional string filename = 1;
|
||||
optional bool test_signing = 2; //0 - release, 1 - testing
|
||||
optional bytes SHA512Hash = 3;
|
||||
optional bool main_exe = 4; //0 for dlls, 1 for exe, this is field 3 in file
|
||||
optional bytes signature = 5;
|
||||
}
|
||||
optional bytes signer = 1;
|
||||
repeated Signature signatures = 2;
|
||||
}
|
3324
pywidevine/cdm/formats/wv_proto2_pb2.py
Normal file
3324
pywidevine/cdm/formats/wv_proto2_pb2.py
Normal file
File diff suppressed because one or more lines are too long
389
pywidevine/cdm/formats/wv_proto3.proto
Normal file
389
pywidevine/cdm/formats/wv_proto3.proto
Normal file
@ -0,0 +1,389 @@
|
||||
// beware proto3 won't show missing fields it seems, need to change to "proto2" and add "optional" before every field, and remove all the dummy enum members I added:
|
||||
syntax = "proto3";
|
||||
|
||||
// from x86 (partial), most of it from the ARM version:
|
||||
message ClientIdentification {
|
||||
enum TokenType {
|
||||
KEYBOX = 0;
|
||||
DEVICE_CERTIFICATE = 1;
|
||||
REMOTE_ATTESTATION_CERTIFICATE = 2;
|
||||
}
|
||||
message NameValue {
|
||||
string Name = 1;
|
||||
string Value = 2;
|
||||
}
|
||||
message ClientCapabilities {
|
||||
enum HdcpVersion {
|
||||
HDCP_NONE = 0;
|
||||
HDCP_V1 = 1;
|
||||
HDCP_V2 = 2;
|
||||
HDCP_V2_1 = 3;
|
||||
HDCP_V2_2 = 4;
|
||||
}
|
||||
uint32 ClientToken = 1;
|
||||
uint32 SessionToken = 2;
|
||||
uint32 VideoResolutionConstraints = 3;
|
||||
HdcpVersion MaxHdcpVersion = 4;
|
||||
uint32 OemCryptoApiVersion = 5;
|
||||
}
|
||||
TokenType Type = 1;
|
||||
//bytes Token = 2; // by default the client treats this as blob, but it's usually a DeviceCertificate, so for usefulness sake, I'm replacing it with this one:
|
||||
SignedDeviceCertificate Token = 2;
|
||||
repeated NameValue ClientInfo = 3;
|
||||
bytes ProviderClientToken = 4;
|
||||
uint32 LicenseCounter = 5;
|
||||
ClientCapabilities _ClientCapabilities = 6; // how should we deal with duped names? will have to look at proto docs later
|
||||
}
|
||||
|
||||
message DeviceCertificate {
|
||||
enum CertificateType {
|
||||
ROOT = 0;
|
||||
INTERMEDIATE = 1;
|
||||
USER_DEVICE = 2;
|
||||
SERVICE = 3;
|
||||
}
|
||||
//ProvisionedDeviceInfo.WvSecurityLevel Type = 1; // is this how one is supposed to call it? (it's an enum) there might be a bug here, with CertificateType getting confused with WvSecurityLevel, for now renaming it (verify against other binaries)
|
||||
CertificateType Type = 1;
|
||||
bytes SerialNumber = 2;
|
||||
uint32 CreationTimeSeconds = 3;
|
||||
bytes PublicKey = 4;
|
||||
uint32 SystemId = 5;
|
||||
uint32 TestDeviceDeprecated = 6; // is it bool or int?
|
||||
bytes ServiceId = 7; // service URL for service certificates
|
||||
}
|
||||
|
||||
// missing some references,
|
||||
message DeviceCertificateStatus {
|
||||
enum CertificateStatus {
|
||||
VALID = 0;
|
||||
REVOKED = 1;
|
||||
}
|
||||
bytes SerialNumber = 1;
|
||||
CertificateStatus Status = 2;
|
||||
ProvisionedDeviceInfo DeviceInfo = 4; // where is 3? is it deprecated?
|
||||
}
|
||||
|
||||
message DeviceCertificateStatusList {
|
||||
uint32 CreationTimeSeconds = 1;
|
||||
repeated DeviceCertificateStatus CertificateStatus = 2;
|
||||
}
|
||||
|
||||
message EncryptedClientIdentification {
|
||||
string ServiceId = 1;
|
||||
bytes ServiceCertificateSerialNumber = 2;
|
||||
bytes EncryptedClientId = 3;
|
||||
bytes EncryptedClientIdIv = 4;
|
||||
bytes EncryptedPrivacyKey = 5;
|
||||
}
|
||||
|
||||
// todo: fill (for this top-level type, it might be impossible/difficult)
|
||||
enum LicenseType {
|
||||
ZERO = 0;
|
||||
DEFAULT = 1; // do not know what this is either, but should be 1; on recent versions may go up to 3 (latest x86)
|
||||
}
|
||||
|
||||
// todo: fill (for this top-level type, it might be impossible/difficult)
|
||||
// this is just a guess because these globals got lost, but really, do we need more?
|
||||
enum ProtocolVersion {
|
||||
DUMMY = 0;
|
||||
CURRENT = 21; // don't have symbols for this
|
||||
}
|
||||
|
||||
|
||||
message LicenseIdentification {
|
||||
bytes RequestId = 1;
|
||||
bytes SessionId = 2;
|
||||
bytes PurchaseId = 3;
|
||||
LicenseType Type = 4;
|
||||
uint32 Version = 5;
|
||||
bytes ProviderSessionToken = 6;
|
||||
}
|
||||
|
||||
|
||||
message License {
|
||||
message Policy {
|
||||
uint32 CanPlay = 1;
|
||||
uint32 CanPersist = 2;
|
||||
uint32 CanRenew = 3;
|
||||
uint32 RentalDurationSeconds = 4;
|
||||
uint32 PlaybackDurationSeconds = 5;
|
||||
uint32 LicenseDurationSeconds = 6;
|
||||
uint32 RenewalRecoveryDurationSeconds = 7;
|
||||
string RenewalServerUrl = 8;
|
||||
uint32 RenewalDelaySeconds = 9;
|
||||
uint32 RenewalRetryIntervalSeconds = 10;
|
||||
uint32 RenewWithUsage = 11;
|
||||
uint32 UnknownPolicy12 = 12;
|
||||
}
|
||||
message KeyContainer {
|
||||
enum KeyType {
|
||||
_NOKEYTYPE = 0; // dummy, added to satisfy proto3, not present in original
|
||||
SIGNING = 1;
|
||||
CONTENT = 2;
|
||||
KEY_CONTROL = 3;
|
||||
OPERATOR_SESSION = 4;
|
||||
}
|
||||
enum SecurityLevel {
|
||||
_NOSECLEVEL = 0; // dummy, added to satisfy proto3, not present in original
|
||||
SW_SECURE_CRYPTO = 1;
|
||||
SW_SECURE_DECODE = 2;
|
||||
HW_SECURE_CRYPTO = 3;
|
||||
HW_SECURE_DECODE = 4;
|
||||
HW_SECURE_ALL = 5;
|
||||
}
|
||||
message OutputProtection {
|
||||
enum CGMS {
|
||||
COPY_FREE = 0;
|
||||
COPY_ONCE = 2;
|
||||
COPY_NEVER = 3;
|
||||
CGMS_NONE = 0x2A; // PC default!
|
||||
}
|
||||
ClientIdentification.ClientCapabilities.HdcpVersion Hdcp = 1; // it's most likely a copy of Hdcp version available here, but compiler optimized it away
|
||||
CGMS CgmsFlags = 2;
|
||||
}
|
||||
message KeyControl {
|
||||
bytes KeyControlBlock = 1; // what is this?
|
||||
bytes Iv = 2;
|
||||
}
|
||||
message OperatorSessionKeyPermissions {
|
||||
uint32 AllowEncrypt = 1;
|
||||
uint32 AllowDecrypt = 2;
|
||||
uint32 AllowSign = 3;
|
||||
uint32 AllowSignatureVerify = 4;
|
||||
}
|
||||
message VideoResolutionConstraint {
|
||||
uint32 MinResolutionPixels = 1;
|
||||
uint32 MaxResolutionPixels = 2;
|
||||
OutputProtection RequiredProtection = 3;
|
||||
}
|
||||
bytes Id = 1;
|
||||
bytes Iv = 2;
|
||||
bytes Key = 3;
|
||||
KeyType Type = 4;
|
||||
SecurityLevel Level = 5;
|
||||
OutputProtection RequiredProtection = 6;
|
||||
OutputProtection RequestedProtection = 7;
|
||||
KeyControl _KeyControl = 8; // duped names, etc
|
||||
OperatorSessionKeyPermissions _OperatorSessionKeyPermissions = 9; // duped names, etc
|
||||
repeated VideoResolutionConstraint VideoResolutionConstraints = 10;
|
||||
}
|
||||
LicenseIdentification Id = 1;
|
||||
Policy _Policy = 2; // duped names, etc
|
||||
repeated KeyContainer Key = 3;
|
||||
uint32 LicenseStartTime = 4;
|
||||
uint32 RemoteAttestationVerified = 5; // bool?
|
||||
bytes ProviderClientToken = 6;
|
||||
// there might be more, check with newer versions (I see field 7-8 in a lic)
|
||||
// this appeared in latest x86:
|
||||
uint32 ProtectionScheme = 7; // type unconfirmed fully, but it's likely as WidevineCencHeader describesit (fourcc)
|
||||
bytes UnknownHdcpDataField = 8;
|
||||
}
|
||||
|
||||
message LicenseError {
|
||||
enum Error {
|
||||
DUMMY_NO_ERROR = 0; // dummy, added to satisfy proto3
|
||||
INVALID_DEVICE_CERTIFICATE = 1;
|
||||
REVOKED_DEVICE_CERTIFICATE = 2;
|
||||
SERVICE_UNAVAILABLE = 3;
|
||||
}
|
||||
//LicenseRequest.RequestType ErrorCode; // clang mismatch
|
||||
Error ErrorCode = 1;
|
||||
}
|
||||
|
||||
message LicenseRequest {
|
||||
message ContentIdentification {
|
||||
message CENC {
|
||||
// bytes Pssh = 1; // the client's definition is opaque, it doesn't care about the contents, but the PSSH has a clear definition that is understood and requested by the server, thus I'll replace it with:
|
||||
WidevineCencHeader Pssh = 1;
|
||||
LicenseType LicenseType = 2; // unfortunately the LicenseType symbols are not present, acceptable value seems to only be 1
|
||||
bytes RequestId = 3;
|
||||
}
|
||||
message WebM {
|
||||
bytes Header = 1; // identical to CENC, aside from PSSH and the parent field number used
|
||||
LicenseType LicenseType = 2;
|
||||
bytes RequestId = 3;
|
||||
}
|
||||
message ExistingLicense {
|
||||
LicenseIdentification LicenseId = 1;
|
||||
uint32 SecondsSinceStarted = 2;
|
||||
uint32 SecondsSinceLastPlayed = 3;
|
||||
bytes SessionUsageTableEntry = 4;
|
||||
}
|
||||
CENC CencId = 1;
|
||||
WebM WebmId = 2;
|
||||
ExistingLicense License = 3;
|
||||
}
|
||||
enum RequestType {
|
||||
DUMMY_REQ_TYPE = 0; // dummy, added to satisfy proto3
|
||||
NEW = 1;
|
||||
RENEWAL = 2;
|
||||
RELEASE = 3;
|
||||
}
|
||||
ClientIdentification ClientId = 1;
|
||||
ContentIdentification ContentId = 2;
|
||||
RequestType Type = 3;
|
||||
uint32 RequestTime = 4;
|
||||
bytes KeyControlNonceDeprecated = 5;
|
||||
ProtocolVersion ProtocolVersion = 6; // lacking symbols for this
|
||||
uint32 KeyControlNonce = 7;
|
||||
EncryptedClientIdentification EncryptedClientId = 8;
|
||||
}
|
||||
|
||||
message ProvisionedDeviceInfo {
|
||||
enum WvSecurityLevel {
|
||||
LEVEL_UNSPECIFIED = 0;
|
||||
LEVEL_1 = 1;
|
||||
LEVEL_2 = 2;
|
||||
LEVEL_3 = 3;
|
||||
}
|
||||
uint32 SystemId = 1;
|
||||
string Soc = 2;
|
||||
string Manufacturer = 3;
|
||||
string Model = 4;
|
||||
string DeviceType = 5;
|
||||
uint32 ModelYear = 6;
|
||||
WvSecurityLevel SecurityLevel = 7;
|
||||
uint32 TestDevice = 8; // bool?
|
||||
}
|
||||
|
||||
|
||||
// todo: fill
|
||||
message ProvisioningOptions {
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message ProvisioningRequest {
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message ProvisioningResponse {
|
||||
}
|
||||
|
||||
message RemoteAttestation {
|
||||
EncryptedClientIdentification Certificate = 1;
|
||||
string Salt = 2;
|
||||
string Signature = 3;
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message SessionInit {
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message SessionState {
|
||||
}
|
||||
|
||||
// todo: fill
|
||||
message SignedCertificateStatusList {
|
||||
}
|
||||
|
||||
message SignedDeviceCertificate {
|
||||
|
||||
//bytes DeviceCertificate = 1; // again, they use a buffer where it's supposed to be a message, so we'll replace it with what it really is:
|
||||
DeviceCertificate _DeviceCertificate = 1; // how should we deal with duped names? will have to look at proto docs later
|
||||
bytes Signature = 2;
|
||||
SignedDeviceCertificate Signer = 3;
|
||||
}
|
||||
|
||||
|
||||
// todo: fill
|
||||
message SignedProvisioningMessage {
|
||||
}
|
||||
|
||||
// the root of all messages, from either server or client
|
||||
message SignedMessage {
|
||||
enum MessageType {
|
||||
DUMMY_MSG_TYPE = 0; // dummy, added to satisfy proto3
|
||||
LICENSE_REQUEST = 1;
|
||||
LICENSE = 2;
|
||||
ERROR_RESPONSE = 3;
|
||||
SERVICE_CERTIFICATE_REQUEST = 4;
|
||||
SERVICE_CERTIFICATE = 5;
|
||||
}
|
||||
MessageType Type = 1; // has in incorrect overlap with License_KeyContainer_SecurityLevel
|
||||
bytes Msg = 2; // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
|
||||
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
|
||||
bytes Signature = 3; // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
|
||||
bytes SessionKey = 4; // often RSA wrapped for licenses
|
||||
RemoteAttestation RemoteAttestation = 5;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// This message is copied from google's docs, not reversed:
|
||||
message WidevineCencHeader {
|
||||
enum Algorithm {
|
||||
UNENCRYPTED = 0;
|
||||
AESCTR = 1;
|
||||
};
|
||||
Algorithm algorithm = 1;
|
||||
repeated bytes key_id = 2;
|
||||
|
||||
// Content provider name.
|
||||
string provider = 3;
|
||||
|
||||
// A content identifier, specified by content provider.
|
||||
bytes content_id = 4;
|
||||
|
||||
// Track type. Acceptable values are SD, HD and AUDIO. Used to
|
||||
// differentiate content keys used by an asset.
|
||||
string track_type_deprecated = 5;
|
||||
|
||||
// The name of a registered policy to be used for this asset.
|
||||
string policy = 6;
|
||||
|
||||
// Crypto period index, for media using key rotation.
|
||||
uint32 crypto_period_index = 7;
|
||||
|
||||
// Optional protected context for group content. The grouped_license is a
|
||||
// serialized SignedMessage.
|
||||
bytes grouped_license = 8;
|
||||
|
||||
// Protection scheme identifying the encryption algorithm.
|
||||
// Represented as one of the following 4CC values:
|
||||
// 'cenc' (AESCTR), 'cbc1' (AESCBC),
|
||||
// 'cens' (AESCTR subsample), 'cbcs' (AESCBC subsample).
|
||||
uint32 protection_scheme = 9;
|
||||
|
||||
// Optional. For media using key rotation, this represents the duration
|
||||
// of each crypto period in seconds.
|
||||
uint32 crypto_period_seconds = 10;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// from here on, it's just for testing, these messages don't exist in the binaries, I'm adding them to avoid detecting type programmatically
|
||||
message SignedLicenseRequest {
|
||||
enum MessageType {
|
||||
DUMMY_MSG_TYPE = 0; // dummy, added to satisfy proto3
|
||||
LICENSE_REQUEST = 1;
|
||||
LICENSE = 2;
|
||||
ERROR_RESPONSE = 3;
|
||||
SERVICE_CERTIFICATE_REQUEST = 4;
|
||||
SERVICE_CERTIFICATE = 5;
|
||||
}
|
||||
MessageType Type = 1; // has in incorrect overlap with License_KeyContainer_SecurityLevel
|
||||
LicenseRequest Msg = 2; // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
|
||||
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
|
||||
bytes Signature = 3; // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
|
||||
bytes SessionKey = 4; // often RSA wrapped for licenses
|
||||
RemoteAttestation RemoteAttestation = 5;
|
||||
}
|
||||
|
||||
message SignedLicense {
|
||||
enum MessageType {
|
||||
DUMMY_MSG_TYPE = 0; // dummy, added to satisfy proto3
|
||||
LICENSE_REQUEST = 1;
|
||||
LICENSE = 2;
|
||||
ERROR_RESPONSE = 3;
|
||||
SERVICE_CERTIFICATE_REQUEST = 4;
|
||||
SERVICE_CERTIFICATE = 5;
|
||||
}
|
||||
MessageType Type = 1; // has in incorrect overlap with License_KeyContainer_SecurityLevel
|
||||
License Msg = 2; // this has to be casted dynamically, to LicenseRequest, License or LicenseError (? unconfirmed), for Request, no other fields but Type need to be present
|
||||
// for SERVICE_CERTIFICATE, only Type and Msg are present, and it's just a DeviceCertificate with CertificateType set to SERVICE
|
||||
bytes Signature = 3; // might be different type of signatures (ex. RSA vs AES CMAC(??), unconfirmed for now)
|
||||
bytes SessionKey = 4; // often RSA wrapped for licenses
|
||||
RemoteAttestation RemoteAttestation = 5;
|
||||
}
|
2686
pywidevine/cdm/formats/wv_proto3_pb2.py
Normal file
2686
pywidevine/cdm/formats/wv_proto3_pb2.py
Normal file
File diff suppressed because one or more lines are too long
14
pywidevine/cdm/key.py
Normal file
14
pywidevine/cdm/key.py
Normal file
@ -0,0 +1,14 @@
|
||||
import binascii
|
||||
|
||||
class Key:
|
||||
def __init__(self, kid, type, key, permissions=[]):
|
||||
self.kid = kid
|
||||
self.type = type
|
||||
self.key = key
|
||||
self.permissions = permissions
|
||||
|
||||
def __repr__(self):
|
||||
if self.type == "OPERATOR_SESSION":
|
||||
return "key(kid={}, type={}, key={}, permissions={})".format(self.kid, self.type, binascii.hexlify(self.key), self.permissions)
|
||||
else:
|
||||
return "key(kid={}, type={}, key={})".format(self.kid, self.type, binascii.hexlify(self.key))
|
18
pywidevine/cdm/session.py
Normal file
18
pywidevine/cdm/session.py
Normal file
@ -0,0 +1,18 @@
|
||||
class Session:
|
||||
def __init__(self, session_id, init_data, device_config, offline):
|
||||
self.session_id = session_id
|
||||
self.init_data = init_data
|
||||
self.offline = offline
|
||||
self.device_config = device_config
|
||||
self.device_key = None
|
||||
self.session_key = None
|
||||
self.derived_keys = {
|
||||
'enc': None,
|
||||
'auth_1': None,
|
||||
'auth_2': None
|
||||
}
|
||||
self.license_request = None
|
||||
self.license = None
|
||||
self.service_certificate = None
|
||||
self.privacy_mode = False
|
||||
self.keys = []
|
102
pywidevine/cdm/vmp.py
Normal file
102
pywidevine/cdm/vmp.py
Normal file
@ -0,0 +1,102 @@
|
||||
try:
|
||||
from google.protobuf.internal.decoder import _DecodeVarint as _di # this was tested to work with protobuf 3, but it's an internal API (any varint decoder might work)
|
||||
except ImportError:
|
||||
# this is generic and does not depend on pb internals, however it will decode "larger" possible numbers than pb decoder which has them fixed
|
||||
def LEB128_decode(buffer, pos, limit = 64):
|
||||
result = 0
|
||||
shift = 0
|
||||
while True:
|
||||
b = buffer[pos]
|
||||
pos += 1
|
||||
result |= ((b & 0x7F) << shift)
|
||||
if not (b & 0x80):
|
||||
return (result, pos)
|
||||
shift += 7
|
||||
if shift > limit:
|
||||
raise Exception("integer too large, shift: {}".format(shift))
|
||||
_di = LEB128_decode
|
||||
|
||||
|
||||
class FromFileMixin:
|
||||
@classmethod
|
||||
def from_file(cls, filename):
|
||||
"""Load given a filename"""
|
||||
with open(filename,"rb") as f:
|
||||
return cls(f.read())
|
||||
|
||||
# the signatures use a format internally similar to
|
||||
# protobuf's encoding, but without wire types
|
||||
class VariableReader(FromFileMixin):
|
||||
"""Protobuf-like encoding reader"""
|
||||
|
||||
def __init__(self, buf):
|
||||
self.buf = buf
|
||||
self.pos = 0
|
||||
self.size = len(buf)
|
||||
|
||||
def read_int(self):
|
||||
"""Read a variable length integer"""
|
||||
# _DecodeVarint will take care of out of range errors
|
||||
(val, nextpos) = _di(self.buf, self.pos)
|
||||
self.pos = nextpos
|
||||
return val
|
||||
|
||||
def read_bytes_raw(self, size):
|
||||
"""Read size bytes"""
|
||||
b = self.buf[self.pos:self.pos+size]
|
||||
self.pos += size
|
||||
return b
|
||||
|
||||
def read_bytes(self):
|
||||
"""Read a bytes object"""
|
||||
size = self.read_int()
|
||||
return self.read_bytes_raw(size)
|
||||
|
||||
def is_end(self):
|
||||
return (self.size == self.pos)
|
||||
|
||||
|
||||
class TaggedReader(VariableReader):
|
||||
"""Tagged reader, needed for implementing a WideVine signature reader"""
|
||||
|
||||
def read_tag(self):
|
||||
"""Read a tagged buffer"""
|
||||
return (self.read_int(), self.read_bytes())
|
||||
|
||||
def read_all_tags(self, max_tag=3):
|
||||
tags = {}
|
||||
while (not self.is_end()):
|
||||
(tag, bytes) = self.read_tag()
|
||||
if (tag > max_tag):
|
||||
raise IndexError("tag out of bound: got {}, max {}".format(tag, max_tag))
|
||||
|
||||
tags[tag] = bytes
|
||||
return tags
|
||||
|
||||
class WideVineSignatureReader(FromFileMixin):
|
||||
"""Parses a widevine .sig signature file."""
|
||||
|
||||
SIGNER_TAG = 1
|
||||
SIGNATURE_TAG = 2
|
||||
ISMAINEXE_TAG = 3
|
||||
|
||||
def __init__(self, buf):
|
||||
reader = TaggedReader(buf)
|
||||
self.version = reader.read_int()
|
||||
if (self.version != 0):
|
||||
raise Exception("Unsupported signature format version {}".format(self.version))
|
||||
self.tags = reader.read_all_tags()
|
||||
|
||||
self.signer = self.tags[self.SIGNER_TAG]
|
||||
self.signature = self.tags[self.SIGNATURE_TAG]
|
||||
|
||||
extra = self.tags[self.ISMAINEXE_TAG]
|
||||
if (len(extra) != 1 or (extra[0] > 1)):
|
||||
raise Exception("Unexpected 'ismainexe' field value (not '\\x00' or '\\x01'), please check: {0}".format(extra))
|
||||
|
||||
self.mainexe = bool(extra[0])
|
||||
|
||||
@classmethod
|
||||
def get_tags(cls, filename):
|
||||
"""Return a dictionary of each tag in the signature file"""
|
||||
return cls.from_file(filename).tags
|
BIN
pywidevine/decrypt/__pycache__/wvdecryptcustom.cpython-39.pyc
Normal file
BIN
pywidevine/decrypt/__pycache__/wvdecryptcustom.cpython-39.pyc
Normal file
Binary file not shown.
58
pywidevine/decrypt/wvdecryptcustom.py
Normal file
58
pywidevine/decrypt/wvdecryptcustom.py
Normal file
@ -0,0 +1,58 @@
|
||||
import logging
|
||||
import subprocess
|
||||
import re
|
||||
import base64
|
||||
|
||||
from pywidevine.cdm import cdm, deviceconfig
|
||||
|
||||
class WvDecrypt(object):
|
||||
WV_SYSTEM_ID = [237, 239, 139, 169, 121, 214, 74, 206, 163, 200, 39, 220, 213, 29, 33, 237]
|
||||
def __init__(self, init_data_b64, cert_data_b64, device):
|
||||
self.init_data_b64 = init_data_b64
|
||||
self.cert_data_b64 = cert_data_b64
|
||||
self.device = device
|
||||
|
||||
self.cdm = cdm.Cdm()
|
||||
|
||||
def check_pssh(pssh_b64):
|
||||
pssh = base64.b64decode(pssh_b64)
|
||||
if not pssh[12:28] == bytes(self.WV_SYSTEM_ID):
|
||||
new_pssh = bytearray([0,0,0])
|
||||
new_pssh.append(32+len(pssh))
|
||||
new_pssh[4:] = bytearray(b'pssh')
|
||||
new_pssh[8:] = [0,0,0,0]
|
||||
new_pssh[13:] = self.WV_SYSTEM_ID
|
||||
new_pssh[29:] = [0,0,0,0]
|
||||
new_pssh[31] = len(pssh)
|
||||
new_pssh[32:] = pssh
|
||||
return base64.b64encode(new_pssh)
|
||||
else:
|
||||
return pssh_b64
|
||||
|
||||
self.session = self.cdm.open_session(check_pssh(self.init_data_b64), deviceconfig.DeviceConfig(deviceconfig.device_sony_lvl1))
|
||||
|
||||
if self.cert_data_b64:
|
||||
self.cdm.set_service_certificate(self.session, self.cert_data_b64)
|
||||
|
||||
|
||||
def log_message(self, msg):
|
||||
return "{}".format(msg)
|
||||
|
||||
def start_process(self):
|
||||
keyswvdecrypt=[]
|
||||
try:
|
||||
for key in self.cdm.get_keys(self.session):
|
||||
if key.type == 'CONTENT':
|
||||
keyswvdecrypt.append(self.log_message('{}:{}'.format(key.kid.hex(),key.key.hex())))
|
||||
except Exception:
|
||||
return False, keyswvdecrypt
|
||||
|
||||
return True, keyswvdecrypt
|
||||
|
||||
def get_challenge(self):
|
||||
return self.cdm.get_license_request(self.session)
|
||||
|
||||
def update_license(self, license_b64):
|
||||
self.cdm.provide_license(self.session, license_b64)
|
||||
return True
|
||||
|
25
requirements.txt
Normal file
25
requirements.txt
Normal file
@ -0,0 +1,25 @@
|
||||
bs4
|
||||
colorama
|
||||
wcwidth
|
||||
requests
|
||||
ffmpy
|
||||
inquirer
|
||||
pycountry
|
||||
tqdm
|
||||
future
|
||||
cssutils
|
||||
pycaption
|
||||
pymediainfo
|
||||
isodate
|
||||
untangle
|
||||
tldextract
|
||||
unidecode
|
||||
yarl
|
||||
natsort
|
||||
titlecase
|
||||
prettytable
|
||||
termcolor
|
||||
pproxy
|
||||
pysrt
|
||||
protobuf
|
||||
pycryptodomex
|
BIN
services/__init__.pyc
Normal file
BIN
services/__init__.pyc
Normal file
Binary file not shown.
BIN
services/primevideo.pyc
Normal file
BIN
services/primevideo.pyc
Normal file
Binary file not shown.
BIN
tools/MediaInfo/MediaInfo.exe
Normal file
BIN
tools/MediaInfo/MediaInfo.exe
Normal file
Binary file not shown.
2511
tools/SubtitleEdit/Changelog.txt
Normal file
2511
tools/SubtitleEdit/Changelog.txt
Normal file
File diff suppressed because it is too large
Load Diff
28
tools/SubtitleEdit/Dictionaries/ar_NoBreakAfterList.xml
Normal file
28
tools/SubtitleEdit/Dictionaries/ar_NoBreakAfterList.xml
Normal file
@ -0,0 +1,28 @@
|
||||
<NoBreakAfterList>
|
||||
<Item>أن</Item>
|
||||
<Item>أو</Item>
|
||||
<Item>أي</Item>
|
||||
<Item>أياً</Item>
|
||||
<Item>أيًا</Item>
|
||||
<Item>إلى</Item>
|
||||
<Item>إن</Item>
|
||||
<Item>التي</Item>
|
||||
<Item>الذي</Item>
|
||||
<Item>بين</Item>
|
||||
<Item>ثم</Item>
|
||||
<Item>حتى</Item>
|
||||
<Item>دون</Item>
|
||||
<Item>على</Item>
|
||||
<Item>عما</Item>
|
||||
<Item>عن</Item>
|
||||
<Item>عندما</Item>
|
||||
<Item>في</Item>
|
||||
<Item>لأن</Item>
|
||||
<Item>لكن</Item>
|
||||
<Item>لم</Item>
|
||||
<Item>لن</Item>
|
||||
<Item>مثل</Item>
|
||||
<Item>من</Item>
|
||||
<Item>يا</Item>
|
||||
<Item>مع</Item>
|
||||
</NoBreakAfterList>
|
17
tools/SubtitleEdit/Dictionaries/bg_NoBreakAfterList.xml
Normal file
17
tools/SubtitleEdit/Dictionaries/bg_NoBreakAfterList.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<NoBreakAfterList>
|
||||
<Item>Д-р</Item>
|
||||
<Item>Г-н</Item>
|
||||
<Item>Проф.</Item>
|
||||
<Item>д-р</Item>
|
||||
<Item>г-н</Item>
|
||||
<Item>г-жа</Item>
|
||||
<Item>Г-жа</Item>
|
||||
<Item>г-ца</Item>
|
||||
<Item>Г-ца</Item>
|
||||
<Item>инж.</Item>
|
||||
<Item>Инж.</Item>
|
||||
<Item>Св.</Item>
|
||||
<Item>Н. Св.</Item>
|
||||
<Item>доц.</Item>
|
||||
<Item>Доц.</Item>
|
||||
</NoBreakAfterList>
|
1931
tools/SubtitleEdit/Dictionaries/bos_OCRFixReplaceList.xml
Normal file
1931
tools/SubtitleEdit/Dictionaries/bos_OCRFixReplaceList.xml
Normal file
File diff suppressed because it is too large
Load Diff
160
tools/SubtitleEdit/Dictionaries/da_DK_user.xml
Normal file
160
tools/SubtitleEdit/Dictionaries/da_DK_user.xml
Normal file
@ -0,0 +1,160 @@
|
||||
<words>
|
||||
<word>1/2</word>
|
||||
<word>aflæsningszone</word>
|
||||
<word>afterparty</word>
|
||||
<word>alzheimer</word>
|
||||
<word>analfasen</word>
|
||||
<word>arrangér</word>
|
||||
<word>autocamper</word>
|
||||
<word>babser</word>
|
||||
<word>bananasplit</word>
|
||||
<word>basketballfan</word>
|
||||
<word>beskaffet</word>
|
||||
<word>besnære</word>
|
||||
<word>bestikkes</word>
|
||||
<word>bling</word>
|
||||
<word>bli'r</word>
|
||||
<word>bloggeren</word>
|
||||
<word>bondagehalløj</word>
|
||||
<word>bordtennis</word>
|
||||
<word>brandvarm</word>
|
||||
<word>checke</word>
|
||||
<word>cheerleader</word>
|
||||
<word>cheerleaderne</word>
|
||||
<word>countrystil</word>
|
||||
<word>datede</word>
|
||||
<word>dematerialisatoren</word>
|
||||
<word>dér</word>
|
||||
<word>dérinde</word>
|
||||
<word>dét</word>
|
||||
<word>discokugle</word>
|
||||
<word>dusørjæger</word>
|
||||
<word>dusørjægeren</word>
|
||||
<word>dødstidspunktet</word>
|
||||
<word>dødtravlt</word>
|
||||
<word>ebay</word>
|
||||
<word>ektoplasma</word>
|
||||
<word>escortbureauet</word>
|
||||
<word>fandme</word>
|
||||
<word>fettucini</word>
|
||||
<word>flotteste</word>
|
||||
<word>fluefiske</word>
|
||||
<word>fokusér</word>
|
||||
<word>foretages</word>
|
||||
<word>forkynd</word>
|
||||
<word>færde</word>
|
||||
<word>genfinansiere</word>
|
||||
<word>gennem</word>
|
||||
<word>gladeligt</word>
|
||||
<word>gladere</word>
|
||||
<word>go’e</word>
|
||||
<word>grape</word>
|
||||
<word>grev</word>
|
||||
<word>heroinmisbruger</word>
|
||||
<word>hey</word>
|
||||
<word>hm</word>
|
||||
<word>hmm</word>
|
||||
<word>hos</word>
|
||||
<word>hva</word>
|
||||
<word>hva'</word>
|
||||
<word>håndklædedreng</word>
|
||||
<word>instrumentsamlingen</word>
|
||||
<word>isen</word>
|
||||
<word>ka'</word>
|
||||
<word>kevlar</word>
|
||||
<word>kjortelfolder</word>
|
||||
<word>kl</word>
|
||||
<word>krematoriumet</word>
|
||||
<word>krokettere</word>
|
||||
<word>kunsthåndværksgenstandene</word>
|
||||
<word>kussemagnet</word>
|
||||
<word>kuvøseguf</word>
|
||||
<word>lacrosse</word>
|
||||
<word>lacrossetræning</word>
|
||||
<word>laktosefrit</word>
|
||||
<word>laktoseintolerance</word>
|
||||
<word>laktoseintolerancen</word>
|
||||
<word>laktoseintolerant</word>
|
||||
<word>landmandsdatter</word>
|
||||
<word>legenden</word>
|
||||
<word>lipgloss</word>
|
||||
<word>mademoiselle</word>
|
||||
<word>makeover</word>
|
||||
<word>makeupbillede</word>
|
||||
<word>midlands</word>
|
||||
<word>mindeceremoni</word>
|
||||
<word>mindested</word>
|
||||
<word>mindestedet</word>
|
||||
<word>mindetur</word>
|
||||
<word>mindeturen</word>
|
||||
<word>mint</word>
|
||||
<word>mirakelmedicin</word>
|
||||
<word>misforstået</word>
|
||||
<word>mistænke</word>
|
||||
<word>mmm</word>
|
||||
<word>mr</word>
|
||||
<word>mrs</word>
|
||||
<word>mums</word>
|
||||
<word>napser</word>
|
||||
<word>narhoveder</word>
|
||||
<word>nedbrydes</word>
|
||||
<word>nyvundne</word>
|
||||
<word>nødgeneratoren</word>
|
||||
<word>observant</word>
|
||||
<word>orkestret</word>
|
||||
<word>oscarstatuette</word>
|
||||
<word>oscaruddelingen</word>
|
||||
<word>osv</word>
|
||||
<word>parkere</word>
|
||||
<word>passér</word>
|
||||
<word>pitbull</word>
|
||||
<word>plateausandaler</word>
|
||||
<word>pyjamasdragter</word>
|
||||
<word>pyjamasfest</word>
|
||||
<word>renblodede</word>
|
||||
<word>sammensværgelsesteorier</word>
|
||||
<word>sejrsrække</word>
|
||||
<word>shh</word>
|
||||
<word>shoppingterapi</word>
|
||||
<word>showbiz</word>
|
||||
<word>silikonebryster</word>
|
||||
<word>si'r</word>
|
||||
<word>skanningen</word>
|
||||
<word>spasser</word>
|
||||
<word>svampethed</word>
|
||||
<word>svulmelegemer</word>
|
||||
<word>tandflader</word>
|
||||
<word>tarot</word>
|
||||
<word>tarotmord</word>
|
||||
<word>tarotmorder</word>
|
||||
<word>tarotmorderen</word>
|
||||
<word>tatarsaucen</word>
|
||||
<word>technomusik</word>
|
||||
<word>tjah</word>
|
||||
<word>trimmeren</word>
|
||||
<word>troldmandsfamilie</word>
|
||||
<word>troldmandsfamilier</word>
|
||||
<word>troldmandsskab</word>
|
||||
<word>tysksprogede</word>
|
||||
<word>uanset</word>
|
||||
<word>ufleksibel</word>
|
||||
<word>underminere</word>
|
||||
<word>underskriv</word>
|
||||
<word>ups</word>
|
||||
<word>uskikkelige</word>
|
||||
<word>utætte</word>
|
||||
<word>valiumplaster</word>
|
||||
<word>vampyrpigen</word>
|
||||
<word>velkomne</word>
|
||||
<word>velsigne</word>
|
||||
<word>via</word>
|
||||
<word>voilà</word>
|
||||
<word>voldgravsreplik</word>
|
||||
<word>wauw</word>
|
||||
<word>youtube</word>
|
||||
<word>ægløsningstest</word>
|
||||
<word>øko</word>
|
||||
<word>årig</word>
|
||||
<word>årige</word>
|
||||
<word>årigt</word>
|
||||
</words>
|
11
tools/SubtitleEdit/Dictionaries/da_NoBreakAfterList.xml
Normal file
11
tools/SubtitleEdit/Dictionaries/da_NoBreakAfterList.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<NoBreakAfterList>
|
||||
<Item>Dr</Item>
|
||||
<Item>Dr.</Item>
|
||||
<Item>Frk.</Item>
|
||||
<Item>Fru</Item>
|
||||
<Item>Hr.</Item>
|
||||
<Item>Mr</Item>
|
||||
<Item>Mr.</Item>
|
||||
<Item>Mrs.</Item>
|
||||
<Item>Ms.</Item>
|
||||
</NoBreakAfterList>
|
420
tools/SubtitleEdit/Dictionaries/da_names.xml
Normal file
420
tools/SubtitleEdit/Dictionaries/da_names.xml
Normal file
@ -0,0 +1,420 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This list contains names with specific casing - and specific to Danish only -->
|
||||
<names>
|
||||
<blacklist>
|
||||
<name>Rabat</name>
|
||||
</blacklist>
|
||||
<name>Afghanistan</name>
|
||||
<name>Afrika</name>
|
||||
<name>Albanien</name>
|
||||
<name>Aleksandr Isaejvitj Solzjenitsyn</name>
|
||||
<name>Aleksandr Solzjenitsyn</name>
|
||||
<name>Algeriet</name>
|
||||
<name>Amerikansk Samoa</name>
|
||||
<name>Amerikanske oversøiske øer</name>
|
||||
<name>Andorra</name>
|
||||
<name>Angola</name>
|
||||
<name>Anguilla</name>
|
||||
<name>Antarktis</name>
|
||||
<name>Antigua og Barbuda</name>
|
||||
<name>Aquarium</name>
|
||||
<name>Argentina</name>
|
||||
<name>Armenien</name>
|
||||
<name>Armfeldt</name>
|
||||
<name>Aruba</name>
|
||||
<name>Ascensionøen</name>
|
||||
<name>Aserbajdsjan</name>
|
||||
<name>Asgård</name>
|
||||
<name>Asien</name>
|
||||
<name>Australasien</name>
|
||||
<name>Australien</name>
|
||||
<name>Bagindien</name>
|
||||
<name>Bahamas</name>
|
||||
<name>Bahnhofstrasse</name>
|
||||
<name>Bahrain</name>
|
||||
<name>Bangladesh</name>
|
||||
<name>Barbados</name>
|
||||
<name>Baron von Münchhausen</name>
|
||||
<name>Bartok</name>
|
||||
<name>Beaudine</name>
|
||||
<name>Belgien</name>
|
||||
<name>Belgisk Congo</name>
|
||||
<name>Belize</name>
|
||||
<name>Benin</name>
|
||||
<name>Bermuda</name>
|
||||
<name>Beyonces</name>
|
||||
<name>Bhutan</name>
|
||||
<name>Bolivia</name>
|
||||
<name>Bosnien-Hercegovina</name>
|
||||
<name>Botswana</name>
|
||||
<name>Bouvetøen</name>
|
||||
<name>Brahms</name>
|
||||
<name>Brasilien</name>
|
||||
<name>Britiske Territorium</name>
|
||||
<name>Brunei</name>
|
||||
<name>Bulgarien</name>
|
||||
<name>Burkina Faso</name>
|
||||
<name>Burma</name>
|
||||
<name>Burundi</name>
|
||||
<name>Bäckström</name>
|
||||
<name>Caicosøerne</name>
|
||||
<name>Cambodja</name>
|
||||
<name>Cameroun</name>
|
||||
<name>Canada</name>
|
||||
<name>Caribien</name>
|
||||
<name>Cartier</name>
|
||||
<name>Cavanaughs</name>
|
||||
<name>Caymanøerne</name>
|
||||
<name>Centralafrika</name>
|
||||
<name>Centralafrikanske Republik</name>
|
||||
<name>Centralasien</name>
|
||||
<name>Ceuta og Melilla</name>
|
||||
<name>Chardonnay</name>
|
||||
<name>Chewy</name>
|
||||
<name>Chile</name>
|
||||
<name>Chopin</name>
|
||||
<name>Chopins</name>
|
||||
<name>Chung</name>
|
||||
<name>Clippertonøen</name>
|
||||
<name>Cobain</name>
|
||||
<name>Cocosøerne</name>
|
||||
<name>Colombia</name>
|
||||
<name>Comorerne</name>
|
||||
<name>Congo Brazzaville</name>
|
||||
<name>Congo Kinshasa</name>
|
||||
<name>Congo-Brazzaville</name>
|
||||
<name>Congo-Kinshasa</name>
|
||||
<name>Cookøerne</name>
|
||||
<name>Corolla</name>
|
||||
<name>Costa Rica</name>
|
||||
<name>Cuba</name>
|
||||
<name>Curaçao</name>
|
||||
<name>Cypern</name>
|
||||
<name>Danmark</name>
|
||||
<name>De Amerikanske Jomfruøer</name>
|
||||
<name>De Britiske Jomfruøer</name>
|
||||
<name>De Forenede Arabiske Emirater</name>
|
||||
<name>De Forenede Nationer</name>
|
||||
<name>De Franske Besiddelser i Det Sydlige Indiske Ocean og Antarktis</name>
|
||||
<name>De tidligere Nederlandske Antiller</name>
|
||||
<name>Demokratiske Republik Congo</name>
|
||||
<name>Den Centralafrikanske Republik</name>
|
||||
<name>Den Demokratiske Republik Congo</name>
|
||||
<name>Den Dominikanske Republik</name>
|
||||
<name>Den Europæiske Union</name>
|
||||
<name>Den Tjekkiske Republik</name>
|
||||
<name>Det Britiske Territorium i Det Indiske Ocean</name>
|
||||
<name>Det nordlige Amerika</name>
|
||||
<name>Det sydlige Afrika</name>
|
||||
<name>Diagonalstræde</name>
|
||||
<name>Dickens</name>
|
||||
<name>Diego Garcia</name>
|
||||
<name>DiLaurentis</name>
|
||||
<name>Djibouti</name>
|
||||
<name>Dominica</name>
|
||||
<name>Dominikanske Republik</name>
|
||||
<name>Dostojevskij</name>
|
||||
<name>DR Congo</name>
|
||||
<name>Ecuador</name>
|
||||
<name>Egerman</name>
|
||||
<name>Egypten</name>
|
||||
<name>El Salvador</name>
|
||||
<name>Elfenbenskysten</name>
|
||||
<name>England</name>
|
||||
<name>Eritrea</name>
|
||||
<name>Erlandson</name>
|
||||
<name>Estland</name>
|
||||
<name>Eswatini</name>
|
||||
<name>Etiopien</name>
|
||||
<name>Europa</name>
|
||||
<name>Europæiske Union</name>
|
||||
<name>Falcon</name>
|
||||
<name>Falconberg</name>
|
||||
<name>Falklandsøerne</name>
|
||||
<name>Fields</name>
|
||||
<name>Fiji</name>
|
||||
<name>Filippinerne</name>
|
||||
<name>Finland</name>
|
||||
<name>Fjodor Dostojevskij</name>
|
||||
<name>Fjodor Mikhajlovitj Dostojevskij</name>
|
||||
<name>FN</name>
|
||||
<name>Forrester</name>
|
||||
<name>Frankrig</name>
|
||||
<name>Fransk Guyana</name>
|
||||
<name>Fransk Polynesien</name>
|
||||
<name>Fulton</name>
|
||||
<name>Fultons</name>
|
||||
<name>Færøerne</name>
|
||||
<name>Gabon</name>
|
||||
<name>Gambia</name>
|
||||
<name>Gatsby</name>
|
||||
<name>Geographic</name>
|
||||
<name>Georgien</name>
|
||||
<name>Gerimax</name>
|
||||
<name>Ghana</name>
|
||||
<name>Gibraltar</name>
|
||||
<name>Grenada</name>
|
||||
<name>Grækenland</name>
|
||||
<name>Grønland</name>
|
||||
<name>Guadeloupe</name>
|
||||
<name>Guam</name>
|
||||
<name>Guangdong</name>
|
||||
<name>Guarneri</name>
|
||||
<name>Guatemala</name>
|
||||
<name>Guernsey</name>
|
||||
<name>Guinea</name>
|
||||
<name>Guinea-Bissau</name>
|
||||
<name>Guyana</name>
|
||||
<name>Haiti</name>
|
||||
<name>Heard Island</name>
|
||||
<name>Heard Island og McDonald Islands</name>
|
||||
<name>Hepburn</name>
|
||||
<name>Holland</name>
|
||||
<name>Honduras</name>
|
||||
<name>Hongkong</name>
|
||||
<name>Hviderusland</name>
|
||||
<name>Inc.</name>
|
||||
<name>Indien</name>
|
||||
<name>Indiske Ocean</name>
|
||||
<name>Indokina</name>
|
||||
<name>Indonesien</name>
|
||||
<name>Irak</name>
|
||||
<name>Iran</name>
|
||||
<name>Irland</name>
|
||||
<name>Island</name>
|
||||
<name>Islas Malvinas</name>
|
||||
<name>Isle of Man</name>
|
||||
<name>Israel</name>
|
||||
<name>Italien</name>
|
||||
<name>Jamaica</name>
|
||||
<name>Japan</name>
|
||||
<name>Jersey</name>
|
||||
<name>Jordan</name>
|
||||
<name>Juleøen</name>
|
||||
<name>Juliard</name>
|
||||
<name>Kahn</name>
|
||||
<name>Kanariske øer</name>
|
||||
<name>Kap Verde</name>
|
||||
<name>Kasakhstan</name>
|
||||
<name>Kenya</name>
|
||||
<name>Kina</name>
|
||||
<name>Kirgisistan</name>
|
||||
<name>Kiribati</name>
|
||||
<name>Kosovo</name>
|
||||
<name>Kretzinsky</name>
|
||||
<name>Kroatien</name>
|
||||
<name>Kuwait</name>
|
||||
<name>København</name>
|
||||
<name>Laos</name>
|
||||
<name>Latinamerika</name>
|
||||
<name>Leningrad</name>
|
||||
<name>Lesotho</name>
|
||||
<name>Letland</name>
|
||||
<name>Lev Nikolaevitj Tolstoj</name>
|
||||
<name>Lev Tolstoj</name>
|
||||
<name>Libanon</name>
|
||||
<name>Liberia</name>
|
||||
<name>Libyen</name>
|
||||
<name>Liechtenstein</name>
|
||||
<name>Litauen</name>
|
||||
<name>Luxembourg</name>
|
||||
<name>Lyman</name>
|
||||
<name>Lymans</name>
|
||||
<name>Macao</name>
|
||||
<name>Madagaskar</name>
|
||||
<name>Magnoliavej</name>
|
||||
<name>Malawi</name>
|
||||
<name>Malaysia</name>
|
||||
<name>Maldiverne</name>
|
||||
<name>Mali</name>
|
||||
<name>Malta</name>
|
||||
<name>Mandelbaum</name>
|
||||
<name>Mandelbaums</name>
|
||||
<name>Marokko</name>
|
||||
<name>Marshalløerne</name>
|
||||
<name>Martinique</name>
|
||||
<name>Mauretanien</name>
|
||||
<name>Mauritius</name>
|
||||
<name>Mayotte</name>
|
||||
<name>MBA</name>
|
||||
<name>McClellan</name>
|
||||
<name>McDonald Islands</name>
|
||||
<name>Melanesien</name>
|
||||
<name>Mellemamerika</name>
|
||||
<name>Mellisas</name>
|
||||
<name>Mexico</name>
|
||||
<name>Mickey Mouse</name>
|
||||
<name>Mikronesien</name>
|
||||
<name>Mikronesiske område</name>
|
||||
<name>Moldova</name>
|
||||
<name>Monaco</name>
|
||||
<name>Mondeo</name>
|
||||
<name>Mondeoen</name>
|
||||
<name>Mongoliet</name>
|
||||
<name>Montenegro</name>
|
||||
<name>Monterey</name>
|
||||
<name>Montserrat</name>
|
||||
<name>Mozambique</name>
|
||||
<name>MTV</name>
|
||||
<name>Myanmar</name>
|
||||
<name>Nadjim</name>
|
||||
<name>Namibia</name>
|
||||
<name>Nauru</name>
|
||||
<name>Nepal</name>
|
||||
<name>Neumann</name>
|
||||
<name>New Zealand</name>
|
||||
<name>Nicaragua</name>
|
||||
<name>Niger</name>
|
||||
<name>Nigeria</name>
|
||||
<name>Niue</name>
|
||||
<name>Nord-, Mellem- og Sydamerika</name>
|
||||
<name>Nordafrika</name>
|
||||
<name>Nordamerika</name>
|
||||
<name>Nordeuropa</name>
|
||||
<name>Nordkorea</name>
|
||||
<name>Nordmakedonien</name>
|
||||
<name>Nordmarianerne</name>
|
||||
<name>Norfolk Island</name>
|
||||
<name>Norge</name>
|
||||
<name>Ny Kaledonien</name>
|
||||
<name>Oceanien</name>
|
||||
<name>Oman</name>
|
||||
<name>Pakistan</name>
|
||||
<name>Palau</name>
|
||||
<name>Palæstina</name>
|
||||
<name>Panama</name>
|
||||
<name>Papua Ny Guinea</name>
|
||||
<name>Paraguay</name>
|
||||
<name>Peru</name>
|
||||
<name>Petterson</name>
|
||||
<name>Pitcairn</name>
|
||||
<name>Pjotr Ilitj Tjajkovskij</name>
|
||||
<name>Pjotr Tjajkovskij</name>
|
||||
<name>Polen</name>
|
||||
<name>Polynesien</name>
|
||||
<name>Portugal</name>
|
||||
<name>Pransky</name>
|
||||
<name>Primulavænget</name>
|
||||
<name>Puerto Rico</name>
|
||||
<name>Puttanesca</name>
|
||||
<name>Qatar</name>
|
||||
<name>Republikken Congo</name>
|
||||
<name>Réunion</name>
|
||||
<name>Rintoul</name>
|
||||
<name>Rosewood</name>
|
||||
<name>Rumænien</name>
|
||||
<name>Rusland</name>
|
||||
<name>Rwanda</name>
|
||||
<name>Saint Barthélemy</name>
|
||||
<name>Saint Kitts og Nevis</name>
|
||||
<name>Saint Lucia</name>
|
||||
<name>Saint Martin</name>
|
||||
<name>Saint Pierre og Miquelon</name>
|
||||
<name>Saint Vincent og Grenadinerne</name>
|
||||
<name>Salomonøerne</name>
|
||||
<name>Samoa</name>
|
||||
<name>San Marino</name>
|
||||
<name>São Tomé og Príncipe</name>
|
||||
<name>SAR Hongkong</name>
|
||||
<name>SAR Macao</name>
|
||||
<name>Saudi-Arabien</name>
|
||||
<name>Savitsky</name>
|
||||
<name>Schumanns</name>
|
||||
<name>Schweiz</name>
|
||||
<name>Senegal</name>
|
||||
<name>Serbien</name>
|
||||
<name>Seychellerne</name>
|
||||
<name>Sheng</name>
|
||||
<name>Sierra Leone</name>
|
||||
<name>Silverton</name>
|
||||
<name>Singapore</name>
|
||||
<name>Sint Maarten</name>
|
||||
<name>Slovakiet</name>
|
||||
<name>Slovenien</name>
|
||||
<name>Slytherins</name>
|
||||
<name>Solzjenitsyn</name>
|
||||
<name>Somalia</name>
|
||||
<name>South Georgia og De Sydlige Sandwichøer</name>
|
||||
<name>Spanien</name>
|
||||
<name>Splendini</name>
|
||||
<name>Sri Lanka</name>
|
||||
<name>St. Helena</name>
|
||||
<name>Storbritannien</name>
|
||||
<name>Strombel</name>
|
||||
<name>Subsaharisk Afrika</name>
|
||||
<name>Sudan</name>
|
||||
<name>Surinam</name>
|
||||
<name>Svalbard og Jan Mayen</name>
|
||||
<name>Sverige</name>
|
||||
<name>Swaziland</name>
|
||||
<name>Sydafrika</name>
|
||||
<name>Sydafrikas</name>
|
||||
<name>Sydamerika</name>
|
||||
<name>Sydasien</name>
|
||||
<name>Sydeuropa</name>
|
||||
<name>Sydkorea</name>
|
||||
<name>Sydsudan</name>
|
||||
<name>Sydøstasien</name>
|
||||
<name>Syrien</name>
|
||||
<name>Tadsjikistan</name>
|
||||
<name>Taiwan</name>
|
||||
<name>Tanzania</name>
|
||||
<name>Tchad</name>
|
||||
<name>Thailand</name>
|
||||
<name>Tianjins</name>
|
||||
<name>Timor-Leste</name>
|
||||
<name>Tinsley</name>
|
||||
<name>Tjajkovskij</name>
|
||||
<name>Tjekkiet</name>
|
||||
<name>Tjekkiske Republik</name>
|
||||
<name>Togo</name>
|
||||
<name>Tokelau</name>
|
||||
<name>Tolstoj</name>
|
||||
<name>Tonga</name>
|
||||
<name>Trinidad og Tobago</name>
|
||||
<name>Trinity</name>
|
||||
<name>Tristan da Cunha</name>
|
||||
<name>Tunesien</name>
|
||||
<name>Turkmenistan</name>
|
||||
<name>Turks- og Caicosøerne</name>
|
||||
<name>Turksøerne</name>
|
||||
<name>Tuvalu</name>
|
||||
<name>Tyrkiet</name>
|
||||
<name>Tyskland</name>
|
||||
<name>Uganda</name>
|
||||
<name>UK</name>
|
||||
<name>Ukraine</name>
|
||||
<name>Ullman</name>
|
||||
<name>Ungarn</name>
|
||||
<name>Uruguay</name>
|
||||
<name>USA</name>
|
||||
<name>Usbekistan</name>
|
||||
<name>Uzés</name>
|
||||
<name>Vanuatu</name>
|
||||
<name>Vatikanstaten</name>
|
||||
<name>Venezuela</name>
|
||||
<name>Versace</name>
|
||||
<name>Vestafrika</name>
|
||||
<name>Vestasien</name>
|
||||
<name>Vesteuropa</name>
|
||||
<name>Vestsahara</name>
|
||||
<name>Vietnam</name>
|
||||
<name>Waldstein</name>
|
||||
<name>Wallis og Futuna</name>
|
||||
<name>Waterman</name>
|
||||
<name>Wharton</name>
|
||||
<name>Wylie</name>
|
||||
<name>Yardley</name>
|
||||
<name>Ydre Oceanien</name>
|
||||
<name>Yemen</name>
|
||||
<name>Zaïre</name>
|
||||
<name>Zambia</name>
|
||||
<name>Zimbabwe</name>
|
||||
<name>Ækvatorialguinea</name>
|
||||
<name>Østafrika</name>
|
||||
<name>Østasien</name>
|
||||
<name>Østeuropa</name>
|
||||
<name>Østrig</name>
|
||||
<name>Østtimor</name>
|
||||
<name>Åland</name>
|
||||
</names>
|
649
tools/SubtitleEdit/Dictionaries/dan_OCRFixReplaceList.xml
Normal file
649
tools/SubtitleEdit/Dictionaries/dan_OCRFixReplaceList.xml
Normal file
@ -0,0 +1,649 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<OCRFixReplaceList>
|
||||
<WholeWords>
|
||||
<Word from="Haner" to="Han er" />
|
||||
<Word from="JaveL" to="Javel" />
|
||||
<Word from="Pa//e" to="Palle" />
|
||||
<Word from="bffte" to="bitte" />
|
||||
<Word from="Utro//gt" to="Utroligt" />
|
||||
<Word from="Kommerdu" to="Kommer du" />
|
||||
<Word from="smi/er" to="smiler" />
|
||||
<Word from="/eg" to="leg" />
|
||||
<Word from="harvinger" to="har vinger" />
|
||||
<Word from="/et" to="let" />
|
||||
<Word from="erjeres" to="er jeres" />
|
||||
<Word from="hardet" to="har det" />
|
||||
<Word from="tænktjer" to="tænkt jer" />
|
||||
<Word from="erjo" to="er jo" />
|
||||
<Word from="sti/" to="stil" />
|
||||
<Word from="Iappe" to="lappe" />
|
||||
<Word from="Beklagelç" to="Beklager," />
|
||||
<Word from="vardet" to="var det" />
|
||||
<Word from="afden" to="af den" />
|
||||
<Word from="snupperjeg" to="snupper jeg" />
|
||||
<Word from="ikkejeg" to="ikke jeg" />
|
||||
<Word from="bliverjeg" to="bliver jeg" />
|
||||
<Word from="hartravit" to="har travlt" />
|
||||
<Word from="pandekagef/ag" to="pandekageflag" />
|
||||
<Word from="Stormvarsell" to="Stormvarsel!" />
|
||||
<Word from="stormvejn" to="stormvejr." />
|
||||
<Word from="morgenkomp/et" to="morgenkomplet" />
|
||||
<Word from="/yv" to="lyv" />
|
||||
<Word from="varjo" to="var jo" />
|
||||
<Word from="/eger" to="leger" />
|
||||
<Word from="harjeg" to="har jeg" />
|
||||
<Word from="havdejeg" to="havde jeg" />
|
||||
<Word from="hvorjeg" to="hvor jeg" />
|
||||
<Word from="nårjeg" to="når jeg" />
|
||||
<Word from="gårvi" to="går vi" />
|
||||
<Word from="atjeg" to="at jeg" />
|
||||
<Word from="isine" to="i sine" />
|
||||
<Word from="fårjeg" to="får jeg" />
|
||||
<Word from="kærtighed" to="kærlighed" />
|
||||
<Word from="skullejeg" to="skulle jeg" />
|
||||
<Word from="laest" to="læst" />
|
||||
<Word from="laese" to="læse" />
|
||||
<Word from="gørjeg" to="gør jeg" />
|
||||
<Word from="gørvi" to="gør vi" />
|
||||
<Word from="angrerjo" to="angrer jo" />
|
||||
<Word from="Hvergang" to="Hver gang" />
|
||||
<Word from="erder" to="er der" />
|
||||
<Word from="villetilgive" to="ville tilgive" />
|
||||
<Word from="fieme" to="fjeme" />
|
||||
<Word from="genopståri" to="genopstår i" />
|
||||
<Word from="svigtejer" to="svigte jer" />
|
||||
<Word from="kommernu" to="kommer nu" />
|
||||
<Word from="nårman" to="når man" />
|
||||
<Word from="erfire" to="er fire" />
|
||||
<Word from="Hvorforfinderdu" to="Hvorfor finder du" />
|
||||
<Word from="undertigt" to="underligt" />
|
||||
<Word from="itroen" to="i troen" />
|
||||
<Word from="erløgnt" to="er løgn!" />
|
||||
<Word from="gørden" to="gør den" />
|
||||
<Word from="forhelvede" to="for helvede" />
|
||||
<Word from="hjpe" to="hjælpe" />
|
||||
<Word from="togeti" to="toget i" />
|
||||
<Word from="Måjeg" to="Må jeg" />
|
||||
<Word from="savnerjer" to="savner jer" />
|
||||
<Word from="erjeg" to="er jeg" />
|
||||
<Word from="vaere" to="være" />
|
||||
<Word from="geme" to="gerne" />
|
||||
<Word from="trorpå" to="tror på" />
|
||||
<Word from="forham" to="for ham" />
|
||||
<Word from="afham" to="af ham" />
|
||||
<Word from="harjo" to="har jo" />
|
||||
<Word from="ovemafiet" to="overnattet" />
|
||||
<Word from="begaefiighed" to="begærlighed" />
|
||||
<Word from="sy’g" to="syg" />
|
||||
<Word from="Imensjeg" to="Imens jeg" />
|
||||
<Word from="bliverdu" to="bliver du" />
|
||||
<Word from="fiser" to="fiser" />
|
||||
<Word from="manipuierer" to="manipulerer" />
|
||||
<Word from="forjeg" to="for jeg" />
|
||||
<Word from="iivgivendefor" to="livgivende for" />
|
||||
<Word from="formig" to="for mig" />
|
||||
<Word from="Hardu" to="Har du" />
|
||||
<Word from="fornold" to="forhold" />
|
||||
<Word from="defrelste" to="de frelste" />
|
||||
<Word from="Såjeg" to="Så jeg" />
|
||||
<Word from="varjeg" to="var jeg" />
|
||||
<Word from="gørved" to="gør ved" />
|
||||
<Word from="kalderjeg" to="kalder jeg" />
|
||||
<Word from="flytte" to="flytte" />
|
||||
<Word from="handlerdet" to="handler det" />
|
||||
<Word from="trorjeg" to="tror jeg" />
|
||||
<Word from="flytter" to="flytter" />
|
||||
<Word from="soverjeg" to="sover jeg" />
|
||||
<Word from="finderud" to="finder ud" />
|
||||
<Word from="naboerpå" to="naboer på" />
|
||||
<Word from="ervildt" to="er vildt" />
|
||||
<Word from="væreher" to="være her" />
|
||||
<Word from="hyggerjer" to="hygger jer" />
|
||||
<Word from="borjo" to="bor jo" />
|
||||
<Word from="kommerikke" to="kommer ikke" />
|
||||
<Word from="folkynde" to="forkynde" />
|
||||
<Word from="farglad" to="far glad" />
|
||||
<Word from="misterjeg" to="mister jeg" />
|
||||
<Word from="fint" to="fint" />
|
||||
<Word from="Harl" to="Har I" />
|
||||
<Word from="bedejer" to="bede jer" />
|
||||
<Word from="synesjeg" to="synes jeg" />
|
||||
<Word from="vartil" to="var til" />
|
||||
<Word from="eren" to="er en" />
|
||||
<Word from="\Al" to="Vil" />
|
||||
<Word from="\A" to="Vi" />
|
||||
<Word from="fjeme" to="fjerne" />
|
||||
<Word from="Iigefyldt" to="lige fyldt" />
|
||||
<Word from="ertil" to="er til" />
|
||||
<Word from="fafiigt" to="farligt" />
|
||||
<Word from="finder" to="finder" />
|
||||
<Word from="findes" to="findes" />
|
||||
<Word from="irettesaefielse" to="irettesættelse" />
|
||||
<Word from="ermed" to="er med" />
|
||||
<Word from="èn" to="én" />
|
||||
<Word from="gikjoi" to="gik jo i" />
|
||||
<Word from="Hvisjeg" to="Hvis jeg" />
|
||||
<Word from="ovemafier" to="overnatter" />
|
||||
<Word from="hoident" to="holdent" />
|
||||
<Word from="\Adne" to="Vidne" />
|
||||
<Word from="fori" to="for i" />
|
||||
<Word from="vei" to="vel" />
|
||||
<Word from="savnerjerjo" to="savner jer jo" />
|
||||
<Word from="elskerjer" to="elsker jer" />
|
||||
<Word from="harløjet" to="har løjet" />
|
||||
<Word from="eri" to="er i" />
|
||||
<Word from="fiende" to="fjende" />
|
||||
<Word from="derjo" to="der jo" />
|
||||
<Word from="sigerjo" to="siger jo" />
|
||||
<Word from="menerjeg" to="mener jeg" />
|
||||
<Word from="Harjeg" to="Har jeg" />
|
||||
<Word from="sigerjeg" to="siger jeg" />
|
||||
<Word from="splitterjeg" to="splitter jeg" />
|
||||
<Word from="erjournalist" to="er journalist" />
|
||||
<Word from="erjoumalist" to="er journalist" />
|
||||
<Word from="Forjeg" to="For jeg" />
|
||||
<Word from="gârjeg" to="går jeg" />
|
||||
<Word from="Nârjeg" to="Når jeg" />
|
||||
<Word from="afllom" to="afkom" />
|
||||
<Word from="farerjo" to="farer jo" />
|
||||
<Word from="tagerjeg" to="tager jeg" />
|
||||
<Word from="Virkerjeg" to="Virker jeg" />
|
||||
<Word from="morerjer" to="morer jer" />
|
||||
<Word from="kommerjo" to="kommer jo" />
|
||||
<Word from="istand" to="i stand" />
|
||||
<Word from="bøm" to="børn" />
|
||||
<Word from="frygterjeg" to="frygter jeg" />
|
||||
<Word from="kommerjeg" to="kommer jeg" />
|
||||
<Word from="eriournalistelev" to="er journalistelev" />
|
||||
<Word from="harfat" to="har fat" />
|
||||
<Word from="fårfingre" to="får fingre" />
|
||||
<Word from="slârjeg" to="slår jeg" />
|
||||
<Word from="bam" to="barn" />
|
||||
<Word from="erjournalistelev" to="er journalistelev" />
|
||||
<Word from="politietjo" to="politiet jo" />
|
||||
<Word from="elskerjo" to="elsker jo" />
|
||||
<Word from="vari" to="var i" />
|
||||
<Word from="fornemmerjeres" to="fornemmer jeres" />
|
||||
<Word from="udklækketl" to="udklækket!" />
|
||||
<Word from="í" to="i" />
|
||||
<Word from="nyi" to="ny i" />
|
||||
<Word from="Iumijelse" to="fornøjelse" />
|
||||
<Word from="vures" to="vores" />
|
||||
<Word from="I/Vashíngtan" to="Washington" />
|
||||
<Word from="opleverjeg" to="oplever jeg" />
|
||||
<Word from="PANTELÃNER" to="PANTELÅNER" />
|
||||
<Word from="Gudmurgen" to="Godmorgen" />
|
||||
<Word from="SKYDEVÃBEN" to="SKYDEVÅBEN" />
|
||||
<Word from="PÃLIDELIG" to="PÅLIDELIG" />
|
||||
<Word from="avertalte" to="overtalte" />
|
||||
<Word from="Omsíder" to="Omsider" />
|
||||
<Word from="lurtebåd" to="lortebåd" />
|
||||
<Word from="Telrslning" to="Tekstning" />
|
||||
<Word from="miUø" to="miljø" />
|
||||
<Word from="gåri" to="går i" />
|
||||
<Word from="Fan/el" to="Farvel" />
|
||||
<Word from="abefiæs" to="abefjæs" />
|
||||
<Word from="hartalt" to="har talt" />
|
||||
<Word from="\Årkelig" to="Virkelig" />
|
||||
<Word from="beklagerjeg" to="beklager jeg" />
|
||||
<Word from="Nårjeg" to="Når jeg" />
|
||||
<Word from="rnaend" to="mænd" />
|
||||
<Word from="vaskebjorn" to="vaskebjørn" />
|
||||
<Word from="Ivil" to="I vil" />
|
||||
<Word from="besog" to="besøg" />
|
||||
<Word from="Vaer" to="Vær" />
|
||||
<Word from="Undersogte" to="Undersøgte" />
|
||||
<Word from="modte" to="mødte" />
|
||||
<Word from="toj" to="tøj" />
|
||||
<Word from="fodt" to="født" />
|
||||
<Word from="gore" to="gøre" />
|
||||
<Word from="provede" to="prøvede" />
|
||||
<Word from="forste" to="første" />
|
||||
<Word from="igang" to="i gang" />
|
||||
<Word from="ligenu" to="lige nu" />
|
||||
<Word from="clet" to="det" />
|
||||
<Word from="Strombell" to="Strombel!" />
|
||||
<Word from="tmvlt" to="travlt" />
|
||||
<Word from="studererjournalistik" to="studerer journalistik" />
|
||||
<Word from="inforrnererjeg" to="informerer jeg" />
|
||||
<Word from="omkfing" to="omkring" />
|
||||
<Word from="tilAsgård" to="til Asgård" />
|
||||
<Word from="Kederjeg" to="Keder jeg" />
|
||||
<Word from="jaettetamp" to="jættetamp" />
|
||||
<Word from="erjer" to="er jer" />
|
||||
<Word from="atjulehygge" to="at julehygge" />
|
||||
<Word from="Ueneste" to="tjeneste" />
|
||||
<Word from="foltsaetter" to="fortsætter" />
|
||||
<Word from="A/ice" to="Alice" />
|
||||
<Word from="tvivlerjeg" to="tvivler jeg" />
|
||||
<Word from="henterjer" to="henter jer" />
|
||||
<Word from="forstårjeg" to="forstår jeg" />
|
||||
<Word from="hvisjeg" to="hvis jeg" />
|
||||
<Word from="/ært" to="lært" />
|
||||
<Word from="vfgtrgt" to="vigtigt" />
|
||||
<Word from="hurtigtjeg" to="hurtigt jeg" />
|
||||
<Word from="kenderjo" to="kender jo" />
|
||||
<Word from="seiv" to="selv" />
|
||||
<Word from="/ægehuset" to="lægehuset" />
|
||||
<Word from="herjo" to="her jo" />
|
||||
<Word from="stolerjeg" to="stoler jeg" />
|
||||
<Word from="digi" to="dig i" />
|
||||
<Word from="taberi" to="taber i" />
|
||||
<Word from="slårjeres" to="slår jeres" />
|
||||
<Word from="laere" to="lære" />
|
||||
<Word from="trænerwushu" to="træner wushu" />
|
||||
<Word from="efterjeg" to="efter jeg" />
|
||||
<Word from="efier" to="efter" />
|
||||
<Word from="dui" to="du i" />
|
||||
<Word from="afien" to="aften" />
|
||||
<Word from="bliveri" to="bliver i" />
|
||||
<Word from="acceptererjer" to="accepterer jer" />
|
||||
<Word from="drikkerjo" to="drikker jo" />
|
||||
<Word from="fianjin" to="Tianjin" />
|
||||
<Word from="erlænge" to="er længe" />
|
||||
<Word from="erikke" to="er ikke" />
|
||||
<Word from="medjer" to="med jer" />
|
||||
<Word from="Tmykke" to="Tillykke" />
|
||||
<Word from="'fianjins" to="Tianjins" />
|
||||
<Word from="Mesteri" to="Mester i" />
|
||||
<Word from="sagdetil" to="sagde til" />
|
||||
<Word from="indei" to="inde i" />
|
||||
<Word from="ofie" to="ofte" />
|
||||
<Word from="'filgiv" to="Tilgiv" />
|
||||
<Word from="Lfår" to="I får" />
|
||||
<Word from="viserjer" to="viser jer" />
|
||||
<Word from="Rejsjerblot" to="Rejs jer blot" />
|
||||
<Word from="'fillad" to="Tillad" />
|
||||
<Word from="iiiiefinger" to="lillefinger" />
|
||||
<Word from="VILOMFATTE" to="VIL OMFATTE" />
|
||||
<Word from="mofio" to="motto" />
|
||||
<Word from="gørjer" to="gør jer" />
|
||||
<Word from="gifi" to="gift" />
|
||||
<Word from="hardu" to="har du" />
|
||||
<Word from="gifi" to="gift" />
|
||||
<Word from="Iaeggerjeg" to="lægger jeg" />
|
||||
<Word from="iet" to="i et" />
|
||||
<Word from="sv/yte" to="svigte" />
|
||||
<Word from="ti/" to="til" />
|
||||
<Word from="Wdal" to="Vidal" />
|
||||
<Word from="fiået" to="fået" />
|
||||
<Word from="Hvo/for" to="Hvorfor" />
|
||||
<Word from="hellerikke" to="heller ikke" />
|
||||
<Word from="Wlle" to="Ville" />
|
||||
<Word from="dr/ver" to="driver" />
|
||||
<Word from="V\fllliam" to="William" />
|
||||
<Word from="V\fllliams" to="Williams" />
|
||||
<Word from="Vkfilliam" to="William" />
|
||||
<Word from="vådejakke" to="våde jakke" />
|
||||
<Word from="kæfll" to="kæft!" />
|
||||
<Word from="sagdejeg" to="sagde jeg" />
|
||||
<Word from="oven/ejet" to="overvejet" />
|
||||
<Word from="karameisauce" to="karamelsauce" />
|
||||
<Word from="Lfølgejødisk" to="Ifølge jødisk" />
|
||||
<Word from="blevjo" to="blev jo" />
|
||||
<Word from="asiateri" to="asiater i" />
|
||||
<Word from="erV\fllliam" to="er William" />
|
||||
<Word from="lidtflov" to="lidt flov" />
|
||||
<Word from="sagdejo" to="sagde jo" />
|
||||
<Word from="erlige" to="er lige" />
|
||||
<Word from="Vtfilliam" to="William" />
|
||||
<Word from="WfiII" to="Will" />
|
||||
<Word from="afldarede" to="afklarede" />
|
||||
<Word from="hjæiperjeg" to="hjælper jeg" />
|
||||
<Word from="laderjeg" to="lader jeg" />
|
||||
<Word from="Hândledsbeskyttere" to="Håndledsbeskyttere" />
|
||||
<Word from="Lsabels" to="Isabels" />
|
||||
<Word from="Gørjeg" to="Gør jeg" />
|
||||
<Word from="mâjeg" to="må jeg" />
|
||||
<Word from="ogjeg" to="og jeg" />
|
||||
<Word from="gjordejeg" to="gjorde jeg" />
|
||||
<Word from="villejeg" to="ville jeg" />
|
||||
<Word from="Vlfllliams" to="Williams" />
|
||||
<Word from="Dajeg" to="Da jeg" />
|
||||
<Word from="iorden" to="i orden" />
|
||||
<Word from="fandtjeg" to="fandt jeg" />
|
||||
<Word from="Tilykke" to="Tillykke" />
|
||||
<Word from="kørerjer" to="kører jer" />
|
||||
<Word from="gøfjeg" to="gør jeg" />
|
||||
<Word from="Selvflgelig" to="Selvfølgelig" />
|
||||
<Word from="fdder" to="fadder" />
|
||||
<Word from="bnfaldt" to="bønfaldt" />
|
||||
<Word from="t\/ehovedede" to="tvehovedede" />
|
||||
<Word from="EIler" to="Eller" />
|
||||
<Word from="ringerjeg" to="ringer jeg" />
|
||||
<Word from="blevvæk" to="blev væk" />
|
||||
<Word from="stárjeg" to="står jeg" />
|
||||
<Word from="varforbi" to="var forbi" />
|
||||
<Word from="harfortalt" to="har fortalt" />
|
||||
<Word from="iflere" to="i flere" />
|
||||
<Word from="tørjeg" to="tør jeg" />
|
||||
<Word from="kunnejeg" to="kunne jeg" />
|
||||
<Word from="má" to="må" />
|
||||
<Word from="hartænkt" to="har tænkt" />
|
||||
<Word from="Fárjeg" to="Får jeg" />
|
||||
<Word from="afdelingervar" to="afdelinger var" />
|
||||
<Word from="0rd" to="ord" />
|
||||
<Word from="pástá" to="påstå" />
|
||||
<Word from="gráharet" to="gråharet" />
|
||||
<Word from="varforbløffende" to="var forbløffende" />
|
||||
<Word from="holdtjeg" to="holdt jeg" />
|
||||
<Word from="hængerjo" to="hænger jo" />
|
||||
<Word from="fikjeg" to="fik jeg" />
|
||||
<Word from="fár" to="får" />
|
||||
<Word from="Hvorforfølerjeg" to="Hvorfor føler jeg" />
|
||||
<Word from="harfeber" to="har feber" />
|
||||
<Word from="ándssvagt" to="åndssvagt" />
|
||||
<Word from="0g" to="Og" />
|
||||
<Word from="vartre" to="var tre" />
|
||||
<Word from="abner" to="åbner" />
|
||||
<Word from="garjeg" to="går jeg" />
|
||||
<Word from="sertil" to="ser til" />
|
||||
<Word from="hvorfin" to="hvor fin" />
|
||||
<Word from="harfri" to="har fri" />
|
||||
<Word from="forstarjeg" to="forstår jeg" />
|
||||
<Word from="Sä" to="Så" />
|
||||
<Word from="hvorfint" to="hvor fint" />
|
||||
<Word from="mærkerjeg" to="mærker jeg" />
|
||||
<Word from="ogsa" to="også" />
|
||||
<Word from="nárjeg" to="når jeg" />
|
||||
<Word from="Jasá" to="Jaså" />
|
||||
<Word from="bándoptager" to="båndoptager" />
|
||||
<Word from="bedárende" to="bedårende" />
|
||||
<Word from="sá" to="så" />
|
||||
<Word from="nár" to="når" />
|
||||
<Word from="kunnejo" to="kunne jo" />
|
||||
<Word from="Brammertil" to="Brammer til" />
|
||||
<Word from="serjeg" to="ser jeg" />
|
||||
<Word from="gikjeg" to="gik jeg" />
|
||||
<Word from="udholderjeg" to="udholder jeg" />
|
||||
<Word from="máneder" to="måneder" />
|
||||
<Word from="vartræt" to="var træt" />
|
||||
<Word from="dárligt" to="dårligt" />
|
||||
<Word from="klaretjer" to="klaret jer" />
|
||||
<Word from="pavirkelig" to="påvirkelig" />
|
||||
<Word from="spekulererjeg" to="spekulerer jeg" />
|
||||
<Word from="forsøgerjeg" to="forsøger jeg" />
|
||||
<Word from="huskerjeg" to="husker jeg" />
|
||||
<Word from="ifavnen" to="i favnen" />
|
||||
<Word from="skullejo" to="skulle jo" />
|
||||
<Word from="vartung" to="var tung" />
|
||||
<Word from="varfuldstændig" to="var fuldstændig" />
|
||||
<Word from="Paskedag" to="Påskedag" />
|
||||
<Word from="turi" to="tur i" />
|
||||
<Word from="spillerschumanns" to="spiller Schumanns" />
|
||||
<Word from="forstárjeg" to="forstår jeg" />
|
||||
<Word from="istedet" to="i stedet" />
|
||||
<Word from="nárfrem" to="når frem" />
|
||||
<Word from="habertrods" to="håber trods" />
|
||||
<Word from="forførste" to="for første" />
|
||||
<Word from="varto" to="var to" />
|
||||
<Word from="overtil" to="over til" />
|
||||
<Word from="forfem" to="for fem" />
|
||||
<Word from="holdtjo" to="holdt jo" />
|
||||
<Word from="passerjo" to="passer jo" />
|
||||
<Word from="ellerto" to="eller to" />
|
||||
<Word from="hartrods" to="har trods" />
|
||||
<Word from="harfuldstændig" to="har fuldstændig" />
|
||||
<Word from="gårjeg" to="går jeg" />
|
||||
<Word from="giderjeg" to="gider jeg" />
|
||||
<Word from="forjer" to="for jer" />
|
||||
<Word from="erindrerjeg" to="erindrer jeg" />
|
||||
<Word from="tænkerjeg" to="tænker jeg" />
|
||||
<Word from="GAEt" to="GÅET" />
|
||||
<Word from="hørerjo" to="hører jo" />
|
||||
<Word from="forladerjeg" to="forlader jeg" />
|
||||
<Word from="kosterjo" to="koster jo" />
|
||||
<Word from="fortællerjeg" to="fortæller jeg" />
|
||||
<Word from="Forstyrrerjeg" to="Forstyrrer jeg" />
|
||||
<Word from="tjekkerjeg" to="tjekker jeg" />
|
||||
<Word from="erjurist" to="er jurist" />
|
||||
<Word from="tlLBUD" to="TILBUD" />
|
||||
<Word from="serjo" to="se rjo" />
|
||||
<Word from="bederjeg" to="beder jeg" />
|
||||
<Word from="bilderjeg" to="bilder jeg" />
|
||||
<Word from="ULVEtlME" to="ULVETlME" />
|
||||
<Word from="skærerjo" to="skærer jo" />
|
||||
<Word from="afjer" to="af jer" />
|
||||
<Word from="ordnerjeg" to="ordner jeg" />
|
||||
<Word from="giverjeg" to="giver jeg" />
|
||||
<Word from="rejservi" to="rejser vi" />
|
||||
<Word from="fangerjeg" to="fanger jeg" />
|
||||
<Word from="erjaloux" to="er jaloux" />
|
||||
<Word from="glemmerjeg" to="glemmer jeg" />
|
||||
<Word from="Behøverjeg" to="Behøver jeg" />
|
||||
<Word from="harvi" to="har vi" />
|
||||
<Word from="ertyndere" to="er tyndere" />
|
||||
<Word from="fårtordenvejr" to="får tordenvejr" />
|
||||
<Word from="varfærdig" to="var færdig" />
|
||||
<Word from="hørerfor" to="hører for" />
|
||||
<Word from="varvel" to="var vel" />
|
||||
<Word from="erforbi" to="er forbi" />
|
||||
<Word from="AIle" to="Alle" />
|
||||
<Word from="læserjo" to="læser jo" />
|
||||
<Word from="Edgarer" to="Edgar er" />
|
||||
<Word from="hartaget" to="har taget" />
|
||||
<Word from="derer" to="der er" />
|
||||
<Word from="stikkerfrem" to="stikker frem" />
|
||||
<Word from="haraldrig" to="har aldrig" />
|
||||
<Word from="ellerfar" to="eller far" />
|
||||
<Word from="erat" to="er at" />
|
||||
<Word from="turtil" to="tur til" />
|
||||
<Word from="erfærdig" to="er færdig" />
|
||||
<Word from="følerjeg" to="føler jeg" />
|
||||
<Word from="jerfra" to="jer fra" />
|
||||
<Word from="eralt" to="er alt" />
|
||||
<Word from="harfaktisk" to="har faktisk" />
|
||||
<Word from="harfundet" to="har fundet" />
|
||||
<Word from="harvendt" to="har vendt" />
|
||||
<Word from="Kunstneraf" to="Kunstner af" />
|
||||
<Word from="ervel" to="er vel" />
|
||||
<Word from="ståransigt" to="står ansigt" />
|
||||
<Word from="Erjeg" to="Er jeg" />
|
||||
<Word from="venterjeg" to="venter jeg" />
|
||||
<Word from="Hvorvar" to="Hvor var" />
|
||||
<Word from="varfint" to="var fint" />
|
||||
<Word from="ervarmt" to="er varmt" />
|
||||
<Word from="gårfint" to="går fint" />
|
||||
<Word from="flyverforbi" to="flyver forbi" />
|
||||
<Word from="Dervar" to="Der var" />
|
||||
<Word from="dervar" to="der var" />
|
||||
<Word from="meneråndeligt" to="mener åndeligt" />
|
||||
<Word from="forat" to="for at" />
|
||||
<Word from="herovertil" to="herover til" />
|
||||
<Word from="soverfor" to="sover for" />
|
||||
<Word from="begyndtejeg" to="begyndte jeg" />
|
||||
<Word from="vendertilbage" to="vender tilbage" />
|
||||
<Word from="erforfærdelig" to="er forfærdelig" />
|
||||
<Word from="gøraltid" to="gør altid" />
|
||||
<Word from="ertilbage" to="er tilbage" />
|
||||
<Word from="harværet" to="har været" />
|
||||
<Word from="bagoverellertil" to="bagover eller til" />
|
||||
<Word from="hertaler" to="her taler" />
|
||||
<Word from="vågnerjeg" to="vågner jeg" />
|
||||
<Word from="vartomt" to="var tomt" />
|
||||
<Word from="gårfrem" to="går frem" />
|
||||
<Word from="talertil" to="taler til" />
|
||||
<Word from="ertryg" to="er tryg" />
|
||||
<Word from="ansigtervendes" to="ansigter vendes" />
|
||||
<Word from="hervirkeligt" to="her virkeligt" />
|
||||
<Word from="herer" to="her er" />
|
||||
<Word from="drømmerjo" to="drømmer jo" />
|
||||
<Word from="erfuldkommen" to="er fuldkommen" />
|
||||
<Word from="hveren" to="hver en" />
|
||||
<Word from="erfej" to="er fej" />
|
||||
<Word from="datterforgæves" to="datter forgæves" />
|
||||
<Word from="forsøgerjo" to="forsøger jo" />
|
||||
<Word from="ertom" to="er tom" />
|
||||
<Word from="vareftermiddag" to="var eftermiddag" />
|
||||
<Word from="vartom" to="var tom" />
|
||||
<Word from="angerellerforventninger" to="anger eller forventninger" />
|
||||
<Word from="kørtejeg" to="kørte jeg" />
|
||||
<Word from="Hvorforfortæller" to="Hvorfor fortæller" />
|
||||
<Word from="gårtil" to="går til" />
|
||||
<Word from="ringerefter" to="ringer efter" />
|
||||
<Word from="søgertilflugt" to="søger tilflugt" />
|
||||
<Word from="ertvunget" to="er tvunget" />
|
||||
<Word from="megetjeg" to="meget jeg" />
|
||||
<Word from="varikke" to="var ikke" />
|
||||
<Word from="Derermange" to="Der e rmange" />
|
||||
<Word from="dervilhindre" to="der vil hindre" />
|
||||
<Word from="erså" to="er så" />
|
||||
<Word from="DetforstårLeggodt" to="Det forstår jeg godt" />
|
||||
<Word from="ergodt" to="er godt" />
|
||||
<Word from="vorventen" to="vor venten" />
|
||||
<Word from="tagerfejl" to="tager fejl" />
|
||||
<Word from="ellerer" to="eller er" />
|
||||
<Word from="laverjeg" to="laver jeg" />
|
||||
<Word from="0mgang" to="omgang" />
|
||||
<Word from="afstár" to="afstår" />
|
||||
<Word from="pá" to="på" />
|
||||
<Word from="rejserjeg" to="rejser jeg" />
|
||||
<Word from="ellertage" to="eller tage" />
|
||||
<Word from="takkerjeg" to="takker jeg" />
|
||||
<Word from="ertilfældigvis" to="er tilfældigvis" />
|
||||
<Word from="fremstar" to="fremstår" />
|
||||
<Word from="ertæt" to="er tæt" />
|
||||
<Word from="ijeres" to="i jeres" />
|
||||
<Word from="Sagdejeg" to="Sagde jeg" />
|
||||
<Word from="overi" to="over i" />
|
||||
<Word from="plukkerjordbær" to="plukker jordbær" />
|
||||
<Word from="klarerjeg" to="klarer jeg" />
|
||||
<Word from="jerfire" to="jer fire" />
|
||||
<Word from="tábeligste" to="tåbeligste" />
|
||||
<Word from="sigertvillingerne" to="siger tvillingerne" />
|
||||
<Word from="erfaktisk" to="er faktisk" />
|
||||
<Word from="gár" to="går" />
|
||||
<Word from="harvasket" to="har vasket" />
|
||||
<Word from="harplukketjordbærtil" to="har plukket jordbær til" />
|
||||
<Word from="plukketjordbær" to="plukket jordbær" />
|
||||
<Word from="klaverfirehændigt" to="klaver firehændigt" />
|
||||
<Word from="erjævnaldrende" to="er jævnaldrende" />
|
||||
<Word from="tierjeg" to="tier jeg" />
|
||||
<Word from="Hvorerden" to="Hvor er den" />
|
||||
<Word from="0veraltjeg" to="overalt jeg" />
|
||||
<Word from="gårpå" to="går på" />
|
||||
<Word from="finderjeg" to="finder jeg" />
|
||||
<Word from="serhans" to="ser hans" />
|
||||
<Word from="tiderbliver" to="tider bliver" />
|
||||
<Word from="ellertrist" to="eller trist" />
|
||||
<Word from="forstårjeres" to="forstår jeres" />
|
||||
<Word from="Hvorsjælen" to="Hvor sjælen" />
|
||||
<Word from="finderro" to="finder ro" />
|
||||
<Word from="sidderjeg" to="sidder jeg" />
|
||||
<Word from="tagerjo" to="tager jo" />
|
||||
<Word from="efterjeres" to="efter jeres" />
|
||||
<Word from="10O" to="100" />
|
||||
<Word from="besluttedejeg" to="besluttede jeg" />
|
||||
<Word from="varsket" to="var sket" />
|
||||
<Word from="uadskillige" to="uadskillelige" />
|
||||
<Word from="harjetlag" to="har jetlag" />
|
||||
<Word from="lkke" to="Ikke" />
|
||||
<Word from="lntet" to="Intet" />
|
||||
<Word from="afslørerjeg" to="afslører jeg" />
|
||||
<Word from="måjeg" to="må jeg" />
|
||||
<Word from="Vl" to="VI" />
|
||||
<Word from="atbygge" to="at bygge" />
|
||||
<Word from="detmakabre" to="det makabre" />
|
||||
<Word from="vilikke" to="vil ikke" />
|
||||
<Word from="talsmandbekræfter" to="talsmand bekræfter" />
|
||||
<Word from="vedatrenovere" to="ved at renovere" />
|
||||
<Word from="forsøgeratforstå" to="forsøger at forstå" />
|
||||
<Word from="ersket" to="er sket" />
|
||||
<Word from="morderpå" to="morder på" />
|
||||
<Word from="frifodiRosewood" to="fri fod i Rosewood" />
|
||||
<Word from="holdtpressemøde" to="holdt pressemøde" />
|
||||
<Word from="lngen" to="Ingen" />
|
||||
<Word from="lND" to="IND" />
|
||||
<Word from="henterjeg" to="henter jeg" />
|
||||
<Word from="lsabel" to="Isabel" />
|
||||
<Word from="lsabels" to="Isabels" />
|
||||
<Word from="vinderjo" to="vinder jo" />
|
||||
<Word from="rødmerjo" to="rødmer jo" />
|
||||
<Word from="etjakkesæt" to="et jakkesæt" />
|
||||
<Word from="glæderjeg" to="glæder jeg" />
|
||||
<Word from="lgen" to="Igen" />
|
||||
<Word from="lsær" to="Især" />
|
||||
<Word from="iparken" to="i parken" />
|
||||
<Word from="nårl" to="når I" />
|
||||
<Word from="tilA1" to="til A1" />
|
||||
<Word from="FBl" to="FBI" />
|
||||
<Word from="viljo" to="vil jo" />
|
||||
<Word from="detpå" to="det på" />
|
||||
<Word from="KIar" to="Klar" />
|
||||
<Word from="PIan" to="Plan" />
|
||||
<Word from="EIIer" to="Eller" />
|
||||
<Word from="FIot" to="Flot" />
|
||||
<Word from="AIIe" to="Alle" />
|
||||
<Word from="AIt" to="Alt" />
|
||||
<Word from="KIap" to="Klap" />
|
||||
<Word from="PIaza" to="Plaza" />
|
||||
<Word from="SIap" to="Slap" />
|
||||
<Word from="Iå" to="lå" />
|
||||
<Word from="BIing" to="Bling" />
|
||||
<Word from="GIade" to="Glade" />
|
||||
<Word from="Iejrbålssange" to="lejrbålssange" />
|
||||
<Word from="bedtjer" to="bedt jer" />
|
||||
<Word from="hørerjeg" to="hører jeg" />
|
||||
<Word from="Fårjeg" to="Får jeg" />
|
||||
<Word from="fikJames" to="fik James" />
|
||||
<Word from="atsnakke" to="at snakke" />
|
||||
<Word from="varkun" to="var kun" />
|
||||
<Word from="retterjeg" to="retter jeg" />
|
||||
<Word from="ernormale" to="er normale" />
|
||||
<Word from="viljeg" to="vil jeg" />
|
||||
<Word from="Sætjer" to="Sæt jer" />
|
||||
<Word from="udsatham" to="udsat ham" />
|
||||
<Word from="afen" to="af en" />
|
||||
<Word from="påjorden" to="på jorden" />
|
||||
<Word from="afdem" to="af dem" />
|
||||
<Word from="kmt" to="km/t" />
|
||||
</WholeWords>
|
||||
<PartialWordsAlways>
|
||||
<WordPart from="¤" to="o" />
|
||||
<WordPart from="IVI" to="M" />
|
||||
<WordPart from="lVI" to="M" />
|
||||
<WordPart from="IVl" to="M" />
|
||||
<WordPart from="lVl" to="M" />
|
||||
</PartialWordsAlways>
|
||||
<PartialWords>
|
||||
<!-- Will be used to check words not in dictionary -->
|
||||
<!-- If new word(s) exists in spelling dictionary, it(they) is accepted -->
|
||||
<WordPart from="fi" to="fi" />
|
||||
<WordPart from="fl" to="fl" />
|
||||
<WordPart from="/" to="l" />
|
||||
<WordPart from="vv" to="w" />
|
||||
<WordPart from="m" to="rn" />
|
||||
<WordPart from="l" to="i" />
|
||||
<WordPart from="€" to="e" />
|
||||
<WordPart from="I" to="l" />
|
||||
<WordPart from="c" to="o" />
|
||||
<WordPart from="i" to="t" />
|
||||
<WordPart from="cc" to="oo" />
|
||||
<WordPart from="ii" to="tt" />
|
||||
<WordPart from="n/" to="ry" />
|
||||
<WordPart from="ae" to="æ" />
|
||||
<!-- "f " will be two words -->
|
||||
<WordPart from="f" to="f " />
|
||||
<WordPart from="c" to="e" />
|
||||
<WordPart from="o" to="e" />
|
||||
<WordPart from="I" to="t" />
|
||||
<WordPart from="n" to="o" />
|
||||
<WordPart from="s" to="e" />
|
||||
<WordPart from="\A" to="Vi" />
|
||||
<WordPart from="n/" to="rv" />
|
||||
<WordPart from="Ã" to="Å" />
|
||||
<WordPart from="í" to="i" />
|
||||
</PartialWords>
|
||||
<WholeLines />
|
||||
<PartialLinesAlways />
|
||||
<PartialLines />
|
||||
<BeginLines>
|
||||
<Beginning from="-] " to="- I " />
|
||||
<Beginning from="- ] " to="- I " />
|
||||
<Beginning from="] " to="I " />
|
||||
<Beginning from="-| " to="- I " />
|
||||
<Beginning from="- | " to="- I " />
|
||||
</BeginLines>
|
||||
<EndLines />
|
||||
<RegularExpressions />
|
||||
</OCRFixReplaceList>
|
911
tools/SubtitleEdit/Dictionaries/de_DE_user.xml
Normal file
911
tools/SubtitleEdit/Dictionaries/de_DE_user.xml
Normal file
@ -0,0 +1,911 @@
|
||||
<words>
|
||||
<word>15er</word>
|
||||
<word>70er</word>
|
||||
<word>80er</word>
|
||||
<word>aah</word>
|
||||
<word>abend</word>
|
||||
<word>abenteuerlustigen</word>
|
||||
<word>abfrieren</word>
|
||||
<word>abgeblieben</word>
|
||||
<word>abgefackelt</word>
|
||||
<word>abgelichtet</word>
|
||||
<word>abgeluchst</word>
|
||||
<word>abgemurkst</word>
|
||||
<word>abgeschaut</word>
|
||||
<word>abgesoffen</word>
|
||||
<word>abgespaltet</word>
|
||||
<word>abgesprengt</word>
|
||||
<word>abgezockt</word>
|
||||
<word>abgöttisch</word>
|
||||
<word>abhaben</word>
|
||||
<word>abhäuten</word>
|
||||
<word>abkacheln</word>
|
||||
<word>ablegmöglichkeit</word>
|
||||
<word>ablief</word>
|
||||
<word>abrappeln</word>
|
||||
<word>abrasiert</word>
|
||||
<word>absäuft</word>
|
||||
<word>abschädeln</word>
|
||||
<word>abschlafft</word>
|
||||
<word>abschrubben</word>
|
||||
<word>abspann</word>
|
||||
<word>absprengung</word>
|
||||
<word>abstrullern</word>
|
||||
<word>abtanzen</word>
|
||||
<word>abtaster</word>
|
||||
<word>abtastern</word>
|
||||
<word>abwies</word>
|
||||
<word>abzugelten</word>
|
||||
<word>abzuhacken</word>
|
||||
<word>abzuladen</word>
|
||||
<word>abzuschirmen</word>
|
||||
<word>abzuschlachten</word>
|
||||
<word>abzuschleppen</word>
|
||||
<word>abzuschwören</word>
|
||||
<word>abzuwischen</word>
|
||||
<word>abzuzielen</word>
|
||||
<word>achillessehne</word>
|
||||
<word>achtern</word>
|
||||
<word>actiongeladene</word>
|
||||
<word>adrenalinschub</word>
|
||||
<word>aerobic</word>
|
||||
<word>afroamerikaner</word>
|
||||
<word>afroamerikanerin</word>
|
||||
<word>afrolocken</word>
|
||||
<word>ah</word>
|
||||
<word>äh</word>
|
||||
<word>aha</word>
|
||||
<word>ähem</word>
|
||||
<word>ähm</word>
|
||||
<word>akkordeonmusik</word>
|
||||
<word>algenpackung</word>
|
||||
<word>algenstreifen</word>
|
||||
<word>alkoholbedingt</word>
|
||||
<word>allerfeinsten</word>
|
||||
<word>allerhöchstens</word>
|
||||
<word>allzeit</word>
|
||||
<word>amüsier</word>
|
||||
<word>andersrum</word>
|
||||
<word>andockschacht</word>
|
||||
<word>andrücken</word>
|
||||
<word>aneinandergebaut</word>
|
||||
<word>aneinandergeschräubelt</word>
|
||||
<word>angenietet</word>
|
||||
<word>angeschleppt</word>
|
||||
<word>angsterfüllt</word>
|
||||
<word>anhast</word>
|
||||
<word>anhat</word>
|
||||
<word>anheuern</word>
|
||||
<word>anheuerten</word>
|
||||
<word>anholen</word>
|
||||
<word>anknabbern</word>
|
||||
<word>anluven</word>
|
||||
<word>annahm</word>
|
||||
<word>annullierungs</word>
|
||||
<word>anpiepsen</word>
|
||||
<word>anpiepst</word>
|
||||
<word>anpiept</word>
|
||||
<word>anschleicht</word>
|
||||
<word>anstecker</word>
|
||||
<word>antesten</word>
|
||||
<word>anzufassen</word>
|
||||
<word>anzufeuem</word>
|
||||
<word>anzuschneiden</word>
|
||||
<word>anzustecken</word>
|
||||
<word>anzuwerfen</word>
|
||||
<word>anzuzweifeln</word>
|
||||
<word>aorta</word>
|
||||
<word>arschkriecher</word>
|
||||
<word>asbestmatte</word>
|
||||
<word>astrein</word>
|
||||
<word>astreinen</word>
|
||||
<word>aszendenten</word>
|
||||
<word>attentatversuch</word>
|
||||
<word>aua</word>
|
||||
<word>audio</word>
|
||||
<word>aufblenden</word>
|
||||
<word>aufblühende</word>
|
||||
<word>aufgegabelt</word>
|
||||
<word>aufhören</word>
|
||||
<word>auf'm</word>
|
||||
<word>aufrechterhalten</word>
|
||||
<word>aufrechtzuerhalten</word>
|
||||
<word>aufreißer</word>
|
||||
<word>auf's</word>
|
||||
<word>aufweckphase</word>
|
||||
<word>aufzukreuzen</word>
|
||||
<word>aufzuladen</word>
|
||||
<word>aufzumuntern</word>
|
||||
<word>aufzupassen</word>
|
||||
<word>aufzuwachen</word>
|
||||
<word>aufzuwischen</word>
|
||||
<word>ausbremsen</word>
|
||||
<word>ausbruchsicher</word>
|
||||
<word>ausbügeln</word>
|
||||
<word>auschecken</word>
|
||||
<word>auseinanderliegen</word>
|
||||
<word>auseinandernehmen</word>
|
||||
<word>ausflippen</word>
|
||||
<word>ausgebohrte</word>
|
||||
<word>ausgeflippt</word>
|
||||
<word>ausgeflippter</word>
|
||||
<word>ausgekippt</word>
|
||||
<word>ausgerastet</word>
|
||||
<word>ausgereifteren</word>
|
||||
<word>ausgeschickt</word>
|
||||
<word>ausgetrickst</word>
|
||||
<word>auskannte</word>
|
||||
<word>aus'm</word>
|
||||
<word>ausräuchern</word>
|
||||
<word>ausschießen</word>
|
||||
<word>ausschläft</word>
|
||||
<word>ausschwärmen</word>
|
||||
<word>aussitzen</word>
|
||||
<word>austicken</word>
|
||||
<word>austricksen</word>
|
||||
<word>ausweglosigkeit</word>
|
||||
<word>auszuräuchern</word>
|
||||
<word>auszusagen</word>
|
||||
<word>auszusteigen</word>
|
||||
<word>auszutricksen</word>
|
||||
<word>autorisation</word>
|
||||
<word>autorisierungscode</word>
|
||||
<word>autsch</word>
|
||||
<word>aztekengold</word>
|
||||
<word>babylein</word>
|
||||
<word>babysitten</word>
|
||||
<word>babysitter</word>
|
||||
<word>babysitterin</word>
|
||||
<word>backbord</word>
|
||||
<word>backpfeife</word>
|
||||
<word>balkongroße</word>
|
||||
<word>bambussprossen</word>
|
||||
<word>bedauerns</word>
|
||||
<word>beeil</word>
|
||||
<word>beeilung</word>
|
||||
<word>befall</word>
|
||||
<word>befehlshabende</word>
|
||||
<word>befiel</word>
|
||||
<word>behalt</word>
|
||||
<word>beigetöne</word>
|
||||
<word>beiß</word>
|
||||
<word>beizugeben</word>
|
||||
<word>bekleckert</word>
|
||||
<word>bekomm</word>
|
||||
<word>bemüh</word>
|
||||
<word>benimm</word>
|
||||
<word>benutz</word>
|
||||
<word>bereitmachen</word>
|
||||
<word>berüchtigtsten</word>
|
||||
<word>berühr</word>
|
||||
<word>beschämendste</word>
|
||||
<word>bescheißen</word>
|
||||
<word>beschuldige</word>
|
||||
<word>beschuldigen</word>
|
||||
<word>besorg</word>
|
||||
<word>bestatter</word>
|
||||
<word>besteh</word>
|
||||
<word>bestell</word>
|
||||
<word>bestiehlt</word>
|
||||
<word>bestraf</word>
|
||||
<word>besuch</word>
|
||||
<word>beug</word>
|
||||
<word>beule</word>
|
||||
<word>bewach</word>
|
||||
<word>beweg</word>
|
||||
<word>bezahl</word>
|
||||
<word>bezirzt</word>
|
||||
<word>biedermannmaske</word>
|
||||
<word>bin's</word>
|
||||
<word>bio</word>
|
||||
<word>bissspuren</word>
|
||||
<word>bittersüß</word>
|
||||
<word>bittersüßer</word>
|
||||
<word>bittersüßes</word>
|
||||
<word>bleibt's</word>
|
||||
<word>blinzel</word>
|
||||
<word>blutleer</word>
|
||||
<word>blutsbrüder</word>
|
||||
<word>blutstropfen</word>
|
||||
<word>bowlingabend</word>
|
||||
<word>bowlingbahn</word>
|
||||
<word>bowlingkugel</word>
|
||||
<word>bowlingkugeln</word>
|
||||
<word>bowlingmannschaft</word>
|
||||
<word>bowlingteam</word>
|
||||
<word>bowlingturnier</word>
|
||||
<word>brabbeln</word>
|
||||
<word>brabbelt</word>
|
||||
<word>bramsegel</word>
|
||||
<word>brassen</word>
|
||||
<word>bravo</word>
|
||||
<word>brems</word>
|
||||
<word>brilliante</word>
|
||||
<word>bring's</word>
|
||||
<word>bringt's</word>
|
||||
<word>brüder</word>
|
||||
<word>brüllen</word>
|
||||
<word>bürgerkrieg</word>
|
||||
<word>büro</word>
|
||||
<word>bzw</word>
|
||||
<word>checken</word>
|
||||
<word>checkst</word>
|
||||
<word>checkt</word>
|
||||
<word>coach</word>
|
||||
<word>college</word>
|
||||
<word>cop</word>
|
||||
<word>countrymusik</word>
|
||||
<word>crewmitglied</word>
|
||||
<word>cruisen</word>
|
||||
<word>dabeihaben</word>
|
||||
<word>dämlichste</word>
|
||||
<word>darf's</word>
|
||||
<word>darling</word>
|
||||
<word>date</word>
|
||||
<word>dates</word>
|
||||
<word>dauert's</word>
|
||||
<word>davonfährst</word>
|
||||
<word>davonkamen</word>
|
||||
<word>davonliefen</word>
|
||||
<word>davonreiten</word>
|
||||
<word>davonzulaufen</word>
|
||||
<word>dazubehalten</word>
|
||||
<word>dazupassen</word>
|
||||
<word>dazupasste</word>
|
||||
<word>definitv</word>
|
||||
<word>deins</word>
|
||||
<word>deluxe</word>
|
||||
<word>dichtmachen</word>
|
||||
<word>dingi</word>
|
||||
<word>dingsbums</word>
|
||||
<word>dinner</word>
|
||||
<word>dinnerparty</word>
|
||||
<word>dino</word>
|
||||
<word>direktheit</word>
|
||||
<word>donner</word>
|
||||
<word>doppelzüngig</word>
|
||||
<word>doppelzüngiger</word>
|
||||
<word>dranbleiben</word>
|
||||
<word>dräng</word>
|
||||
<word>drankriegen</word>
|
||||
<word>draufgängerisch</word>
|
||||
<word>draufgeklatscht</word>
|
||||
<word>draufgestürzt</word>
|
||||
<word>draus</word>
|
||||
<word>drill</word>
|
||||
<word>drinblieb</word>
|
||||
<word>drinblieben</word>
|
||||
<word>dringeblieben</word>
|
||||
<word>drops</word>
|
||||
<word>drosselklappen</word>
|
||||
<word>drüben</word>
|
||||
<word>drüber</word>
|
||||
<word>drücken</word>
|
||||
<word>drυckvorgang</word>
|
||||
<word>dummerchen</word>
|
||||
<word>dumpfbacke</word>
|
||||
<word>durchatmen</word>
|
||||
<word>durchbluffen</word>
|
||||
<word>durchgeschmolzen</word>
|
||||
<word>durchlotsen</word>
|
||||
<word>durchquetschen</word>
|
||||
<word>durchschmuggeln</word>
|
||||
<word>durchtrainierten</word>
|
||||
<word>durchwalken</word>
|
||||
<word>durchzuschneiden</word>
|
||||
<word>durchzuspielen</word>
|
||||
<word>du's</word>
|
||||
<word>düster</word>
|
||||
<word>ehrlichsein</word>
|
||||
<word>eimerweise</word>
|
||||
<word>einfühlsam</word>
|
||||
<word>eingeparkt</word>
|
||||
<word>eingewechselt</word>
|
||||
<word>entlanglaufen</word>
|
||||
<word>erkenn</word>
|
||||
<word>erklär</word>
|
||||
<word>er's</word>
|
||||
<word>ersäufen</word>
|
||||
<word>erschaudern</word>
|
||||
<word>erschieß</word>
|
||||
<word>erschrick</word>
|
||||
<word>ersetz</word>
|
||||
<word>erstgeborene</word>
|
||||
<word>erstmal</word>
|
||||
<word>erzähl</word>
|
||||
<word>erzähl's</word>
|
||||
<word>eskortieren</word>
|
||||
<word>etc</word>
|
||||
<word>fahrgestellnummer</word>
|
||||
<word>fällt's</word>
|
||||
<word>fanden's</word>
|
||||
<word>fand's</word>
|
||||
<word>fang</word>
|
||||
<word>fanpost</word>
|
||||
<word>fantasiert</word>
|
||||
<word>farbklecks</word>
|
||||
<word>farbspray</word>
|
||||
<word>fass</word>
|
||||
<word>feier</word>
|
||||
<word>feinkostladen</word>
|
||||
<word>festzusitzen</word>
|
||||
<word>fiert</word>
|
||||
<word>find</word>
|
||||
<word>findet's</word>
|
||||
<word>find's</word>
|
||||
<word>fleischbällchen</word>
|
||||
<word>fliegen</word>
|
||||
<word>flimmerkiste</word>
|
||||
<word>frechdachs</word>
|
||||
<word>frechdachse</word>
|
||||
<word>freikam</word>
|
||||
<word>freikaufen</word>
|
||||
<word>fress</word>
|
||||
<word>freu</word>
|
||||
<word>freundchen</word>
|
||||
<word>frier</word>
|
||||
<word>frischling</word>
|
||||
<word>früher</word>
|
||||
<word>frühjahrsmüdigkeit</word>
|
||||
<word>fuffziger</word>
|
||||
<word>fühl</word>
|
||||
<word>fühlte</word>
|
||||
<word>füll</word>
|
||||
<word>funktioniert's</word>
|
||||
<word>für</word>
|
||||
<word>furchteinflößend</word>
|
||||
<word>furchteinflößende</word>
|
||||
<word>für'n</word>
|
||||
<word>für's</word>
|
||||
<word>furzen</word>
|
||||
<word>fuß</word>
|
||||
<word>füßen</word>
|
||||
<word>gab's</word>
|
||||
<word>geballer</word>
|
||||
<word>geben's</word>
|
||||
<word>gebetbuch</word>
|
||||
<word>geblinzelt</word>
|
||||
<word>geblufft</word>
|
||||
<word>geblutet</word>
|
||||
<word>gedudel</word>
|
||||
<word>gefällt's</word>
|
||||
<word>gefangennahme</word>
|
||||
<word>gefühl</word>
|
||||
<word>gefurzt</word>
|
||||
<word>gehopst</word>
|
||||
<word>gehörst</word>
|
||||
<word>gehört</word>
|
||||
<word>gehts</word>
|
||||
<word>geht's</word>
|
||||
<word>gehüpft</word>
|
||||
<word>gekapert</word>
|
||||
<word>gekniffen</word>
|
||||
<word>gekrabbelt</word>
|
||||
<word>gekratze</word>
|
||||
<word>gelöscht</word>
|
||||
<word>gemännert</word>
|
||||
<word>genieß</word>
|
||||
<word>genießen</word>
|
||||
<word>gentlemen</word>
|
||||
<word>gepennt</word>
|
||||
<word>gepiekt</word>
|
||||
<word>gepiept</word>
|
||||
<word>gequassel</word>
|
||||
<word>gerücht</word>
|
||||
<word>geschludert</word>
|
||||
<word>geschubbert</word>
|
||||
<word>geschuftet</word>
|
||||
<word>geschützgruppe</word>
|
||||
<word>gestoßen</word>
|
||||
<word>gesundbeterei</word>
|
||||
<word>gewieft</word>
|
||||
<word>gewissenskonflikte</word>
|
||||
<word>gewöhn</word>
|
||||
<word>gewundert</word>
|
||||
<word>gib's</word>
|
||||
<word>gibt's</word>
|
||||
<word>ging's</word>
|
||||
<word>glaub's</word>
|
||||
<word>glück</word>
|
||||
<word>glückstag</word>
|
||||
<word>gottseidank</word>
|
||||
<word>gottverdammt</word>
|
||||
<word>gottverdammte</word>
|
||||
<word>gottverdammten</word>
|
||||
<word>gottverdammter</word>
|
||||
<word>gourmet</word>
|
||||
<word>grabschen</word>
|
||||
<word>grad</word>
|
||||
<word>grade</word>
|
||||
<word>großen</word>
|
||||
<word>größeres</word>
|
||||
<word>grün</word>
|
||||
<word>guttun</word>
|
||||
<word>ha</word>
|
||||
<word>habeas</word>
|
||||
<word>haben's</word>
|
||||
<word>hab's</word>
|
||||
<word>habt's</word>
|
||||
<word>halt's</word>
|
||||
<word>hamsterbäckchen</word>
|
||||
<word>handauflegen</word>
|
||||
<word>häng</word>
|
||||
<word>happen</word>
|
||||
<word>happy</word>
|
||||
<word>hast's</word>
|
||||
<word>hat's</word>
|
||||
<word>häuser</word>
|
||||
<word>haut's</word>
|
||||
<word>heb</word>
|
||||
<word>heiß</word>
|
||||
<word>heißt</word>
|
||||
<word>hellsehen</word>
|
||||
<word>herumzuplanschen</word>
|
||||
<word>heul</word>
|
||||
<word>heut</word>
|
||||
<word>hey</word>
|
||||
<word>hierbleiben</word>
|
||||
<word>hierlassen</word>
|
||||
<word>hierzubleiben</word>
|
||||
<word>highwaybullen</word>
|
||||
<word>highwaychaoten</word>
|
||||
<word>hinbekommen</word>
|
||||
<word>hinfliegen</word>
|
||||
<word>hingelaufen</word>
|
||||
<word>hinknien</word>
|
||||
<word>hinschicken</word>
|
||||
<word>hinstecken</word>
|
||||
<word>hintendrauf</word>
|
||||
<word>hintenrum</word>
|
||||
<word>hitzkopf</word>
|
||||
<word>hm</word>
|
||||
<word>hmm</word>
|
||||
<word>ho</word>
|
||||
<word>hochgehenlassen</word>
|
||||
<word>hochgeklettert</word>
|
||||
<word>hochheben</word>
|
||||
<word>hochhelfen</word>
|
||||
<word>hochsehen</word>
|
||||
<word>hochspringen</word>
|
||||
<word>höchstpersönlich</word>
|
||||
<word>hohepriesterin</word>
|
||||
<word>hokuspokus</word>
|
||||
<word>hol's</word>
|
||||
<word>hören</word>
|
||||
<word>hör's</word>
|
||||
<word>huckepackfahrt</word>
|
||||
<word>hühnchen</word>
|
||||
<word>hüpf</word>
|
||||
<word>ich's</word>
|
||||
<word>idiotensichere</word>
|
||||
<word>igitt</word>
|
||||
<word>ihr's</word>
|
||||
<word>indisponiert</word>
|
||||
<word>innung</word>
|
||||
<word>inschriften</word>
|
||||
<word>irgendwann</word>
|
||||
<word>irgendwen</word>
|
||||
<word>irgendwoher</word>
|
||||
<word>irrgarten</word>
|
||||
<word>ist</word>
|
||||
<word>ist's</word>
|
||||
<word>jackpot</word>
|
||||
<word>jade</word>
|
||||
<word>jauchegrube</word>
|
||||
<word>jawohl</word>
|
||||
<word>jawoll</word>
|
||||
<word>jockey</word>
|
||||
<word>jogging</word>
|
||||
<word>jüngerer</word>
|
||||
<word>jungs</word>
|
||||
<word>kaffeekränzchen</word>
|
||||
<word>kakerlake</word>
|
||||
<word>kämm</word>
|
||||
<word>kämpf</word>
|
||||
<word>kämpfernatur</word>
|
||||
<word>kann's</word>
|
||||
<word>karma</word>
|
||||
<word>katzenstreu</word>
|
||||
<word>keksdose</word>
|
||||
<word>klappt's</word>
|
||||
<word>klaps</word>
|
||||
<word>klarzustellen</word>
|
||||
<word>klingelt's</word>
|
||||
<word>klodeckel</word>
|
||||
<word>klügere</word>
|
||||
<word>klunker</word>
|
||||
<word>knuddeln</word>
|
||||
<word>knutschfleck</word>
|
||||
<word>kokosmilch</word>
|
||||
<word>kommodore</word>
|
||||
<word>kommt's</word>
|
||||
<word>können</word>
|
||||
<word>konversieren</word>
|
||||
<word>konzentrier</word>
|
||||
<word>kopf</word>
|
||||
<word>kostümbildnerin</word>
|
||||
<word>kragenweite</word>
|
||||
<word>krankgemeldet</word>
|
||||
<word>krankgeschrieben</word>
|
||||
<word>krautsalat</word>
|
||||
<word>kreissaal</word>
|
||||
<word>kriech</word>
|
||||
<word>krieg</word>
|
||||
<word>krieg's</word>
|
||||
<word>krösus</word>
|
||||
<word>krümelmonster</word>
|
||||
<word>kuck</word>
|
||||
<word>kucken</word>
|
||||
<word>kuckt</word>
|
||||
<word>kümmer</word>
|
||||
<word>kümmere</word>
|
||||
<word>kümmert's</word>
|
||||
<word>küsst</word>
|
||||
<word>lahmarschiger</word>
|
||||
<word>lahmgelegt</word>
|
||||
<word>lammkeule</word>
|
||||
<word>läuft's</word>
|
||||
<word>lausch</word>
|
||||
<word>lehn</word>
|
||||
<word>leichtert</word>
|
||||
<word>leid</word>
|
||||
<word>lieg</word>
|
||||
<word>liegt's</word>
|
||||
<word>löckchen</word>
|
||||
<word>lokus</word>
|
||||
<word>lolli</word>
|
||||
<word>look</word>
|
||||
<word>looping</word>
|
||||
<word>lösch</word>
|
||||
<word>lösegeld</word>
|
||||
<word>lösen</word>
|
||||
<word>losziehen</word>
|
||||
<word>lotsengeld</word>
|
||||
<word>lover</word>
|
||||
<word>lüg</word>
|
||||
<word>lügen</word>
|
||||
<word>luvt</word>
|
||||
<word>machen's</word>
|
||||
<word>mach's</word>
|
||||
<word>mag's</word>
|
||||
<word>mahlstrom</word>
|
||||
<word>mampfen</word>
|
||||
<word>maniküre</word>
|
||||
<word>man's</word>
|
||||
<word>marotte</word>
|
||||
<word>mathe</word>
|
||||
<word>medaillon</word>
|
||||
<word>mein's</word>
|
||||
<word>meistverkauften</word>
|
||||
<word>memme</word>
|
||||
<word>merkt's</word>
|
||||
<word>mir's</word>
|
||||
<word>mistkerl</word>
|
||||
<word>mitnimmt</word>
|
||||
<word>model</word>
|
||||
<word>modeljob</word>
|
||||
<word>models</word>
|
||||
<word>monds</word>
|
||||
<word>morgengrauen</word>
|
||||
<word>na</word>
|
||||
<word>nachgejagt</word>
|
||||
<word>nachmittag</word>
|
||||
<word>nacht</word>
|
||||
<word>näher</word>
|
||||
<word>näherkommen</word>
|
||||
<word>nasebohren</word>
|
||||
<word>nehm</word>
|
||||
<word>nehmen's</word>
|
||||
<word>nenn</word>
|
||||
<word>ner</word>
|
||||
<word>nerv</word>
|
||||
<word>nimm's</word>
|
||||
<word>notizblock</word>
|
||||
<word>nüchtern</word>
|
||||
<word>nuller</word>
|
||||
<word>ob's</word>
|
||||
<word>offensteht</word>
|
||||
<word>ok</word>
|
||||
<word>ölverschmierten</word>
|
||||
<word>paarmal</word>
|
||||
<word>pack</word>
|
||||
<word>parlamentär</word>
|
||||
<word>parlamentärflagge</word>
|
||||
<word>pasch</word>
|
||||
<word>passenderweise</word>
|
||||
<word>pedant</word>
|
||||
<word>pelznieser</word>
|
||||
<word>pennen</word>
|
||||
<word>pfaffenrock</word>
|
||||
<word>pfirsichfarben</word>
|
||||
<word>pfui</word>
|
||||
<word>pfundbüro</word>
|
||||
<word>pfündchen</word>
|
||||
<word>pfützen</word>
|
||||
<word>pieken</word>
|
||||
<word>piekst</word>
|
||||
<word>piepton</word>
|
||||
<word>piept's</word>
|
||||
<word>pinguinfrack</word>
|
||||
<word>pinkeln</word>
|
||||
<word>pinkelt</word>
|
||||
<word>piratenmäßig</word>
|
||||
<word>pizzageschäft</word>
|
||||
<word>plattgemacht</word>
|
||||
<word>plemplem</word>
|
||||
<word>post</word>
|
||||
<word>probier</word>
|
||||
<word>probier's</word>
|
||||
<word>promenadenmischung</word>
|
||||
<word>protologie</word>
|
||||
<word>provozier</word>
|
||||
<word>prüf</word>
|
||||
<word>prüfen</word>
|
||||
<word>prügeleien</word>
|
||||
<word>pummelig</word>
|
||||
<word>punkt</word>
|
||||
<word>pupsen</word>
|
||||
<word>quäl</word>
|
||||
<word>quasseln</word>
|
||||
<word>ranfahren</word>
|
||||
<word>rangehen</word>
|
||||
<word>rangelei</word>
|
||||
<word>rankommen</word>
|
||||
<word>rasierer</word>
|
||||
<word>rasur</word>
|
||||
<word>rauch</word>
|
||||
<word>rauf</word>
|
||||
<word>rauferei</word>
|
||||
<word>raufgehen</word>
|
||||
<word>raufkommen</word>
|
||||
<word>rausbringen</word>
|
||||
<word>rausfahren</word>
|
||||
<word>rausfinden</word>
|
||||
<word>rausfliegen</word>
|
||||
<word>rausgeflogen</word>
|
||||
<word>rausgefunden</word>
|
||||
<word>rausgehen</word>
|
||||
<word>rausgeklettert</word>
|
||||
<word>rausgekommen</word>
|
||||
<word>rausgekriegt</word>
|
||||
<word>rausgeschickt</word>
|
||||
<word>rausgeschmissen</word>
|
||||
<word>rausgeschnitten</word>
|
||||
<word>raushalten</word>
|
||||
<word>rausholen</word>
|
||||
<word>rauskommen</word>
|
||||
<word>rauskriegen</word>
|
||||
<word>rauslassen</word>
|
||||
<word>rauslaufen</word>
|
||||
<word>rausnehmen</word>
|
||||
<word>rausreden</word>
|
||||
<word>rausschaufeln</word>
|
||||
<word>rausschicken</word>
|
||||
<word>rausschmeißen</word>
|
||||
<word>rausstellen</word>
|
||||
<word>rauswerfen</word>
|
||||
<word>rauszubringen</word>
|
||||
<word>rauszufinden</word>
|
||||
<word>rauszuholen</word>
|
||||
<word>red</word>
|
||||
<word>reffleine</word>
|
||||
<word>refft</word>
|
||||
<word>regnet's</word>
|
||||
<word>reicht's</word>
|
||||
<word>reinbeißen</word>
|
||||
<word>reinbringen</word>
|
||||
<word>reingedrückt</word>
|
||||
<word>reingehängt</word>
|
||||
<word>reingekommen</word>
|
||||
<word>reingelassen</word>
|
||||
<word>reingelegt</word>
|
||||
<word>reinlegen</word>
|
||||
<word>reintun</word>
|
||||
<word>rüber</word>
|
||||
<word>ruder</word>
|
||||
<word>ruh</word>
|
||||
<word>rum</word>
|
||||
<word>rumkriegen</word>
|
||||
<word>rumsitzen</word>
|
||||
<word>rumspukt</word>
|
||||
<word>rumstehen</word>
|
||||
<word>rumsteht</word>
|
||||
<word>rumtreiben</word>
|
||||
<word>runterbringen</word>
|
||||
<word>runterfallen</word>
|
||||
<word>runtergefallen</word>
|
||||
<word>runterkommen</word>
|
||||
<word>runterkurbeln</word>
|
||||
<word>rüpel</word>
|
||||
<word>rüssel</word>
|
||||
<word>sag's</word>
|
||||
<word>särge</word>
|
||||
<word>saßen</word>
|
||||
<word>säuft</word>
|
||||
<word>schäm</word>
|
||||
<word>scheidebecher</word>
|
||||
<word>scheiß</word>
|
||||
<word>scheißdreck</word>
|
||||
<word>scheiße</word>
|
||||
<word>scheißegal</word>
|
||||
<word>scheißkahn</word>
|
||||
<word>schieb</word>
|
||||
<word>schieß</word>
|
||||
<word>schlaf</word>
|
||||
<word>schleimer</word>
|
||||
<word>schließ</word>
|
||||
<word>schluck</word>
|
||||
<word>schmeiß</word>
|
||||
<word>schmier</word>
|
||||
<word>schnall</word>
|
||||
<word>schnapp</word>
|
||||
<word>schnipp</word>
|
||||
<word>schokoriegel</word>
|
||||
<word>schöner</word>
|
||||
<word>schotbruch</word>
|
||||
<word>schüsse</word>
|
||||
<word>schütze</word>
|
||||
<word>schwimm</word>
|
||||
<word>schwör</word>
|
||||
<word>schwurgerichtsverfahren</word>
|
||||
<word>seh</word>
|
||||
<word>seh's</word>
|
||||
<word>sei's</word>
|
||||
<word>selbstgemacht</word>
|
||||
<word>selbstverstümmelungen</word>
|
||||
<word>setz</word>
|
||||
<word>sexspielzeug</word>
|
||||
<word>shirt</word>
|
||||
<word>shoppen</word>
|
||||
<word>sich's</word>
|
||||
<word>siegerwagen</word>
|
||||
<word>sieh's</word>
|
||||
<word>sie's</word>
|
||||
<word>so'n</word>
|
||||
<word>sorg</word>
|
||||
<word>sorry</word>
|
||||
<word>spar</word>
|
||||
<word>spaß</word>
|
||||
<word>später</word>
|
||||
<word>spiel</word>
|
||||
<word>spinn</word>
|
||||
<word>sportsgeist</word>
|
||||
<word>spott</word>
|
||||
<word>spuck</word>
|
||||
<word>spuck's</word>
|
||||
<word>spül</word>
|
||||
<word>spür</word>
|
||||
<word>steht's</word>
|
||||
<word>stimmt's</word>
|
||||
<word>stinkfaul</word>
|
||||
<word>stinksauer</word>
|
||||
<word>stinkt's</word>
|
||||
<word>stop</word>
|
||||
<word>strandhaus</word>
|
||||
<word>straßen</word>
|
||||
<word>straßenseite</word>
|
||||
<word>strombetriebene</word>
|
||||
<word>stuntmänner</word>
|
||||
<word>sturheit</word>
|
||||
<word>stürzte</word>
|
||||
<word>stütz</word>
|
||||
<word>style</word>
|
||||
<word>süden</word>
|
||||
<word>suhlen</word>
|
||||
<word>sülzen</word>
|
||||
<word>sünder</word>
|
||||
<word>supermodel</word>
|
||||
<word>surreal</word>
|
||||
<word>tabula</word>
|
||||
<word>tagchen</word>
|
||||
<word>tat's</word>
|
||||
<word>tausch</word>
|
||||
<word>teamgeist</word>
|
||||
<word>teen</word>
|
||||
<word>teenies</word>
|
||||
<word>tentakel</word>
|
||||
<word>tentakelig</word>
|
||||
<word>tiefergelegt</word>
|
||||
<word>tiefgefrorene</word>
|
||||
<word>tja</word>
|
||||
<word>töle</word>
|
||||
<word>tötest</word>
|
||||
<word>totgeglaubte</word>
|
||||
<word>totzukriegen</word>
|
||||
<word>totzulachen</word>
|
||||
<word>trag</word>
|
||||
<word>trifft's</word>
|
||||
<word>trinkergurke</word>
|
||||
<word>trinkerkranz</word>
|
||||
<word>tür</word>
|
||||
<word>türen</word>
|
||||
<word>tu's</word>
|
||||
<word>tut's</word>
|
||||
<word>über</word>
|
||||
<word>überfallen</word>
|
||||
<word>überfordert</word>
|
||||
<word>übergeben</word>
|
||||
<word>überlass</word>
|
||||
<word>überleg</word>
|
||||
<word>überleg's</word>
|
||||
<word>übernachten</word>
|
||||
<word>überprüfen</word>
|
||||
<word>überprüft</word>
|
||||
<word>übertreib</word>
|
||||
<word>übertreib's</word>
|
||||
<word>überzeugend</word>
|
||||
<word>übrig</word>
|
||||
<word>um's</word>
|
||||
<word>umweltschädlich</word>
|
||||
<word>unbarmherzigkeit</word>
|
||||
<word>unbefahrenen</word>
|
||||
<word>undercover</word>
|
||||
<word>unhilfreich</word>
|
||||
<word>unsensibel</word>
|
||||
<word>unterkühlt</word>
|
||||
<word>unternimm</word>
|
||||
<word>unterschreib</word>
|
||||
<word>usw</word>
|
||||
<word>veräppel</word>
|
||||
<word>verarsch</word>
|
||||
<word>verbrenn</word>
|
||||
<word>vergess</word>
|
||||
<word>verkabeln</word>
|
||||
<word>verkackt</word>
|
||||
<word>verlier</word>
|
||||
<word>verpass</word>
|
||||
<word>verrückteste</word>
|
||||
<word>verrücktesten</word>
|
||||
<word>versuch's</word>
|
||||
<word>versucht's</word>
|
||||
<word>vietnamesisch</word>
|
||||
<word>vollgekotzt</word>
|
||||
<word>volltanken</word>
|
||||
<word>vorbeigeschaut</word>
|
||||
<word>vordrängeln</word>
|
||||
<word>vorzünden</word>
|
||||
<word>wag</word>
|
||||
<word>wähl</word>
|
||||
<word>wann's</word>
|
||||
<word>wär</word>
|
||||
<word>wären's</word>
|
||||
<word>war's</word>
|
||||
<word>wär's</word>
|
||||
<word>webeleinen</word>
|
||||
<word>weia</word>
|
||||
<word>weiß</word>
|
||||
<word>weiterschlafen</word>
|
||||
<word>wenn's</word>
|
||||
<word>werd</word>
|
||||
<word>wer's</word>
|
||||
<word>whiskey</word>
|
||||
<word>wiederhören</word>
|
||||
<word>wie's</word>
|
||||
<word>will's</word>
|
||||
<word>winsch</word>
|
||||
<word>wird's</word>
|
||||
<word>wir's</word>
|
||||
<word>witzfigur</word>
|
||||
<word>woandershin</word>
|
||||
<word>wo's</word>
|
||||
<word>wow</word>
|
||||
<word>wrackteile</word>
|
||||
<word>wünsch</word>
|
||||
<word>würd</word>
|
||||
<word>würden</word>
|
||||
<word>würd's</word>
|
||||
<word>wüssten</word>
|
||||
<word>wüste</word>
|
||||
<word>wyvern</word>
|
||||
<word>zähneputzen</word>
|
||||
<word>zecke</word>
|
||||
<word>zeig's</word>
|
||||
<word>zeisinge</word>
|
||||
<word>zieht's</word>
|
||||
<word>zuhause</word>
|
||||
<word>zurückgepfiffen</word>
|
||||
<word>zurückmachen</word>
|
||||
<word>zurückzulassen</word>
|
||||
<word>zusammengekettet</word>
|
||||
<word>zusammenschlägt</word>
|
||||
</words>
|
1341
tools/SubtitleEdit/Dictionaries/de_names.xml
Normal file
1341
tools/SubtitleEdit/Dictionaries/de_names.xml
Normal file
File diff suppressed because it is too large
Load Diff
7059
tools/SubtitleEdit/Dictionaries/deu_OCRFixReplaceList.xml
Normal file
7059
tools/SubtitleEdit/Dictionaries/deu_OCRFixReplaceList.xml
Normal file
File diff suppressed because it is too large
Load Diff
108
tools/SubtitleEdit/Dictionaries/el_NoBreakAfterList.xml
Normal file
108
tools/SubtitleEdit/Dictionaries/el_NoBreakAfterList.xml
Normal file
@ -0,0 +1,108 @@
|
||||
<NoBreakAfterList>
|
||||
<Item>ένα</Item>
|
||||
<Item>έναν</Item>
|
||||
<Item>ένας</Item>
|
||||
<Item>έχει</Item>
|
||||
<Item>έχεις</Item>
|
||||
<Item>έχετε</Item>
|
||||
<Item>έχουμε</Item>
|
||||
<Item>έχουν</Item>
|
||||
<Item>έχω</Item>
|
||||
<Item>έως</Item>
|
||||
<Item>αν</Item>
|
||||
<Item>ανά</Item>
|
||||
<Item>αντί</Item>
|
||||
<Item>από</Item>
|
||||
<Item>ας</Item>
|
||||
<Item>αυτή</Item>
|
||||
<Item>αυτήν</Item>
|
||||
<Item>αυτής</Item>
|
||||
<Item>αυτοί</Item>
|
||||
<Item>αυτού</Item>
|
||||
<Item>αυτό</Item>
|
||||
<Item>αυτόν</Item>
|
||||
<Item>αυτός</Item>
|
||||
<Item>για</Item>
|
||||
<Item>για να</Item>
|
||||
<Item>δεν</Item>
|
||||
<Item>είχα</Item>
|
||||
<Item>είχαμε</Item>
|
||||
<Item>είχαν</Item>
|
||||
<Item>είχατε</Item>
|
||||
<Item>είχε</Item>
|
||||
<Item>είχες</Item>
|
||||
<Item>εγώ</Item>
|
||||
<Item>εις</Item>
|
||||
<Item>εμείς</Item>
|
||||
<Item>εν</Item>
|
||||
<Item>ενός</Item>
|
||||
<Item>εσείς</Item>
|
||||
<Item>εσύ</Item>
|
||||
<Item>η</Item>
|
||||
<Item>θα</Item>
|
||||
<Item>κάθε</Item>
|
||||
<Item>και</Item>
|
||||
<Item>κατά</Item>
|
||||
<Item>κατιτίς</Item>
|
||||
<Item>κι</Item>
|
||||
<Item>μάς</Item>
|
||||
<Item>μία</Item>
|
||||
<Item>μίαν</Item>
|
||||
<Item>μίας</Item>
|
||||
<Item>με</Item>
|
||||
<Item>μη</Item>
|
||||
<Item>μην</Item>
|
||||
<Item>μια</Item>
|
||||
<Item>μιαν</Item>
|
||||
<Item>μιας</Item>
|
||||
<Item>μου</Item>
|
||||
<Item>μού</Item>
|
||||
<Item>μόνο</Item>
|
||||
<Item>να</Item>
|
||||
<Item>ο</Item>
|
||||
<Item>οι</Item>
|
||||
<Item>οτιδήποτε</Item>
|
||||
<Item>πάσα</Item>
|
||||
<Item>πιο</Item>
|
||||
<Item>πως</Item>
|
||||
<Item>πώς</Item>
|
||||
<Item>σάς</Item>
|
||||
<Item>σα</Item>
|
||||
<Item>σαν</Item>
|
||||
<Item>σας</Item>
|
||||
<Item>σε</Item>
|
||||
<Item>σου</Item>
|
||||
<Item>σού</Item>
|
||||
<Item>στα</Item>
|
||||
<Item>στη</Item>
|
||||
<Item>στην</Item>
|
||||
<Item>στης</Item>
|
||||
<Item>στις</Item>
|
||||
<Item>στο</Item>
|
||||
<Item>στον</Item>
|
||||
<Item>στου</Item>
|
||||
<Item>στους</Item>
|
||||
<Item>στων</Item>
|
||||
<Item>τα</Item>
|
||||
<Item>τη</Item>
|
||||
<Item>την</Item>
|
||||
<Item>της</Item>
|
||||
<Item>τι</Item>
|
||||
<Item>τις</Item>
|
||||
<Item>το</Item>
|
||||
<Item>τοις</Item>
|
||||
<Item>τον</Item>
|
||||
<Item>του</Item>
|
||||
<Item>τους</Item>
|
||||
<Item>τού</Item>
|
||||
<Item>τούς</Item>
|
||||
<Item>των</Item>
|
||||
<Item>υπό</Item>
|
||||
<Item>χωρίς</Item>
|
||||
<Item>ως</Item>
|
||||
<Item>ό,τι</Item>
|
||||
<Item>όντως</Item>
|
||||
<Item>όσο</Item>
|
||||
<Item>ότι</Item>
|
||||
<Item>προς</Item>
|
||||
</NoBreakAfterList>
|
7
tools/SubtitleEdit/Dictionaries/en_NoBreakAfterList.xml
Normal file
7
tools/SubtitleEdit/Dictionaries/en_NoBreakAfterList.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<NoBreakAfterList>
|
||||
<Item>Dr</Item>
|
||||
<Item>Dr.</Item>
|
||||
<Item>Mr.</Item>
|
||||
<Item>Mrs.</Item>
|
||||
<Item>Ms.</Item>
|
||||
</NoBreakAfterList>
|
3106
tools/SubtitleEdit/Dictionaries/en_US.aff
Normal file
3106
tools/SubtitleEdit/Dictionaries/en_US.aff
Normal file
File diff suppressed because it is too large
Load Diff
52891
tools/SubtitleEdit/Dictionaries/en_US.dic
Normal file
52891
tools/SubtitleEdit/Dictionaries/en_US.dic
Normal file
File diff suppressed because it is too large
Load Diff
436
tools/SubtitleEdit/Dictionaries/en_US_user.xml
Normal file
436
tools/SubtitleEdit/Dictionaries/en_US_user.xml
Normal file
@ -0,0 +1,436 @@
|
||||
<words>
|
||||
<word>50s</word>
|
||||
<word>9/11</word>
|
||||
<word>a.m.</word>
|
||||
<word>actinium</word>
|
||||
<word>adrenocorticotropic</word>
|
||||
<word>advisors</word>
|
||||
<word>aeroplanes</word>
|
||||
<word>ahh</word>
|
||||
<word>ahhhh</word>
|
||||
<word>aioli</word>
|
||||
<word>ajit</word>
|
||||
<word>aluminium</word>
|
||||
<word>aluminum</word>
|
||||
<word>americium</word>
|
||||
<word>amnio</word>
|
||||
<word>amygdala</word>
|
||||
<word>anastomosis</word>
|
||||
<word>anonymized</word>
|
||||
<word>anthropomorphize</word>
|
||||
<word>antimony</word>
|
||||
<word>apologise</word>
|
||||
<word>appétit</word>
|
||||
<word>argon</word>
|
||||
<word>arrhythmias</word>
|
||||
<word>arsenic</word>
|
||||
<word>arses</word>
|
||||
<word>arteritis</word>
|
||||
<word>astatine</word>
|
||||
<word>astrometry</word>
|
||||
<word>attosecond</word>
|
||||
<word>autotrophs</word>
|
||||
<word>axe</word>
|
||||
<word>backsplashes</word>
|
||||
<word>barista</word>
|
||||
<word>barium</word>
|
||||
<word>behaviour</word>
|
||||
<word>beheadings</word>
|
||||
<word>berkelium</word>
|
||||
<word>beryllium</word>
|
||||
<word>bismuth</word>
|
||||
<word>blonde</word>
|
||||
<word>blowjobs</word>
|
||||
<word>bluejacked</word>
|
||||
<word>blushy</word>
|
||||
<word>bohrium</word>
|
||||
<word>bona fide</word>
|
||||
<word>boneyard</word>
|
||||
<word>boron</word>
|
||||
<word>bradycardia</word>
|
||||
<word>bradycardic</word>
|
||||
<word>braniac</word>
|
||||
<word>breakin'</word>
|
||||
<word>bromine</word>
|
||||
<word>busses</word>
|
||||
<word>but</word>
|
||||
<word>butterflyfish</word>
|
||||
<word>butthead</word>
|
||||
<word>butthole</word>
|
||||
<word>buzzkill</word>
|
||||
<word>cadmium</word>
|
||||
<word>caesium</word>
|
||||
<word>cahill's</word>
|
||||
<word>calcium</word>
|
||||
<word>californium</word>
|
||||
<word>carbon</word>
|
||||
<word>cardiothoracic</word>
|
||||
<word>catalogue</word>
|
||||
<word>catalogued</word>
|
||||
<word>'cause</word>
|
||||
<word>centimetres</word>
|
||||
<word>cerium</word>
|
||||
<word>cesium</word>
|
||||
<word>children's</word>
|
||||
<word>chitters</word>
|
||||
<word>chlorine</word>
|
||||
<word>chromium</word>
|
||||
<word>clanky</word>
|
||||
<word>cliché</word>
|
||||
<word>clozapine</word>
|
||||
<word>cobalt</word>
|
||||
<word>collywobbles</word>
|
||||
<word>colonoscopy</word>
|
||||
<word>colours</word>
|
||||
<word>contractualism</word>
|
||||
<word>copernicium</word>
|
||||
<word>copper</word>
|
||||
<word>copperish</word>
|
||||
<word>cosy</word>
|
||||
<word>cottonoid</word>
|
||||
<word>could've</word>
|
||||
<word>craniotomy</word>
|
||||
<word>cryo</word>
|
||||
<word>cryotube</word>
|
||||
<word>cudgelled</word>
|
||||
<word>curium</word>
|
||||
<word>cyanotic</word>
|
||||
<word>darmstadtium</word>
|
||||
<word>darndest</word>
|
||||
<word>decompensating</word>
|
||||
<word>defendable</word>
|
||||
<word>defibrillation</word>
|
||||
<word>dialogue</word>
|
||||
<word>dipshit</word>
|
||||
<word>disorderlies</word>
|
||||
<word>doofus</word>
|
||||
<word>douchey</word>
|
||||
<word>dreamt</word>
|
||||
<word>dubnium</word>
|
||||
<word>dysesthesia</word>
|
||||
<word>dysprosium</word>
|
||||
<word>einsteinium</word>
|
||||
<word>'em</word>
|
||||
<word>emoji</word>
|
||||
<word>endeth</word>
|
||||
<word>episiotomy</word>
|
||||
<word>erbium</word>
|
||||
<word>esophaguses</word>
|
||||
<word>euro</word>
|
||||
<word>europium</word>
|
||||
<word>euros</word>
|
||||
<word>evaporite</word>
|
||||
<word>everything's</word>
|
||||
<word>extradural</word>
|
||||
<word>faggot</word>
|
||||
<word>falafel</word>
|
||||
<word>fallin'</word>
|
||||
<word>favour</word>
|
||||
<word>favoured</word>
|
||||
<word>favourite</word>
|
||||
<word>fbi's</word>
|
||||
<word>fermium</word>
|
||||
<word>fiancé</word>
|
||||
<word>fiancée</word>
|
||||
<word>financials</word>
|
||||
<word>flavour</word>
|
||||
<word>flavours</word>
|
||||
<word>fluorine</word>
|
||||
<word>flushin'</word>
|
||||
<word>flyer</word>
|
||||
<word>francium</word>
|
||||
<word>fuckable</word>
|
||||
<word>fundraiser</word>
|
||||
<word>gadolinium</word>
|
||||
<word>gallium</word>
|
||||
<word>ganglioneuralgia</word>
|
||||
<word>gastroenterologists</word>
|
||||
<word>geez</word>
|
||||
<word>gemensheidt</word>
|
||||
<word>generationally</word>
|
||||
<word>germanium</word>
|
||||
<word>giancarlo</word>
|
||||
<word>gigabit</word>
|
||||
<word>glioma</word>
|
||||
<word>glossopharyngeal</word>
|
||||
<word>glowy</word>
|
||||
<word>goddamned</word>
|
||||
<word>golconda</word>
|
||||
<word>gold</word>
|
||||
<word>gracilis</word>
|
||||
<word>guys'll</word>
|
||||
<word>hafnium</word>
|
||||
<word>hashtag</word>
|
||||
<word>hassium</word>
|
||||
<word>hatchling</word>
|
||||
<word>heh</word>
|
||||
<word>helium</word>
|
||||
<word>heloooooo</word>
|
||||
<word>hematoma</word>
|
||||
<word>hiei</word>
|
||||
<word>hijab</word>
|
||||
<word>hm</word>
|
||||
<word>holmium</word>
|
||||
<word>hottie</word>
|
||||
<word>houseguests</word>
|
||||
<word>how'd</word>
|
||||
<word>how're</word>
|
||||
<word>humvee</word>
|
||||
<word>hydrogen</word>
|
||||
<word>hypotensive</word>
|
||||
<word>hypothermic</word>
|
||||
<word>immunotherapy</word>
|
||||
<word>incontinentia</word>
|
||||
<word>indium</word>
|
||||
<word>intercostal</word>
|
||||
<word>intrapericardial</word>
|
||||
<word>intubate</word>
|
||||
<word>iodine</word>
|
||||
<word>iridium</word>
|
||||
<word>iron</word>
|
||||
<word>ischemia</word>
|
||||
<word>isobutyric</word>
|
||||
<word>jeopardised</word>
|
||||
<word>jewellery</word>
|
||||
<word>jizz</word>
|
||||
<word>jizzed</word>
|
||||
<word>jizzing</word>
|
||||
<word>just</word>
|
||||
<word>keychain</word>
|
||||
<word>kid'll</word>
|
||||
<word>krypton</word>
|
||||
<word>kuwabara-kun</word>
|
||||
<word>labelled</word>
|
||||
<word>lanthanum</word>
|
||||
<word>laparoscopically</word>
|
||||
<word>laparotomy</word>
|
||||
<word>laryngectomy</word>
|
||||
<word>laryngopharyngeal</word>
|
||||
<word>lawrencium</word>
|
||||
<word>lead</word>
|
||||
<word>lithium</word>
|
||||
<word>lobectomy</word>
|
||||
<word>loudmouth</word>
|
||||
<word>loupe</word>
|
||||
<word>lutetium</word>
|
||||
<word>magnesium</word>
|
||||
<word>manganese</word>
|
||||
<word>meds</word>
|
||||
<word>meitnerium</word>
|
||||
<word>mendelevium</word>
|
||||
<word>men's</word>
|
||||
<word>mercury</word>
|
||||
<word>mesenteric</word>
|
||||
<word>mesentery</word>
|
||||
<word>metres</word>
|
||||
<word>microbiome</word>
|
||||
<word>micrografting</word>
|
||||
<word>microvascular</word>
|
||||
<word>might've</word>
|
||||
<word>millennia</word>
|
||||
<word>milliamp</word>
|
||||
<word>milliamps</word>
|
||||
<word>mmm</word>
|
||||
<word>mmmmm</word>
|
||||
<word>mojo</word>
|
||||
<word>molybdenum</word>
|
||||
<word>moonlet</word>
|
||||
<word>multispectral</word>
|
||||
<word>must've</word>
|
||||
<word>nah</word>
|
||||
<word>namaste</word>
|
||||
<word>nasties</word>
|
||||
<word>neighbour</word>
|
||||
<word>neighbourhood</word>
|
||||
<word>neighbours</word>
|
||||
<word>neodymium</word>
|
||||
<word>neon</word>
|
||||
<word>neptunium</word>
|
||||
<word>neurobiologist</word>
|
||||
<word>neuropathy</word>
|
||||
<word>neuroscientific</word>
|
||||
<word>neurotypical</word>
|
||||
<word>neurovascular</word>
|
||||
<word>nickel</word>
|
||||
<word>niobium</word>
|
||||
<word>nitrogen</word>
|
||||
<word>nobelium</word>
|
||||
<word>nothin</word>
|
||||
<word>now's</word>
|
||||
<word>odontoid</word>
|
||||
<word>ohh</word>
|
||||
<word>online</word>
|
||||
<word>or</word>
|
||||
<word>oropharyngeal</word>
|
||||
<word>osmium</word>
|
||||
<word>osseointegrated</word>
|
||||
<word>osseointegration</word>
|
||||
<word>other's</word>
|
||||
<word>otolaryngologist</word>
|
||||
<word>oww</word>
|
||||
<word>owwwww</word>
|
||||
<word>oxygen</word>
|
||||
<word>p.m.</word>
|
||||
<word>palladium</word>
|
||||
<word>paprikash</word>
|
||||
<word>parents'</word>
|
||||
<word>percutaneously</word>
|
||||
<word>perfusionist</word>
|
||||
<word>phosphorus</word>
|
||||
<word>photoshopped</word>
|
||||
<word>platinum</word>
|
||||
<word>playbook</word>
|
||||
<word>plutonium</word>
|
||||
<word>pneumothorax</word>
|
||||
<word>polenta</word>
|
||||
<word>polonium</word>
|
||||
<word>postulator</word>
|
||||
<word>potassium</word>
|
||||
<word>praseodymium</word>
|
||||
<word>promethium</word>
|
||||
<word>prosthetics</word>
|
||||
<word>protactinium</word>
|
||||
<word>pseudoachondroplasia</word>
|
||||
<word>purée</word>
|
||||
<word>radium</word>
|
||||
<word>radon</word>
|
||||
<word>reacclimate</word>
|
||||
<word>reacclimating</word>
|
||||
<word>realise</word>
|
||||
<word>realised</word>
|
||||
<word>rebar</word>
|
||||
<word>recalibrated</word>
|
||||
<word>recognise</word>
|
||||
<word>recognised</word>
|
||||
<word>reframe</word>
|
||||
<word>resect</word>
|
||||
<word>retractor</word>
|
||||
<word>retropulsion</word>
|
||||
<word>revascularization</word>
|
||||
<word>rhenium</word>
|
||||
<word>rhodium</word>
|
||||
<word>ringtone</word>
|
||||
<word>roentgenium</word>
|
||||
<word>rollerblades</word>
|
||||
<word>rubidium</word>
|
||||
<word>ruthenium</word>
|
||||
<word>rutherfordium</word>
|
||||
<word>saké</word>
|
||||
<word>saltimbocca</word>
|
||||
<word>samarium</word>
|
||||
<word>sayonara</word>
|
||||
<word>scandium</word>
|
||||
<word>schlong</word>
|
||||
<word>sci-fi</word>
|
||||
<word>seaborgium</word>
|
||||
<word>secret's</word>
|
||||
<word>selenium</word>
|
||||
<word>selfies</word>
|
||||
<word>señor</word>
|
||||
<word>señora</word>
|
||||
<word>señorita</word>
|
||||
<word>sensei</word>
|
||||
<word>sharpshoot</word>
|
||||
<word>shithead's</word>
|
||||
<word>shithole</word>
|
||||
<word>should've</word>
|
||||
<word>show's</word>
|
||||
<word>silicon</word>
|
||||
<word>silver</word>
|
||||
<word>skag</word>
|
||||
<word>skank</word>
|
||||
<word>skeevy</word>
|
||||
<word>snuck</word>
|
||||
<word>sodium</word>
|
||||
<word>something's</word>
|
||||
<word>spell's</word>
|
||||
<word>sphenopalatine</word>
|
||||
<word>spilt</word>
|
||||
<word>splenectomy</word>
|
||||
<word>spork</word>
|
||||
<word>spotteth</word>
|
||||
<word>stenosis</word>
|
||||
<word>stent</word>
|
||||
<word>stenting</word>
|
||||
<word>stereotactic</word>
|
||||
<word>sternotomy</word>
|
||||
<word>strontium</word>
|
||||
<word>subclavian</word>
|
||||
<word>subdural hematoma</word>
|
||||
<word>sudoku</word>
|
||||
<word>sulfur</word>
|
||||
<word>sulphur</word>
|
||||
<word>synchronicity</word>
|
||||
<word>syncopal</word>
|
||||
<word>synovectomy</word>
|
||||
<word>tantalum</word>
|
||||
<word>taxies</word>
|
||||
<word>technetium</word>
|
||||
<word>teleporting</word>
|
||||
<word>tellurium</word>
|
||||
<word>teratoma</word>
|
||||
<word>terbium</word>
|
||||
<word>terrorise</word>
|
||||
<word>texted</word>
|
||||
<word>texting</word>
|
||||
<word>thallium</word>
|
||||
<word>that'd</word>
|
||||
<word>that'll</word>
|
||||
<word>the</word>
|
||||
<word>them's</word>
|
||||
<word>then</word>
|
||||
<word>there'd</word>
|
||||
<word>there'll</word>
|
||||
<word>there're</word>
|
||||
<word>this</word>
|
||||
<word>this'll</word>
|
||||
<word>thoracotomy</word>
|
||||
<word>thorium</word>
|
||||
<word>thrombectomy</word>
|
||||
<word>thulium</word>
|
||||
<word>tin</word>
|
||||
<word>titanium</word>
|
||||
<word>tittie</word>
|
||||
<word>touché</word>
|
||||
<word>transcervical</word>
|
||||
<word>transcutaneous</word>
|
||||
<word>transdural</word>
|
||||
<word>transectional</word>
|
||||
<word>trickeration</word>
|
||||
<word>trifecta</word>
|
||||
<word>trigeminal</word>
|
||||
<word>tungsten</word>
|
||||
<word>ulcerative</word>
|
||||
<word>unreciprocated</word>
|
||||
<word>unsterile</word>
|
||||
<word>ununhexium</word>
|
||||
<word>ununoctium</word>
|
||||
<word>ununpentium</word>
|
||||
<word>ununquadium</word>
|
||||
<word>ununseptium</word>
|
||||
<word>ununtrium</word>
|
||||
<word>uranium</word>
|
||||
<word>vaccinologist</word>
|
||||
<word>vanadium</word>
|
||||
<word>voicemail</word>
|
||||
<word>voila</word>
|
||||
<word>weirding</word>
|
||||
<word>what'd</word>
|
||||
<word>what're</word>
|
||||
<word>when'd</word>
|
||||
<word>where'd</word>
|
||||
<word>where're</word>
|
||||
<word>which</word>
|
||||
<word>why'd</word>
|
||||
<word>why's</word>
|
||||
<word>wizarding</word>
|
||||
<word>women's</word>
|
||||
<word>worshipped</word>
|
||||
<word>www</word>
|
||||
<word>xenon</word>
|
||||
<word>ytterbium</word>
|
||||
<word>yttrium</word>
|
||||
<word>yukina</word>
|
||||
<word>zinc</word>
|
||||
<word>zirconium</word>
|
||||
</words>
|
2002
tools/SubtitleEdit/Dictionaries/en_names.xml
Normal file
2002
tools/SubtitleEdit/Dictionaries/en_names.xml
Normal file
File diff suppressed because it is too large
Load Diff
5
tools/SubtitleEdit/Dictionaries/en_names_user.xml
Normal file
5
tools/SubtitleEdit/Dictionaries/en_names_user.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<names>
|
||||
<blacklist>
|
||||
</blacklist>
|
||||
<name>Dom Pérignon</name>
|
||||
</names>
|
3367
tools/SubtitleEdit/Dictionaries/eng_OCRFixReplaceList.xml
Normal file
3367
tools/SubtitleEdit/Dictionaries/eng_OCRFixReplaceList.xml
Normal file
File diff suppressed because it is too large
Load Diff
3282
tools/SubtitleEdit/Dictionaries/eng_OCRFixReplaceList.xml.bak
Normal file
3282
tools/SubtitleEdit/Dictionaries/eng_OCRFixReplaceList.xml.bak
Normal file
File diff suppressed because it is too large
Load Diff
834
tools/SubtitleEdit/Dictionaries/es_MX_user.xml
Normal file
834
tools/SubtitleEdit/Dictionaries/es_MX_user.xml
Normal file
@ -0,0 +1,834 @@
|
||||
<words>
|
||||
<word>»</word>
|
||||
<word>a</word>
|
||||
<word>abnegada</word>
|
||||
<word>abróchame</word>
|
||||
<word>acábalo</word>
|
||||
<word>accidentillo</word>
|
||||
<word>acelerantes</word>
|
||||
<word>acércalo</word>
|
||||
<word>acosamiento</word>
|
||||
<word>adelántalo</word>
|
||||
<word>adiosito</word>
|
||||
<word>adónde</word>
|
||||
<word>agitarte</word>
|
||||
<word>aguántenlos</word>
|
||||
<word>ahórrale</word>
|
||||
<word>ahórratelo</word>
|
||||
<word>ahorrémonos</word>
|
||||
<word>ahórreselo</word>
|
||||
<word>alienígenas</word>
|
||||
<word>alta</word>
|
||||
<word>amárrenla</word>
|
||||
<word>amartillarla</word>
|
||||
<word>amateur</word>
|
||||
<word>amiguito</word>
|
||||
<word>amiguitos</word>
|
||||
<word>amortajarte</word>
|
||||
<word>ándate</word>
|
||||
<word>anticapitalista</word>
|
||||
<word>anticlímax</word>
|
||||
<word>anticorrupción</word>
|
||||
<word>antifrecuencia</word>
|
||||
<word>antipatriotas</word>
|
||||
<word>aórtica</word>
|
||||
<word>apagándolo</word>
|
||||
<word>apagarlo</word>
|
||||
<word>apágate</word>
|
||||
<word>apáguela</word>
|
||||
<word>apégate</word>
|
||||
<word>apuñalamiento</word>
|
||||
<word>apuñáleme</word>
|
||||
<word>archienemigo</word>
|
||||
<word>arcoíris</word>
|
||||
<word>armagnac</word>
|
||||
<word>arréglalo</word>
|
||||
<word>arréglatelas</word>
|
||||
<word>arréstame</word>
|
||||
<word>arrésteme</word>
|
||||
<word>arréstenlo</word>
|
||||
<word>arréstenlos</word>
|
||||
<word>arrójala</word>
|
||||
<word>arrójenlo</word>
|
||||
<word>arrópate</word>
|
||||
<word>asadito</word>
|
||||
<word>asegúrenlo</word>
|
||||
<word>asumpción</word>
|
||||
<word>atemorizante</word>
|
||||
<word>aterrorizante</word>
|
||||
<word>atraerle</word>
|
||||
<word>atraerlo</word>
|
||||
<word>atraerlos</word>
|
||||
<word>atrápala</word>
|
||||
<word>atrápalo</word>
|
||||
<word>atrápenlo</word>
|
||||
<word>atrápenlos</word>
|
||||
<word>atrápenme</word>
|
||||
<word>atravesarlo</word>
|
||||
<word>atravesarlos</word>
|
||||
<word>audazmente</word>
|
||||
<word>ausentismo</word>
|
||||
<word>autentificación</word>
|
||||
<word>autorespeto</word>
|
||||
<word>avalarte</word>
|
||||
<word>aventón</word>
|
||||
<word>averígüelo</word>
|
||||
<word>averigüémoslo</word>
|
||||
<word>ayúdalo</word>
|
||||
<word>ayudarla</word>
|
||||
<word>bañito</word>
|
||||
<word>barracón</word>
|
||||
<word>barracones</word>
|
||||
<word>bebecito</word>
|
||||
<word>bellísimo</word>
|
||||
<word>bendígame</word>
|
||||
<word>berlineses</word>
|
||||
<word>bésale</word>
|
||||
<word>besitos</word>
|
||||
<word>blackjack</word>
|
||||
<word>blanquito</word>
|
||||
<word>bourbon</word>
|
||||
<word>brabucones</word>
|
||||
<word>bríndenles</word>
|
||||
<word>brutalizadas</word>
|
||||
<word>buenmozo</word>
|
||||
<word>búmeran</word>
|
||||
<word>búnker</word>
|
||||
<word>búnkeres</word>
|
||||
<word>buqué</word>
|
||||
<word>buscas</word>
|
||||
<word>buscón</word>
|
||||
<word>busquémoslo</word>
|
||||
<word>caballeros</word>
|
||||
<word>caete</word>
|
||||
<word>cafecito</word>
|
||||
<word>caliéntala</word>
|
||||
<word>calladito</word>
|
||||
<word>cállate</word>
|
||||
<word>cálmese</word>
|
||||
<word>caos</word>
|
||||
<word>captúrenlo</word>
|
||||
<word>carbohidratos</word>
|
||||
<word>cardiomiopatía</word>
|
||||
<word>cardiopulmonar</word>
|
||||
<word>cárguelos</word>
|
||||
<word>caribúes</word>
|
||||
<word>carrito</word>
|
||||
<word>cásate</word>
|
||||
<word>cavémosles</word>
|
||||
<word>cazafantasmas</word>
|
||||
<word>chamaco</word>
|
||||
<word>champañera</word>
|
||||
<word>chapuzón</word>
|
||||
<word>charlamos</word>
|
||||
<word>checaste</word>
|
||||
<word>chiquitito</word>
|
||||
<word>chofer</word>
|
||||
<word>chorrito</word>
|
||||
<word>chupadita</word>
|
||||
<word>cibercriminal</word>
|
||||
<word>cigüeñales</word>
|
||||
<word>citadino</word>
|
||||
<word>cítala</word>
|
||||
<word>climatológicas</word>
|
||||
<word>climatólogo</word>
|
||||
<word>clínicamente</word>
|
||||
<word>cocínalo</word>
|
||||
<word>cocktail</word>
|
||||
<word>cocktails</word>
|
||||
<word>codificándolas</word>
|
||||
<word>cojones</word>
|
||||
<word>colonialista</word>
|
||||
<word>colonialistas</word>
|
||||
<word>coloréame</word>
|
||||
<word>comprarte</word>
|
||||
<word>comprenderla</word>
|
||||
<word>comprenderlo</word>
|
||||
<word>cómprenla</word>
|
||||
<word>compulsivamente</word>
|
||||
<word>concértalo</word>
|
||||
<word>conéctame</word>
|
||||
<word>conécteme</word>
|
||||
<word>conejita</word>
|
||||
<word>confundiéndolos</word>
|
||||
<word>congelante</word>
|
||||
<word>congelarlo</word>
|
||||
<word>considéralo</word>
|
||||
<word>consigámoslo</word>
|
||||
<word>consíguemelo</word>
|
||||
<word>contactarle</word>
|
||||
<word>contraparte</word>
|
||||
<word>contrátalo</word>
|
||||
<word>controversial</word>
|
||||
<word>convencerle</word>
|
||||
<word>convencerles</word>
|
||||
<word>coproducción</word>
|
||||
<word>coproducciones</word>
|
||||
<word>copuladores</word>
|
||||
<word>corazoncito</word>
|
||||
<word>correduría</word>
|
||||
<word>cortándole</word>
|
||||
<word>cortarle</word>
|
||||
<word>cosita</word>
|
||||
<word>cositas</word>
|
||||
<word>cosmología</word>
|
||||
<word>costarle</word>
|
||||
<word>country</word>
|
||||
<word>crescendo</word>
|
||||
<word>críptico</word>
|
||||
<word>criptólogo</word>
|
||||
<word>cúbrala</word>
|
||||
<word>cúbranme</word>
|
||||
<word>cúbreme</word>
|
||||
<word>cúbrenos</word>
|
||||
<word>cuéntanos</word>
|
||||
<word>cuidarle</word>
|
||||
<word>culpándoles</word>
|
||||
<word>culparlo</word>
|
||||
<word>cúralo</word>
|
||||
<word>cuscús</word>
|
||||
<word>dañarlo</word>
|
||||
<word>deberíamos</word>
|
||||
<word>debilucho</word>
|
||||
<word>decepcionarle</word>
|
||||
<word>decrementar</word>
|
||||
<word>déjame</word>
|
||||
<word>dejémosle</word>
|
||||
<word>dejémoslo</word>
|
||||
<word>demodulador</word>
|
||||
<word>démosle</word>
|
||||
<word>demostrémosle</word>
|
||||
<word>demuéstrelo</word>
|
||||
<word>densamente</word>
|
||||
<word>derríbenlo</word>
|
||||
<word>derrótenlo</word>
|
||||
<word>desafortunadamente</word>
|
||||
<word>desairarme</word>
|
||||
<word>desátame</word>
|
||||
<word>desatarlo</word>
|
||||
<word>desátemelas</word>
|
||||
<word>descartarlo</word>
|
||||
<word>descartarlos</word>
|
||||
<word>descontaminación</word>
|
||||
<word>descorcharle</word>
|
||||
<word>desencadénenlo</word>
|
||||
<word>desfibrilador</word>
|
||||
<word>desfragmentar</word>
|
||||
<word>deshidratación</word>
|
||||
<word>desilusionante</word>
|
||||
<word>desincronizados</word>
|
||||
<word>deslogueó</word>
|
||||
<word>desmantelación</word>
|
||||
<word>despeinarla</word>
|
||||
<word>despídeme</word>
|
||||
<word>despiértame</word>
|
||||
<word>despiértele</word>
|
||||
<word>destrúyanlo</word>
|
||||
<word>destrúyela</word>
|
||||
<word>desvaríos</word>
|
||||
<word>deténganme</word>
|
||||
<word>devuélvanmelo</word>
|
||||
<word>dile</word>
|
||||
<word>dime</word>
|
||||
<word>dinos</word>
|
||||
<word>diplomáticamente</word>
|
||||
<word>discútanlo</word>
|
||||
<word>disecándolas</word>
|
||||
<word>disgregándolo</word>
|
||||
<word>dispárale</word>
|
||||
<word>dispárales</word>
|
||||
<word>dispararle</word>
|
||||
<word>dispérsense</word>
|
||||
<word>dividámonos</word>
|
||||
<word>dominarlo</word>
|
||||
<word>duda</word>
|
||||
<word>dudo</word>
|
||||
<word>e</word>
|
||||
<word>echémosle</word>
|
||||
<word>echémoslo</word>
|
||||
<word>edificabilidad</word>
|
||||
<word>electrocutarme</word>
|
||||
<word>elígela</word>
|
||||
<word>empiézalo</word>
|
||||
<word>empredimientos</word>
|
||||
<word>empujoncito</word>
|
||||
<word>encaprichamiento</word>
|
||||
<word>encáralo</word>
|
||||
<word>enciérrenlos</word>
|
||||
<word>encontrémosla</word>
|
||||
<word>encontrémoslos</word>
|
||||
<word>encriptado</word>
|
||||
<word>encriptados</word>
|
||||
<word>encuéntrala</word>
|
||||
<word>encuéntrale</word>
|
||||
<word>encuéntralo</word>
|
||||
<word>encuéntralos</word>
|
||||
<word>encuéntrame</word>
|
||||
<word>encuéntranos</word>
|
||||
<word>encuéntrenlas</word>
|
||||
<word>encuéntrenlo</word>
|
||||
<word>endurécete</word>
|
||||
<word>enfervorecida</word>
|
||||
<word>enfócate</word>
|
||||
<word>enfréntalo</word>
|
||||
<word>engañosamente</word>
|
||||
<word>enlistada</word>
|
||||
<word>enlistarlos</word>
|
||||
<word>enrutamiento</word>
|
||||
<word>enséñalo</word>
|
||||
<word>enséñeselo</word>
|
||||
<word>entonces</word>
|
||||
<word>entrégamelo</word>
|
||||
<word>entrégaselo</word>
|
||||
<word>entretenlos</word>
|
||||
<word>enviste</word>
|
||||
<word>episódicos</word>
|
||||
<word>escondámonos</word>
|
||||
<word>escóndanse</word>
|
||||
<word>escóndase</word>
|
||||
<word>escritorcito</word>
|
||||
<word>escritorzuelo</word>
|
||||
<word>escúchala</word>
|
||||
<word>escúchalo</word>
|
||||
<word>escúchame</word>
|
||||
<word>escúpalo</word>
|
||||
<word>escúpelo</word>
|
||||
<word>esnobs</word>
|
||||
<word>espérate</word>
|
||||
<word>espiralados</word>
|
||||
<word>esquizofrénico</word>
|
||||
<word>estaciónese</word>
|
||||
<word>estadísticamente</word>
|
||||
<word>estafarme</word>
|
||||
<word>estafarnos</word>
|
||||
<word>estienda</word>
|
||||
<word>estresado</word>
|
||||
<word>estresados</word>
|
||||
<word>estructuralmente</word>
|
||||
<word>eviscerarte</word>
|
||||
<word>exalcalde</word>
|
||||
<word>exasperante</word>
|
||||
<word>exdelta</word>
|
||||
<word>existencialista</word>
|
||||
<word>exitazo</word>
|
||||
<word>exlegionario</word>
|
||||
<word>exmiembro</word>
|
||||
<word>exnovia</word>
|
||||
<word>exsocios</word>
|
||||
<word>exsoviético</word>
|
||||
<word>extinguidor</word>
|
||||
<word>extorsionador</word>
|
||||
<word>eyaculación</word>
|
||||
<word>factótum</word>
|
||||
<word>faltantes</word>
|
||||
<word>fan</word>
|
||||
<word>fans</word>
|
||||
<word>ferri</word>
|
||||
<word>ferries</word>
|
||||
<word>fiestecilla</word>
|
||||
<word>figurines</word>
|
||||
<word>figuritas</word>
|
||||
<word>fiscalía</word>
|
||||
<word>flagrantemente</word>
|
||||
<word>florín</word>
|
||||
<word>florines</word>
|
||||
<word>flunitrazepam</word>
|
||||
<word>focalizarse</word>
|
||||
<word>fonógrafos</word>
|
||||
<word>fotogénico</word>
|
||||
<word>fotorreceptores</word>
|
||||
<word>fractal</word>
|
||||
<word>fumamos</word>
|
||||
<word>gachupin</word>
|
||||
<word>galimatías</word>
|
||||
<word>gángster</word>
|
||||
<word>gánsteres</word>
|
||||
<word>gatita</word>
|
||||
<word>gatito</word>
|
||||
<word>genetista</word>
|
||||
<word>geofísico</word>
|
||||
<word>geólogo</word>
|
||||
<word>gigahercios</word>
|
||||
<word>gigoló</word>
|
||||
<word>ginecológico</word>
|
||||
<word>gírate</word>
|
||||
<word>gitanillo</word>
|
||||
<word>glaucoma</word>
|
||||
<word>globalización</word>
|
||||
<word>golpéalo</word>
|
||||
<word>golpéenlo</word>
|
||||
<word>gracias</word>
|
||||
<word>grafólogo</word>
|
||||
<word>grandulón</word>
|
||||
<word>grítame</word>
|
||||
<word>guárdame</word>
|
||||
<word>guardándotelo</word>
|
||||
<word>guárdatelo</word>
|
||||
<word>guasón</word>
|
||||
<word>güey</word>
|
||||
<word>háblalo</word>
|
||||
<word>háblame</word>
|
||||
<word>háblanos</word>
|
||||
<word>hábleles</word>
|
||||
<word>hábleme</word>
|
||||
<word>haciendo</word>
|
||||
<word>hackeado</word>
|
||||
<word>hackeamos</word>
|
||||
<word>hackear</word>
|
||||
<word>hackearla</word>
|
||||
<word>hackearlo</word>
|
||||
<word>hacker</word>
|
||||
<word>hágalo</word>
|
||||
<word>hágamelo</word>
|
||||
<word>hagámoslo</word>
|
||||
<word>háganoslo</word>
|
||||
<word>hardware</word>
|
||||
<word>heptadecágono</word>
|
||||
<word>hipsómetro</word>
|
||||
<word>hombrecito</word>
|
||||
<word>hombresote</word>
|
||||
<word>hombros</word>
|
||||
<word>hónranos</word>
|
||||
<word>hrs</word>
|
||||
<word>huevotes</word>
|
||||
<word>iconografía</word>
|
||||
<word>ictiólogo</word>
|
||||
<word>ignórame</word>
|
||||
<word>igualista</word>
|
||||
<word>ilocalizable</word>
|
||||
<word>ilústrame</word>
|
||||
<word>imagínatelo</word>
|
||||
<word>implanteable</word>
|
||||
<word>implosión</word>
|
||||
<word>impresionantemente</word>
|
||||
<word>imprímelo</word>
|
||||
<word>improvisándolos</word>
|
||||
<word>inapropiadamente</word>
|
||||
<word>incalculablemente</word>
|
||||
<word>incautándole</word>
|
||||
<word>incriminante</word>
|
||||
<word>indignante</word>
|
||||
<word>infórmame</word>
|
||||
<word>informándolos</word>
|
||||
<word>inframundo</word>
|
||||
<word>infrecuentemente</word>
|
||||
<word>inimaginablemente</word>
|
||||
<word>inténtalo</word>
|
||||
<word>intentémoslo</word>
|
||||
<word>interactuan</word>
|
||||
<word>interactuar</word>
|
||||
<word>intercepción</word>
|
||||
<word>inyéctense</word>
|
||||
<word>iraní</word>
|
||||
<word>irrastreables</word>
|
||||
<word>isótopo</word>
|
||||
<word>isquémicas</word>
|
||||
<word>jódeme</word>
|
||||
<word>jodidamente</word>
|
||||
<word>jovencita</word>
|
||||
<word>jovencitas</word>
|
||||
<word>jovencito</word>
|
||||
<word>juntándote</word>
|
||||
<word>kilohercios</word>
|
||||
<word>ladrándoles</word>
|
||||
<word>lanzagranadas</word>
|
||||
<word>lanzarla</word>
|
||||
<word>laptop</word>
|
||||
<word>laptops</word>
|
||||
<word>lasaña</word>
|
||||
<word>lastimarlo</word>
|
||||
<word>léenos</word>
|
||||
<word>letona</word>
|
||||
<word>levántalo</word>
|
||||
<word>levantarle</word>
|
||||
<word>levántenlo</word>
|
||||
<word>libéralos</word>
|
||||
<word>libérame</word>
|
||||
<word>liberarle</word>
|
||||
<word>liberarles</word>
|
||||
<word>libérenme</word>
|
||||
<word>libérenos</word>
|
||||
<word>librito</word>
|
||||
<word>liquidarlos</word>
|
||||
<word>llama</word>
|
||||
<word>llámale</word>
|
||||
<word>llámanos</word>
|
||||
<word>llámela</word>
|
||||
<word>llámelo</word>
|
||||
<word>llamémosla</word>
|
||||
<word>llamémoslo</word>
|
||||
<word>llegamos</word>
|
||||
<word>llévame</word>
|
||||
<word>llévatela</word>
|
||||
<word>llévatelo</word>
|
||||
<word>llévatelos</word>
|
||||
<word>llévenme</word>
|
||||
<word>llévensela</word>
|
||||
<word>llévenselo</word>
|
||||
<word>llévenselos</word>
|
||||
<word>localizador</word>
|
||||
<word>lúcidamente</word>
|
||||
<word>lugarcito</word>
|
||||
<word>lustrador</word>
|
||||
<word>macroeconomía</word>
|
||||
<word>macroscópicos</word>
|
||||
<word>maldecirte</word>
|
||||
<word>mamás</word>
|
||||
<word>mami</word>
|
||||
<word>mándale</word>
|
||||
<word>mandamás</word>
|
||||
<word>manejarlo</word>
|
||||
<word>mantenerle</word>
|
||||
<word>mantenerles</word>
|
||||
<word>manténgalo</word>
|
||||
<word>manténgalos</word>
|
||||
<word>mantenla</word>
|
||||
<word>mantenlo</word>
|
||||
<word>mantenme</word>
|
||||
<word>márcala</word>
|
||||
<word>marchamos</word>
|
||||
<word>marchémonos</word>
|
||||
<word>mariachis</word>
|
||||
<word>mátame</word>
|
||||
<word>matarle</word>
|
||||
<word>matarles</word>
|
||||
<word>máteme</word>
|
||||
<word>mátenlas</word>
|
||||
<word>mátenlo</word>
|
||||
<word>mátenlos</word>
|
||||
<word>mayday</word>
|
||||
<word>megavatios</word>
|
||||
<word>mejórese</word>
|
||||
<word>memorabilia</word>
|
||||
<word>metanfetaminas</word>
|
||||
<word>métanlo</word>
|
||||
<word>métasela</word>
|
||||
<word>mételes</word>
|
||||
<word>metérmela</word>
|
||||
<word>metérnoslas</word>
|
||||
<word>metérselo</word>
|
||||
<word>métetelo</word>
|
||||
<word>metiéndole</word>
|
||||
<word>mézclate</word>
|
||||
<word>microclima</word>
|
||||
<word>microtecnología</word>
|
||||
<word>mientras</word>
|
||||
<word>minibar</word>
|
||||
<word>míreme</word>
|
||||
<word>misógino</word>
|
||||
<word>mnemotécnicos</word>
|
||||
<word>moderarte</word>
|
||||
<word>mojigatería</word>
|
||||
<word>monitoreado</word>
|
||||
<word>monitorean</word>
|
||||
<word>monitoreando</word>
|
||||
<word>monitorear</word>
|
||||
<word>monitorizados</word>
|
||||
<word>monóxido</word>
|
||||
<word>montos</word>
|
||||
<word>motoneta</word>
|
||||
<word>moverlas</word>
|
||||
<word>mucama</word>
|
||||
<word>muchachito</word>
|
||||
<word>muéstrala</word>
|
||||
<word>muéstrale</word>
|
||||
<word>muéstramelo</word>
|
||||
<word>muévelo</word>
|
||||
<word>mundialista</word>
|
||||
<word>nanotecnología</word>
|
||||
<word>nanotubo</word>
|
||||
<word>nanotubos</word>
|
||||
<word>navegarlo</word>
|
||||
<word>negarlo</word>
|
||||
<word>neocórtex</word>
|
||||
<word>neumotórax</word>
|
||||
<word>neuroestimulante</word>
|
||||
<word>neuromusculares</word>
|
||||
<word>neutrones</word>
|
||||
<word>nigeriano</word>
|
||||
<word>nigerianos</word>
|
||||
<word>niñita</word>
|
||||
<word>niñitas</word>
|
||||
<word>nocaut</word>
|
||||
<word>numerito</word>
|
||||
<word>o</word>
|
||||
<word>obligarle</word>
|
||||
<word>obsérvame</word>
|
||||
<word>ocúltenla</word>
|
||||
<word>ocurrirle</word>
|
||||
<word>óhmico</word>
|
||||
<word>olanes</word>
|
||||
<word>olvidarlo</word>
|
||||
<word>olvídelo</word>
|
||||
<word>olvídenlo</word>
|
||||
<word>omelette</word>
|
||||
<word>opiáceos</word>
|
||||
<word>oponiéndote</word>
|
||||
<word>oponme</word>
|
||||
<word>oruguilla</word>
|
||||
<word>osito</word>
|
||||
<word>págale</word>
|
||||
<word>palitos</word>
|
||||
<word>papi</word>
|
||||
<word>papito</word>
|
||||
<word>paramédico</word>
|
||||
<word>paramédicos</word>
|
||||
<word>parking</word>
|
||||
<word>partirles</word>
|
||||
<word>pásame</word>
|
||||
<word>pasarle</word>
|
||||
<word>pasas</word>
|
||||
<word>páseme</word>
|
||||
<word>patearle</word>
|
||||
<word>patearme</word>
|
||||
<word>patearte</word>
|
||||
<word>pavé</word>
|
||||
<word>pedacitos</word>
|
||||
<word>pedofilia</word>
|
||||
<word>pedófilo</word>
|
||||
<word>pégame</word>
|
||||
<word>péguense</word>
|
||||
<word>pendejada</word>
|
||||
<word>pendejadas</word>
|
||||
<word>perderla</word>
|
||||
<word>perderlas</word>
|
||||
<word>perderlo</word>
|
||||
<word>perderlos</word>
|
||||
<word>permítame</word>
|
||||
<word>permítanme</word>
|
||||
<word>permíteme</word>
|
||||
<word>permítenos</word>
|
||||
<word>permitiéndole</word>
|
||||
<word>persuadirla</word>
|
||||
<word>persuadirle</word>
|
||||
<word>persuadirlo</word>
|
||||
<word>pescadería</word>
|
||||
<word>pescaditos</word>
|
||||
<word>pincelazos</word>
|
||||
<word>píntalo</word>
|
||||
<word>piromanía</word>
|
||||
<word>piromaníaco</word>
|
||||
<word>planeadoras</word>
|
||||
<word>pleitesía</word>
|
||||
<word>pobrecilla</word>
|
||||
<word>pobrecito</word>
|
||||
<word>polideportivo</word>
|
||||
<word>polinización</word>
|
||||
<word>politburó</word>
|
||||
<word>póngame</word>
|
||||
<word>pongámonos</word>
|
||||
<word>pongámosla</word>
|
||||
<word>ponme</word>
|
||||
<word>ponnos</word>
|
||||
<word>póntelo</word>
|
||||
<word>posponerlo</word>
|
||||
<word>pregúnteselo</word>
|
||||
<word>preocuparla</word>
|
||||
<word>preocuparlo</word>
|
||||
<word>prepárenlas</word>
|
||||
<word>prepárenlo</word>
|
||||
<word>presentarles</word>
|
||||
<word>presumirnos</word>
|
||||
<word>prevaficación</word>
|
||||
<word>prevaricación</word>
|
||||
<word>prométemelo</word>
|
||||
<word>prometerle</word>
|
||||
<word>prometo</word>
|
||||
<word>proponerle</word>
|
||||
<word>protégeme</word>
|
||||
<word>protégete</word>
|
||||
<word>protonosférico</word>
|
||||
<word>pruébalo</word>
|
||||
<word>psicoanalizarlo</word>
|
||||
<word>psicoclinica</word>
|
||||
<word>púdranse</word>
|
||||
<word>quedarás</word>
|
||||
<word>quédatelo</word>
|
||||
<word>quemándolas</word>
|
||||
<word>quémeme</word>
|
||||
<word>quinceañera</word>
|
||||
<word>quirófano</word>
|
||||
<word>quítame</word>
|
||||
<word>quitándole</word>
|
||||
<word>quíteme</word>
|
||||
<word>quítenle</word>
|
||||
<word>quítenme</word>
|
||||
<word>rarito</word>
|
||||
<word>rastréalas</word>
|
||||
<word>rastrearla</word>
|
||||
<word>rastrearle</word>
|
||||
<word>rastrearlo</word>
|
||||
<word>rastrearlos</word>
|
||||
<word>rastrearte</word>
|
||||
<word>reactancias</word>
|
||||
<word>realizarla</word>
|
||||
<word>realizarlo</word>
|
||||
<word>reasignarme</word>
|
||||
<word>recogan</word>
|
||||
<word>reconectar</word>
|
||||
<word>reconectarnos</word>
|
||||
<word>reconfigurasen</word>
|
||||
<word>recordarle</word>
|
||||
<word>rectos</word>
|
||||
<word>recuérdale</word>
|
||||
<word>recuérdame</word>
|
||||
<word>recuperarlas</word>
|
||||
<word>recuperarlo</word>
|
||||
<word>redireccionamiento</word>
|
||||
<word>reentrando</word>
|
||||
<word>reenvíala</word>
|
||||
<word>reestablecido</word>
|
||||
<word>refundaste</word>
|
||||
<word>refundó</word>
|
||||
<word>registrarle</word>
|
||||
<word>reinícielo</word>
|
||||
<word>remapeando</word>
|
||||
<word>removerla</word>
|
||||
<word>removerlo</word>
|
||||
<word>rendidor</word>
|
||||
<word>rendirle</word>
|
||||
<word>repechaje</word>
|
||||
<word>repliéguense</word>
|
||||
<word>represurizarse</word>
|
||||
<word>reservación</word>
|
||||
<word>respóndeme</word>
|
||||
<word>resuélvanos</word>
|
||||
<word>retazos</word>
|
||||
<word>retenerle</word>
|
||||
<word>reubicación</word>
|
||||
<word>revísalo</word>
|
||||
<word>revísame</word>
|
||||
<word>revisémoslo</word>
|
||||
<word>ricachón</word>
|
||||
<word>rodéalo</word>
|
||||
<word>rodéenlo</word>
|
||||
<word>rompecorazones</word>
|
||||
<word>rotarle</word>
|
||||
<word>ruandesas</word>
|
||||
<word>sácala</word>
|
||||
<word>sácalo</word>
|
||||
<word>sácalos</word>
|
||||
<word>sacando</word>
|
||||
<word>sacándole</word>
|
||||
<word>sácanosla</word>
|
||||
<word>saloncito</word>
|
||||
<word>sálvala</word>
|
||||
<word>sálvale</word>
|
||||
<word>sangritas</word>
|
||||
<word>satelital</word>
|
||||
<word>satelitales</word>
|
||||
<word>sécame</word>
|
||||
<word>secretito</word>
|
||||
<word>seguirles</word>
|
||||
<word>segurísima</word>
|
||||
<word>separémonos</word>
|
||||
<word>serpenteante</word>
|
||||
<word>siéntate</word>
|
||||
<word>sígame</word>
|
||||
<word>síganme</word>
|
||||
<word>síguenos</word>
|
||||
<word>sincronización</word>
|
||||
<word>sintonía</word>
|
||||
<word>sobreprotegido</word>
|
||||
<word>sólamente</word>
|
||||
<word>soldadito</word>
|
||||
<word>soldaditos</word>
|
||||
<word>solitas</word>
|
||||
<word>solitos</word>
|
||||
<word>somalí</word>
|
||||
<word>somalíes</word>
|
||||
<word>sombrerudos</word>
|
||||
<word>sorprendentemente</word>
|
||||
<word>sorpresita</word>
|
||||
<word>sorpresivamente</word>
|
||||
<word>sosténganse</word>
|
||||
<word>sostente</word>
|
||||
<word>souvenir</word>
|
||||
<word>soya</word>
|
||||
<word>súbanla</word>
|
||||
<word>súbanlo</word>
|
||||
<word>subcontratamos</word>
|
||||
<word>subcontratas</word>
|
||||
<word>súbela</word>
|
||||
<word>súbele</word>
|
||||
<word>súbelo</word>
|
||||
<word>súbelos</word>
|
||||
<word>subtítulos</word>
|
||||
<word>sucederle</word>
|
||||
<word>suertudos</word>
|
||||
<word>sujétate</word>
|
||||
<word>sujétense</word>
|
||||
<word>súmale</word>
|
||||
<word>súper</word>
|
||||
<word>supéralo</word>
|
||||
<word>superheroina</word>
|
||||
<word>superpoder</word>
|
||||
<word>supervisión</word>
|
||||
<word>supuestamente</word>
|
||||
<word>surfeaba</word>
|
||||
<word>susurros</word>
|
||||
<word>taoísta</word>
|
||||
<word>tarot</word>
|
||||
<word>tátara</word>
|
||||
<word>teledirigidos</word>
|
||||
<word>telefonearme</word>
|
||||
<word>telemetría</word>
|
||||
<word>telespectadores</word>
|
||||
<word>tengas</word>
|
||||
<word>terapista</word>
|
||||
<word>todoterreno</word>
|
||||
<word>tómatelo</word>
|
||||
<word>tómeselo</word>
|
||||
<word>tonic</word>
|
||||
<word>tontita</word>
|
||||
<word>toreándolos</word>
|
||||
<word>toxicología</word>
|
||||
<word>trabajito</word>
|
||||
<word>tráenos</word>
|
||||
<word>tragaperras</word>
|
||||
<word>traigámoslos</word>
|
||||
<word>transeúntes</word>
|
||||
<word>transexual</word>
|
||||
<word>transoceánica</word>
|
||||
<word>trátalos</word>
|
||||
<word>trataremos</word>
|
||||
<word>tríadas</word>
|
||||
<word>triangulación</word>
|
||||
<word>tribus</word>
|
||||
<word>u</word>
|
||||
<word>unírteles</word>
|
||||
<word>ustedes</word>
|
||||
<word>vacacionar</word>
|
||||
<word>vacíalo</word>
|
||||
<word>vacunación</word>
|
||||
<word>vámonos</word>
|
||||
<word>veámoslo</word>
|
||||
<word>véeme</word>
|
||||
<word>vendrá</word>
|
||||
<word>verifícalo</word>
|
||||
<word>vida</word>
|
||||
<word>videojuegos</word>
|
||||
<word>viendo</word>
|
||||
<word>vigílala</word>
|
||||
<word>vigílalo</word>
|
||||
<word>vigílamela</word>
|
||||
<word>vigilándolo</word>
|
||||
<word>vigilándolos</word>
|
||||
<word>vigilándome</word>
|
||||
<word>vigilarla</word>
|
||||
<word>vigilarlo</word>
|
||||
<word>vigilarme</word>
|
||||
<word>vigilarte</word>
|
||||
<word>vigílenlo</word>
|
||||
<word>vigílenlos</word>
|
||||
<word>viniendo</word>
|
||||
<word>visítame</word>
|
||||
<word>visualícelo</word>
|
||||
<word>volado</word>
|
||||
<word>volverle</word>
|
||||
<word>wellness</word>
|
||||
<word>y</word>
|
||||
<word>yoga</word>
|
||||
<word>yuanes</word>
|
||||
<word>zíngara</word>
|
||||
</words>
|
6
tools/SubtitleEdit/Dictionaries/es_NoBreakAfterList.xml
Normal file
6
tools/SubtitleEdit/Dictionaries/es_NoBreakAfterList.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<NoBreakAfterList>
|
||||
<Item>Dr.</Item>
|
||||
<Item>Mr.</Item>
|
||||
<Item>Mrs.</Item>
|
||||
<Item>Ms.</Item>
|
||||
</NoBreakAfterList>
|
1334
tools/SubtitleEdit/Dictionaries/es_names.xml
Normal file
1334
tools/SubtitleEdit/Dictionaries/es_names.xml
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user