Main
This commit is contained in:
parent
9692d1d509
commit
ec8ddd995a
4
1.- BLIM.cmd
Normal file
4
1.- BLIM.cmd
Normal file
@ -0,0 +1,4 @@
|
||||
python bad37.py --url https://www.blim.com/asset/10199 -c playready -s 7 -e 9
|
||||
python bad37.py --url https://www.blim.com/asset/24336 -c playready -s 7 -e 8
|
||||
python bad37.py --url https://www.blim.com/asset/24336 -c playready -s 7 -e 9
|
||||
pause
|
2
2.- HBO.cmd
Normal file
2
2.- HBO.cmd
Normal file
@ -0,0 +1,2 @@
|
||||
python bad37.py --url https://play.hbomax.com/page/urn:hbo:page:GYSAr8wiBN8IqpAEAAAAE:type:series --alang es-la en --slang en en-sdh es-la es-la-sdh --flang es-la-forced
|
||||
pause
|
542
KEYS/HBOMAX.txt
Normal file
542
KEYS/HBOMAX.txt
Normal file
@ -0,0 +1,542 @@
|
||||
##### One KEY per line. #####
|
||||
Sex and the City S01E01 - Sex and the City
|
||||
010077f9feb0ab3feaa14533fad3db02:4680777ac43b9698b7ab0ab7e8dc215d
|
||||
01051810dad40547af6417cd3923ad15:ffa4387c9044429d58c7173824e448e1
|
||||
0102a3562b2a4ca6f558e75d9e2e5a69:44742f93fa531725d1058900aa07cb5e
|
||||
01018b9daf7dbcacdd3ed46c0a200375:d0bd3272ad478ee9d7c2dccd68ad73fc
|
||||
MulherMaravilha 1984 (2020)
|
||||
01004200311580d98790817b5e4bba85:f36e16ff4a972e47404ca57ffa4419f7
|
||||
010518ff7f06ac32c4600a4c3d58f47e:8331bb0fa3c544b5d7c5bb7c34f5a589
|
||||
010191111658e773667a025a991f4d8a:68f8ffaa759b0a2f76ab9f298ec91a3a
|
||||
01039abe393e5a2c7fb219d2cb4709d7:2c4f6c7cf29e844145a4dd41fd612d64
|
||||
Game of Thrones S01E01 - Winter Is Coming
|
||||
0100e34e7b880c7b9dde35f77c4bc1cb:593bf887f900ebfd6fea887fe4500ce4
|
||||
01055f0f6ff8175cf7722cdfa2b74d7f:5da0b5ebf4fe112aa0e567cd42f9a164
|
||||
010274d4c60b0c31d6f886c1f4f3e9ac:96087cbd0f95970ce414bac741b66fcd
|
||||
0101c9735891941ecf7a306ca73727fe:f4a6f54a423f19e4954d5163f83acc48
|
||||
Game of Thrones S01E01 - Winter Is Coming
|
||||
0100e34e7b880c7b9dde35f77c4bc1cb:593bf887f900ebfd6fea887fe4500ce4
|
||||
01055f0f6ff8175cf7722cdfa2b74d7f:5da0b5ebf4fe112aa0e567cd42f9a164
|
||||
010274d4c60b0c31d6f886c1f4f3e9ac:96087cbd0f95970ce414bac741b66fcd
|
||||
0101c9735891941ecf7a306ca73727fe:f4a6f54a423f19e4954d5163f83acc48
|
||||
MulherMaravilha 1984 (2020)
|
||||
01004200311580d98790817b5e4bba85:f36e16ff4a972e47404ca57ffa4419f7
|
||||
010518ff7f06ac32c4600a4c3d58f47e:8331bb0fa3c544b5d7c5bb7c34f5a589
|
||||
010191111658e773667a025a991f4d8a:68f8ffaa759b0a2f76ab9f298ec91a3a
|
||||
01039abe393e5a2c7fb219d2cb4709d7:2c4f6c7cf29e844145a4dd41fd612d64
|
||||
MulherMaravilha 1984 (2020)
|
||||
01004200311580d98790817b5e4bba85:f36e16ff4a972e47404ca57ffa4419f7
|
||||
010518ff7f06ac32c4600a4c3d58f47e:8331bb0fa3c544b5d7c5bb7c34f5a589
|
||||
010191111658e773667a025a991f4d8a:68f8ffaa759b0a2f76ab9f298ec91a3a
|
||||
01039abe393e5a2c7fb219d2cb4709d7:2c4f6c7cf29e844145a4dd41fd612d64
|
||||
Fatale (2020)
|
||||
0100100f83ba50be7f20cbe8095b422c:55dd470924f512b407ce2672c6751d9a
|
||||
0105068f5057fe88847899662ecf452d:0a0bdb3381f733fca1ce94ef3be74a2f
|
||||
010173ef657a0ecf2db35888f3b890cf:144877fc1cc4029711691e3dc002d262
|
||||
Fatale (2020)
|
||||
0100100f83ba50be7f20cbe8095b422c:55dd470924f512b407ce2672c6751d9a
|
||||
0105068f5057fe88847899662ecf452d:0a0bdb3381f733fca1ce94ef3be74a2f
|
||||
010173ef657a0ecf2db35888f3b890cf:144877fc1cc4029711691e3dc002d262
|
||||
Young Rock S01E01 - Mantendo o Personagem
|
||||
0100ddf2bc8a779a1f09c368c7eca060:e3fb2ac8d1d1fa1e11e0218593f93450
|
||||
01056abbb53e5805462797aeca5568bf:35edf555765b230b1e9d7a9658d0933e
|
||||
0102c666058817aa543b63d1adfa904e:d1daa5eb5d51893aa6f9e9080800b136
|
||||
010193bbf7085e54cb9d573392abd865:9516e1c184cc999e64146e097b9bcab3
|
||||
Young Rock S01E02 - Na Estrada Novamente
|
||||
010054d60dcaeb448e0c5b3b49059a46:1f7c10dc5271f1a9c46c778c7657fbe9
|
||||
0105af2e162b824e925309c3260b5ada:0c17e76e4df2153bb39f004c28b1d5ad
|
||||
0102395832e1996319c8e03e3f63f0e7:261dc43e10427363a792e29ea72e47f2
|
||||
01015b51902146490c49e0faa2c8f5e1:fc53613bec2f69a2f4863665ff4b741e
|
||||
Young Rock S01E03 - Para a Frente Juntos
|
||||
01009d1877cfecb8779ef756af54f261:41ddba734a634ea37d9b892ae35aef3f
|
||||
01056412baea7fcd45997fdfc8771469:965d3890435d8c40e557ab5d8d49f27d
|
||||
01025e81393bb17ff3a3489fc50c7c46:053031f07db98f55187671c7cc16dfaf
|
||||
010115fd9ecf07c2e3a285dd33bca839:276eec8ce47e55586df5c781de9848e6
|
||||
Young Rock S01E04 - Cuide da Mente
|
||||
010007a3b2ebc6199cf73b41268aeb9a:5172f924aeb1877d90b6278349122a4c
|
||||
0105fc4abfd949f28fe016e9ae7d4705:771c1eccd020d940e2cb84075d242f8e
|
||||
01020d726386ce862f39738cdf54f6e0:5bcac6d1c1d5ae01573729c2f808cc42
|
||||
0101022b2d8f78a467289d744dd353b9:1ba2b246cda4daf91e22a0939f4a834c
|
||||
Young Rock S01E05 - Nao Parta Meu Coracao
|
||||
01008831029c6986c24f628cf885bdd4:a4d32c771e739fcb6d17e180d5c68080
|
||||
01058e6f1a11719c9aff718b10f72908:666b8a60b9651836c7d4787e9076e6cf
|
||||
01028536b69cd182d50a48750c1de6a8:6e63166da194d1136a4d70ed05606b41
|
||||
010161db8c5f7cefb1e577cc203165f5:3cbde197496a08230b8b5600cceb40ea
|
||||
Young Rock S01E06 - Meu Dia com Andre
|
||||
01006934cd9d4691f1dac14d1588efed:d89cfd9560fdb02dfee41b1aa5623bae
|
||||
0105681340b87f63875ed5afd9a0e458:ea4579a55ec782bf66e1727cb191ac86
|
||||
010240c33b9dd9053f77c44abc27b5d6:6238bc382509068fdc0833420cb34837
|
||||
01011e8893da248109987ac7c91b7b7d:eb07db5dde37d5653b6bf738f84c5a34
|
||||
Young Rock S01E07 - Johnson & Hopkins
|
||||
01001147f7ddd528c77cd170638d587d:42afcdaaf53b96d9dd1e4bd2b04b1e1e
|
||||
0105e3c0aec6474fca13d6802af9da30:462347dbfc08a64b4d92a8cff5f55e1f
|
||||
0102e7fb80d82e6cfbf2120b2d4eba31:2d7c93942bcc0b948046bbab3674473b
|
||||
0101b04ea21a8f9bfddb60d36d2b13b9:36a721f0dbd971913fe1b3d9125d5645
|
||||
Young Rock S01E08 - Meu Amor So Bebe do Bom
|
||||
01000a6d4324864de7e290de76c1c067:7f9f618043e3e6cfb03716366f1701ea
|
||||
01051631670ae66add688e3d06ecf1ed:19833d7a112bda41f308f830138386de
|
||||
0102dfb48a5c39b890a78273f4f38d89:7e7788797f6085409b73cba34db9beff
|
||||
0101f7462056c8453965361c27512236:ab27725060282d191763446df2bf735d
|
||||
Young Rock S01E09 - Uma Moca Chamada Star Search
|
||||
0100bec4cca40cd831dea8f8562543bf:cdb4be6be45890a2eaaed1b8b65d1fac
|
||||
01053e113d278ce468b8a73d68aba62a:134a0f7242f9b334c036c2c4e4a01e55
|
||||
01021b615ea10a68711529293255eeae:8f4358e37f160d291e51e8498ca0b3aa
|
||||
010121855d16b95c99be619cb4191a69:a23ebe421ef522f7fcef557989e17b7c
|
||||
Young Rock S01E10 - Bom X Otimo
|
||||
01003074cab5dba7a5d6f9941adadd22:56ca1b6eb1c12d806082d6e7926d26ea
|
||||
0105830951b04527ec8addf62adecc58:08fe9afc6df88a9589b5affeef461bf1
|
||||
0102d84a6e425c9d9043f9ec3132fdcf:3ecad14b703a0e79204dc046b2cffb4c
|
||||
0101cd0beb4e6daf0046655564d3758d:98f0b583564e05ab1d4567a1f836d248
|
||||
Young Rock S01E11 - Dia da Eleicao
|
||||
01000b3f384a6c956873de8c0c009660:b21b2586f7ae3c90945d776387c52e10
|
||||
010546ef4e8ffb90ec97cf5bd64645e0:4f440e174ef3bbc21e39cd2de0201563
|
||||
01026dcd7e1fe32bdf8444e1fa3eba59:d96172bb34c4b8b7ec95a52fc4978617
|
||||
0101b932547501a932fac39db1295730:640e397bcf3be27ee2b8cee05d7e3790
|
||||
Trem Infinito S01E01 - O Vagao Quadriculado
|
||||
0100a77dce692561487a5005f7575347:57b156f46b561b4def470eee03b13c5e
|
||||
0105547b931ba9da5d9ab6a8fdbfd889:3a6748fc91f05df721106b23d25e0329
|
||||
010202a90117e06472004dbc8a80103a:14c7e92589036df2dd44ca95e2519c60
|
||||
0101ec922d17a4ad84ca1bb7799f2ae5:9faf3568d138ce4432da19a09b6c86f1
|
||||
Trem Infinito S01E02 - O Vagao Da Praia
|
||||
0100f31da89cc5012fabe99622f791b6:e272cf736d9d15d5ef5920052dad7283
|
||||
0105bfc3f6d641726800af1885de4788:d2738c8b11bd0600cb7f09914d2b6ace
|
||||
0102bff9aa6d56cb536145488ce8f50f:73c53f333ef7b588953e5bcfae1320ae
|
||||
010117c7b84f8219057dcfd54a9a1225:bb6a7315adc4904daf7acbef2aa22e81
|
||||
Trem Infinito S01E03 - O Vagao Dos Corgis
|
||||
010017051096026c8b6f5392c21348fa:0ae10a3c856d925d0afe0cb2e695ad14
|
||||
0105e8680f697fa79cd9cdd11041fb54:577235ff95e21fcfe54943a82488b0f2
|
||||
01025dd8b75ebbb2cc7d8607d8f37391:17630cb656ae82646fb99df8a4ef1ebf
|
||||
01016a60ee89ff2797a08a492ddb701c:b25106fc8cd73268c7eeddf7fbd4983e
|
||||
Trem Infinito S01E04 - O Vagao De Cristal
|
||||
0100353052bae99ce777975a7ed8d154:50d3a6169f5c6bcf08771a805360dd83
|
||||
0105cf66d19e66efd2fc13179d826309:ff5d674d1af75240bfffe08b7a75e7dc
|
||||
010225fdbcac74d1cc0a00b735a5eaff:e03454aea5f613b846f4f6ce7b74c0ba
|
||||
0101c3c577164f0ff324ff45abe9d361:2c31beb7f600b2a92bedd789db906833
|
||||
Trem Infinito S01E05 - O Vagao Da Gata
|
||||
01008a2a43298ea495606c95ecbcf051:269c70959604d6732ab9015e673a6394
|
||||
010525204496216c89154119f1a296fa:cb9983c0480616b7cbbe935cb8d0e6e5
|
||||
0102deaa3e89a1e494f8337de127c30f:86feec4fe39392186d8b57c63d8fc57f
|
||||
01014b794bb65176fc3653ca830e74e6:3467d4bdb231cf3aaab4543e3b48e1f8
|
||||
Trem Infinito S01E06 - O Vagao Inacabado
|
||||
01000226c535f9b8b32102d7d385508a:fbaf4aba3cb5f83f5426fdc62cbbe333
|
||||
01056221bc8de2e19d3884aa8a910f11:9d20db6955d7eec5712f013e8d412e1f
|
||||
0102caa64ecb830002e7387bb2e62849:d5a5c77e2d547f3b0b993db3c079e899
|
||||
01016197bd7508424e470fc783490f25:5ceabff47db742c0f93d7946657f5787
|
||||
Trem Infinito S01E07 - O Vagao Cromado
|
||||
01005be6bdcd2f9854ae56e1a089d3ce:9ef241bd6b028b55e43da5690c92a34b
|
||||
010543c09f148951a86d4e6ed8af6ddd:fee9fd1c396e9e5d95c0394d308460d8
|
||||
01025b588cb1c2ca1ba60b398fc88b32:5d36ea74b93f1f56268176c4553653cc
|
||||
01016c002ff53ca43c3261086abbc1c1:645a42f7debd2c214ca7b7a49f7410bf
|
||||
Trem Infinito S01E08 - O Vagao Da Piscina De Bolinha
|
||||
01003b7bcc03d8b69e5baad3031c70ff:9228dd4a52fe088cc49659a09ce0d4b6
|
||||
01055eceb5e2d3710422ccc34c312e90:a4563d84c953d524ce3518ce30e73545
|
||||
010264903a38e874b827e568ec124651:104d1fbe42ae1ff2aa1d04c00da9c997
|
||||
01019456ff260170b4f015ea9da9d784:58a2deb06f144ed9811eabb7a653209d
|
||||
Trem Infinito S01E09 - O Vagao Do Passado
|
||||
0100db06533c68827d006f368f208736:2ec9b461f67ae4dc3c8c46cda7b20f4e
|
||||
0105fe417480ddbb404a2d95980880c6:06d1048a8d1b886d60adbae283d84cc2
|
||||
0102b6dc723d382dc21d1cd12a8ba60e:eed57ae5479ab01ba9c7e35d52a2814b
|
||||
0101d5defb3393e8abc0b0362e857946:1696c981048bec66da4b0d371b56b580
|
||||
Trem Infinito S01E10 - O Motor
|
||||
01006a7ac2b6dea3b0bb3974524e1f0a:1ce438bc6c63e3abccf414709a6f90f5
|
||||
0105e4d74df83d7bf31b294eb40ee8d5:b46f4c476d627b29ce811b45970ba158
|
||||
010259058d0738265a135144a4294975:86c5a4bdac322a1de44245f72e5f5676
|
||||
010141c5681e02b71a975a23fe6d7987:e18c666c0803946c2b048a6f86574e28
|
||||
Trem Infinito S02E01 - O Vagao Do Mercado Paralelo
|
||||
01002dfa703eeaa6cb5e5ae5093d94c7:c2b3954c3fc65692d89d961cb42bbf12
|
||||
0105a1165f4c0124fb76e121d2144638:2d42412c29fad222d366166298eb007f
|
||||
01029c9174ed36d7b6b72c389a3644a5:4d8769cf9e6a459701513d1945fb2e5b
|
||||
01011dcd22e68d659c2d23f276096fd2:21865df21586af74d729b0483aecb657
|
||||
Trem Infinito S02E02 - O Vagao Da Arvore Genealogica
|
||||
01002d58928076e7dea3900272147e79:0e39a701d95a378c9de92e7337463ebf
|
||||
010535472acdf450593a023515944584:865210e56cd0908059ea248a738112d6
|
||||
010262b79da0386cb678214505bb6873:d58bd63f5cf80cdd745abe185aea4b0d
|
||||
010102183d0dfbc01afa52892a0550f8:cdd3250250e140922c9299da953d5907
|
||||
Trem Infinito S02E03 - O Vagao Do Mapa
|
||||
01004aeaaeb8bce805287772a47edb12:efdb877fbe4db39c5dbb4a51654794ad
|
||||
0105a9b3efb90ea678a89aa75f34175f:78e807073c54fa54730d23d58c170bba
|
||||
0102c8f406595c39afe8299f09c1b12c:5f10994e8555257bd508dfe9f92ce5c9
|
||||
01011a42102c2e0c31a93ab911798c59:39e05b417eca455c93f070908948b3f0
|
||||
Trem Infinito S02E04 - O Vagao Do Sapo
|
||||
010021d75117232c1531b24c18c3122d:61c0b08791d579d6f097d149c1b0f98b
|
||||
0105c6fe22256997a0158b97e2edf65f:f572dc2f62f0b909c48fb35a5decdfd8
|
||||
0102bc953b2b207b48682c6a86b9cf69:2017e4aa3045f4e49917d73dea36040f
|
||||
0101e4542963aee71ba634c47e4e3ad2:d0ac221842b618756c19336a65c70bdb
|
||||
Trem Infinito S02E05 - O Vagao Do Parasita
|
||||
0100c5fa4542136889e6ced9d66e111a:4481fb0cb48a9d1b55d943c0616c21ba
|
||||
010501421ebf739079fba48102efd643:625fee92af72edbf0e8e30db0c647318
|
||||
010282fa32ba05153dd193d313257690:d7dc5686161142a65776d281db2ab489
|
||||
0101630bb5df9827a68c5f937120514e:96094bf48358db542bcfcb36fa49646a
|
||||
Trem Infinito S02E06 - O Vagao Da Gata Da Sorte
|
||||
0100777b4c0c4c60cdf58293db9ff60f:aca59bdbaeb29a3a9e026cbe91de5d66
|
||||
01053823d2474187ce998a4649b98c6a:9b3c97891ec0562429a408525e908e3f
|
||||
010283f3d55bdcdb99a066c62187f93b:be20d5d05bda12aefc7ad462db603098
|
||||
0101f39695f770603e7cd7233e718fff:305073711a17feccc2c3e2675fdead2b
|
||||
Trem Infinito S02E07 - O Vagao Do Shopping
|
||||
0100eebb18bda31f550616a663d70411:9a88c41b1e6154e419c71db608a04e53
|
||||
010565dc99b5a55c94af10a2f658d966:db26db5151d6c72c514038f37593503d
|
||||
0102f0656816f9d96ca7d9cf561b7720:8389365e462ab1e76bbac4349b57324f
|
||||
010186d41936f14c983a1a5781fbfe4e:14cc38f2c63f8cc104cfa64bd887deae
|
||||
Trem Infinito S02E08 - O Terreno Baldio
|
||||
01002cbbb07c5f0a59bb03fb1b5f2634:f2ec5c57801b81805a949b943e9f899e
|
||||
01056718328b80acc408b3910e4c632d:79ffc596e2f2c33add5dff53f57c7a8d
|
||||
01026c0d04247377689ec90fc46ba9cd:c307b0503666cc2b7e6374d90df9fd92
|
||||
0101896f0d5c7e8bf8240b9fca4aee8b:fa2d0fe28aadaea36774389d95a47e1e
|
||||
Trem Infinito S02E09 - O Vagao Da Fita
|
||||
0100ee249145422c84529aa22c15a851:789cb1df47813973702d683a0ceef6eb
|
||||
0105f6ba2fbe04c0dfc5e679b8fa9ce7:0727567596ee8c592e620c6404bf1bbf
|
||||
0102ea29eee03937b5a41acb01ed5f85:1a4ec821f2c6498ef9c2825eff5b01a2
|
||||
010184aa9fe7bb861e9db755d1a43dea:a0822e2bd15a90f6b7bdbdd18777ddd4
|
||||
Trem Infinito S02E10 - O Vagao Do Numero
|
||||
01008dcd958a85c59a205f8447b27b51:4551fc782cb6fdc2b99786c157c8ec0d
|
||||
01056532383cc4e8ffa067475a777c31:3b233156f07b72c99b2df3be3a96ac38
|
||||
010248b15295de961488e53707f8032e:42cf3ac0207b9bfff3f604a55411d6ac
|
||||
01017a526e4dbeef40ef0d0e68ba29db:4deae4f4aa8300ce26e7f1cda2c016f6
|
||||
Fahrenheit 451 (2018)
|
||||
0100189566132b2da3d324d04e84d757:1f38f71f9edbe5d0242c6205d64dd4c8
|
||||
0105067bd0dc8bd67598b206e0ac78c6:27a97050e2c22de05d61791d6d022943
|
||||
010277d957a83acb82845914bd603bf5:28aa523197bb9c44c989bd285d2b623e
|
||||
0101c3a540d39664f59cc44006be6fab:8fe6dcdbb11158344f66acccf178892b
|
||||
Roswell New Mexico S01E01 - Pilot
|
||||
010009f9459677f87e91d91dfec31221:7a6a0b3f555dbfbb14690454ae1d6dda
|
||||
0105a7bdb64bc304a4c5c0e4220c1c85:b3bf946609894e3143164b4f29a3ac2c
|
||||
0102c99421c06470517caa1b2d8500b8:8841f7ec433dc436cb83b1cabbf94cf4
|
||||
010105371ec1c248d4f7347a92327330:5d3b50f6537f990e4ad15064fb042989
|
||||
Roswell New Mexico S01E02 - So Much For The Afterglow
|
||||
0100c202620f26048584caa2790c67f6:99231c27dbc6958cbce31243de701a51
|
||||
0105091941943a3576a829da07d60f54:eac89d7b0edc8096fbf70f73999b4600
|
||||
010295b284ed83de4b5db7d7e767808d:f2094c7f0aa86b30206e4731be4b4032
|
||||
0101c6d44427b80c5feb165286a2f384:7fc62481b1e0977b64824c5aa826cd7b
|
||||
Roswell New Mexico S01E03 - Tearin Up My Heart
|
||||
0100732c14dcac70132458695a826dc7:61a36d4fcfd520143264f00853e9d066
|
||||
01050520af2782e19014630b1af9dfd7:4e824715a431bf47a0dfcd0f8413cde0
|
||||
01024fbdbdc97ffe5b38635540abfaa3:c800360caca6e40bd5ab4b4bf6aa2251
|
||||
0101d5c7a1d21b0f94d853a80b47ce19:b16dba1bd2df03cef6677b3445eafaac
|
||||
Roswell New Mexico S01E04 - Where Have All The Cowboys Gone
|
||||
0100cee62e1961f807c4795c926657a0:f0ad552ea5081fe544e21ee39c895d7d
|
||||
010510a3efc687d07301794678dd3b8a:f719c0f1f1d6728f15f82b710e8dd188
|
||||
01029279f9c0c0f142c8b3d8129c66d8:b33c26bd3c5fa2c50c513dfe9a42a852
|
||||
01015f70674d18165d8244f996123849:67936765750aa5b0855611de7d360e9c
|
||||
Roswell New Mexico S01E05 - Dont Speak
|
||||
01009721246d2a52b6160b6f9e42fdb4:28aca89cafc55bd9ee739069b6a4b1d2
|
||||
01053286f3c8c35291605cdc2710e153:713c08c3b78bbc39dac51c0dae89a5b9
|
||||
0102d51ff0130b48b9e065e00db828dd:0872228085548c2f9a293d5ff47f6c73
|
||||
0101a1c965f2662ebc1f399a7bb5b333:c7bd6b01746b9579f6a552a8e5dd4f8a
|
||||
Batwoman S01E01 - Pilot
|
||||
0100390773530bf551cfae7f6c8ee52d:186ea907c5c0de6038cc742c9fcd3a44
|
||||
01052bbc9724dc441ce3d984bf56432a:47755fddfe9f998aa284bc888a15dd3c
|
||||
0102ccf2dae2f4d80f8816fc3beff750:132f2f07be39786b01f4df0fe69863bc
|
||||
010127ffab8a64c8ffb3960388dbb505:894aab24f219a9abcd0911c912aeedd3
|
||||
Batwoman S01E02 - The Rabbit Hole
|
||||
0100804fbc7b6f49261c9a508d7baef8:d8026406cc8cb742ba811a10dc14435d
|
||||
0105cfb4c89bb5e75c0d1572dd5f4aab:1219ec71cbdc695cbaf7ea6192bc6c5b
|
||||
0102738070d60901250e0c4f534597a8:a8bbf3dde2a424b7a495c37868bf0d82
|
||||
0101f11b648c20a22985fdfb237184da:987e687746d81dc8f1e8fd533976c237
|
||||
Batwoman S01E03 - Down Down Down
|
||||
01001ef87f6933c2526d88da2066ceea:ff92bf6e210dac502a36f69f561bc339
|
||||
01051581acf80d10802b57e01c13334a:0e54706121b12aeaf7da634befbfc20f
|
||||
0102002b3307ed4720978bfa95217c59:bdd60deb40bc130141d24693b7275f7b
|
||||
0101977f3a31d0a594728b47637d994b:4545d72c7fd25d725f8c804925dea370
|
||||
Batwoman S01E04 - Who Are You
|
||||
0100249e976bca0d47f4355599227440:eacd7c594dd1e14439b4a2a316b9b3b8
|
||||
010532d3833836b5c8c22fdc92aa744b:d4ac953baff4587470b97e1db1b477e3
|
||||
01024b61a179615d2a98cd272f9fc7f3:333a5197f1ccc33d277e89d90919515a
|
||||
01013e95d9feaa9e3d57e0a1339e003e:f9c89721192c53b48a13ebbe953c8943
|
||||
Batwoman S01E05 - Mine Is a Long and Sad Tale
|
||||
0100a0e4aebe8d034cbbf28f2a8179f9:0fb674861e64570ebc6eec9ce32280cf
|
||||
0105f44247ffa9b64002eff95af28c73:53bf76187a190337ad17767a4e698db2
|
||||
0102bcb91c6cff38cab1e465d9630ccb:2354d918be9e715906f12dad6903123b
|
||||
01017a016043b17c55fa43b2c5c18f3e:2968f774c80e64a3c13bea2056e75f51
|
||||
Los Nobles Quando os Ricos Quebram a Cara (2013)
|
||||
01000de616bcbccf4eb5600fb90ac44e:5d950c00ddc4c20b3e00d95e0e3a5079
|
||||
010583bbff43327262f4f2eb6e833c64:8ddf8340464b7a21c38383f4bf11ab74
|
||||
01023ec68c3630fd49a3dfe4603f9b45:f9da1c37e95e0977fcbb3b050d91cb1b
|
||||
01016ba7aab5f1f5e7dbefb6bbc5f50f:2eadf2c51e1fd012fab77c6ade66ea02
|
||||
Academia de Vampiros O Beijo das Sombras (2014)
|
||||
0100bbde78dacd6a020c71194a37ab69:28b79e31b93ffb2169b2df43b7273936
|
||||
01058880ae67aded89986d9b3fd791b8:4c290e959d61881e870d43be24114ff6
|
||||
01027cfd8a17e5ce73838197c9ade68d:11216a23f9eeb2656552a46a5f075830
|
||||
01018037f262cb1a342786b186debfe8:010353bfefc7f4137c52ae145c2a210a
|
||||
Constantine (2005)
|
||||
0100a28fc8e0342fa86e9069c71d38cf:c56618c167dab5c70394266af0fe1620
|
||||
0105cbc8989234e5aaff9d526152b0a1:bda3bb5e4f5258198dc81335d5f9cda2
|
||||
01019ad2190d5dc33d03abac524a18cd:7645205622d965e678cc215b7e95f89d
|
||||
V De Vinganca (2006)
|
||||
010096cb1ee693ccb48bd8bc490e9751:b96c4609105c2cef2f905a41906f1877
|
||||
0105520057217819b40d1936bc713ebf:76587f94092cdbde301ba0ebd81d5848
|
||||
01010666fe412705fa771636f89c0fc8:2dafcf73e2c62eeacd0f6df443d40327
|
||||
Roswell New Mexico S01E01 - Pilot
|
||||
010009f9459677f87e91d91dfec31221:7a6a0b3f555dbfbb14690454ae1d6dda
|
||||
0105a7bdb64bc304a4c5c0e4220c1c85:b3bf946609894e3143164b4f29a3ac2c
|
||||
0102c99421c06470517caa1b2d8500b8:8841f7ec433dc436cb83b1cabbf94cf4
|
||||
010105371ec1c248d4f7347a92327330:5d3b50f6537f990e4ad15064fb042989
|
||||
Roswell New Mexico S01E06 - Smells Like Teen Spirit
|
||||
010034443f4e7bc81b5a406b3a4b5163:926f97e2d93584efa27041fec0f549d1
|
||||
0105a746eaf16eaab8df5c4308a5d63b:0412fa441d6f1cd44ca92ea014f07a11
|
||||
0102323a46e8b950b01b534a43a3fbc5:fc8d9449d0fa3bb19a952443f6ce70fd
|
||||
0101379f3ee6ceffbf11323803a81176:cca7ead90ee511ef0e38c2b59017804a
|
||||
Roswell New Mexico S01E07 - I Saw The Sign
|
||||
01007d4a6ea40d8c5be14b4cb37fa60a:94e005d1b0f02254f18cc8b3f6dcdb69
|
||||
0105b60a05f571c44553320aecbbae19:59ec4a87cba2fc2df042486c4e1501c9
|
||||
01020524d0e5a38ef18932e46d365969:eb71d5e0d4ce5667bc795e8e819e1330
|
||||
0101b918f70f4b6faa9f2f398d22f00d:e6e8bead456741b747e720bd57b9d6da
|
||||
Roswell New Mexico S01E08 - Barely Breathing
|
||||
0100782e5f39937f061d233438013591:9a65b3b177ba184180068511fa234174
|
||||
010564ea37554c7432227b31d2b8e405:04ef7d92f2c7c0fa3020f5763827e2b7
|
||||
0102002f74ffa263d7c9fc24e9774896:5fa1647d6dab73d65508b9bca11726be
|
||||
010161303ce5b78c279f02846f2f4805:eeccb06b757604d50ad7c7c7fa58b4f8
|
||||
Roswell New Mexico S01E09 - Songs About Texas
|
||||
0100b9738d03173c982180911b0b8950:387282e8cccd4955baa5d28166e84065
|
||||
0105612a51be75d205e5081c26a31898:77134361436e3d6759e856d249d6c173
|
||||
0102664f8ef4015db568a7dade8b9957:3b934aafcb07bc45ba1c6539f43e80fd
|
||||
010103e49729c908b66086f1482ed1d2:1b72c8fda103607a20e8bf033588bbc8
|
||||
Roswell New Mexico S01E10 - I Dont Want To Miss A Thing
|
||||
0100a2e059ca2ad0c9e97b3434ecaba0:aaa4a9285197d54b3889eea9bec4eb39
|
||||
01055c61e9b0afe4c4acb6e57feef77b:f8468d15eb82088ad0a927eaf19b1f2c
|
||||
0102e5094f19e36fbdf79ebdd064b905:0e3b9badc03ec540c63e894c46cbc7ab
|
||||
01019f2d0cae2be25cc2e7aa3a6b7c30:b5e0b5d687677a8706cd25ddcdab8840
|
||||
Roswell New Mexico S01E11 - Champagne Supernova
|
||||
01005b94358a875f8d6617779bec40ac:ad37e726fac17480cb4a85a34046c752
|
||||
010523fb3e0e2bce86427b3a39738f96:4a49ad96a833ddb32d6ce863ea5e3300
|
||||
01029b07ecbcff2ffdd601a7f21e0594:5e020da6eb0b3787292e4fca71b638da
|
||||
01011dbaddf66721ec26e83de8fc5a9a:dceebce554e274dd2f8f3db354e37997
|
||||
Roswell New Mexico S01E12 - Creep
|
||||
0100cac8353d3c6787e054c2b488f2af:ba47001f333895161ecb15710228ec48
|
||||
0105800191f10bf4804198709e825e78:9992fb4023ac7c3232fea229eadb7247
|
||||
01029c8b7bbccc661a00965e5c3f9825:3bf0049865751ea48ade9b3d12512f2e
|
||||
0101516d7b235ddcd0f6f09df2c9386f:fd7e04d4a74540213b98a072c671a4c1
|
||||
Roswell New Mexico S01E13 - Recovering the Satellites
|
||||
0100f2351021ae7dd608b4cb49d89174:c8de71653719fb128a11f55384bcfc55
|
||||
010593faace129e34978202ed76f40a2:056130c72c5cbfa8861d6429c8e9ad3b
|
||||
010245a904a8da7ae2e0dcaca3eada0e:867df482bc59b05edc184d7dc8230e64
|
||||
0101a5cfc82dee23ccb5f755690d02e7:37b8160904d675fed201ce6f28d9e58a
|
||||
Roswell New Mexico S02E01 - Stay I Missed You
|
||||
010055e93ba1d37f640ff15831420cb4:f1ffba9635c9ba8736e74d11664f3861
|
||||
010583d603a8ecc72c4ae5cd0b8df6d3:e8c9da174ea524f1d21e79170064c23c
|
||||
010282ca77c5c6e9706850c5f9c4a935:33f5f604a36af1340a6c37ae0039c39a
|
||||
0101042ea1a5c2ff8a01b865d468e29e:3a17fb9ef920f2dcb97c55791ba2ff54
|
||||
Roswell New Mexico S02E02 - Ladies and Gentlemen We Are Floating in Space
|
||||
010000ac254ee1626d6784b34792b67e:5adecbefeb06305e2159d0227519b875
|
||||
0105bfa934bbf4977bce5ebb3e06e06c:1c693045499ace70660465480483f8a6
|
||||
010253d663e0b7bf99a9aa36c9618ab5:342709a8d38f5d465261b629df184aef
|
||||
0101686551fb96dc2f3d85ef609c53c5:1edec050dfceaa348ad8b1086a5a8f18
|
||||
Roswell New Mexico S02E03 - Good Mother
|
||||
01001d6f712eeae283179ab38e5603ab:783250752649649564daa266fed62211
|
||||
0105402438b79202cbb0684f3927c5b1:46be973eb922160f7bc3dffd58e7ffb7
|
||||
01023fe7621a1cd99b3630f07d98e187:ea65b608358103e9488fa1d031ad5319
|
||||
0101802d9b5715dd523dd73fea64292c:5043808db6b3dc251c7b43696a93065a
|
||||
Roswell New Mexico S02E04 - What If God Was One Of Us
|
||||
01009751d7168cde6f9e3dc3cadafe23:32f5a338462392131a89e163150e96ad
|
||||
0105832d4f2d2d08211abeb798aa60a7:d287ef2a28616a9e03b176e8e5c9ffcd
|
||||
01023650f1ea9b8505d7b25ff9ddd9ba:fa2ec0df5ea493e982b024e839a14d2f
|
||||
0101a58a6c0cc0fe1d8b9eb79c75c84d:034775c84ef646caf593547bbd027160
|
||||
Roswell New Mexico S02E05 - Ill Stand By You
|
||||
01003c170610acdc145705925c75dc8b:4e03ed142b3d3afd6ede3e8222469de0
|
||||
01053fa90075e56507d2f08d07418453:43a859f3a0c609909e3ef97836f6a089
|
||||
010247764dfd8b01bd94d35996268f2e:cef69b6a979225da5db5a6a9b004fa1c
|
||||
01018a1da07eb10957df4f08badb212e:5f61c40d86ca117d1c000779c5fce26b
|
||||
Roswell New Mexico S02E06 - Sex and Candy
|
||||
0100c9859aa41447c281fbee144eb3ca:40b2ad310838bd37717d1dc0d6d2eca3
|
||||
010525ba85b6a8424e336f0be886c611:82f7e7b28558bed9fc40f9c8511a1e10
|
||||
0102d639e7b1f52df71d4f65825a7de6:8c20b5ff3ed796731ee921cd97542f08
|
||||
010182bce7a49e69c13b86cf9150d5ea:584a366522669f1d8e7659b6d6029fd3
|
||||
Roswell New Mexico S02E07 - Como La Flor
|
||||
01001b413d2ccb50474f0d880745f3c4:d292e5f949d34d90fdb945ea00740098
|
||||
010529a8174856d7cad1a986209bb5c7:65b41e85079359df44d5d6ff718fddd4
|
||||
0102618670e1aa05e4c9c46b0d5f3fd9:43a21bcbd6f5eec2671c1d0fbadadeb5
|
||||
010157d4d2eb11cb63f7213e34f063ed:a5c9fe3cc669f3f5859101c2f1bf3307
|
||||
Roswell New Mexico S02E08 - Say It Aint So
|
||||
0100bedd87f02e11a747c43ef356b72e:2503e4ab728e5cde26857e76d00365df
|
||||
0105d127239b734a806f233384c6c9df:8f85088049d0f6bfa1f5198b37366136
|
||||
01027b32a815863e1e6fa75716275f9d:6a3c68b3128041e1ac1ebb755421c8d3
|
||||
010123fb1757ec91b45ed56957113074:6e5ced55be74e7e033d88e4a3a7534c6
|
||||
Roswell New Mexico S02E09 - The Diner
|
||||
0100e1f297458d05a76eaed3cf707eb7:1ca521fa6dfb6fe1cb60f0747a37affe
|
||||
0105ff7a4f71564cbc06f14dc1eb8449:e5a065a6c12461e2b07a6e9203946d60
|
||||
01027f165b3eea634c9133e0c9e0b393:277b885c14ea631fd257a9a411f2d66b
|
||||
0101ad07886f6daa9b75e5529f2959bc:1857d8bcbeebc47fc205c8b93d08a404
|
||||
Roswell New Mexico S02E10 - American Woman
|
||||
0100d36028910f5f9b24a643e1698fcd:1088bd62e153f23d8043d24a3509380a
|
||||
0105c9dc1361ab8600255fba8af57296:68be26b8fc07a78e63a7d3debf810c64
|
||||
0102427c557dfcc23459d547a8a44d73:65c3e1667bb8508319e42af3851e6684
|
||||
0101b4daf13d1e085154921bc5337d59:ecfb22dbd453fe88b10d2eb55a170e6c
|
||||
Roswell New Mexico S02E11 - Linger
|
||||
010016090cfe549f0643884b39e3eee5:8f9ae671bf9386e77acbe911280cfc23
|
||||
01056e0953089b990bc39acca0232bcf:c3d86b7ca874e710444dec12d3cc5859
|
||||
0102bbe47be3edb9b89e21817f31a3a9:80e294ade70dfacf27276ea5dfdd902f
|
||||
0101dd3d866e9543a4f8f85db766310b:c385ede674dc33e30ec640745ec9f843
|
||||
Roswell New Mexico S02E12 - Crash Into Me
|
||||
0100012a101dc5708561a136b086d145:7ce8957327b017415fa40673deb088ee
|
||||
01052ec32bc339314664e7b99ed2f5be:1bb4e43ccda18143ade33be872b4d311
|
||||
010251ac1b67c50cb4d7c95e083a09f7:2a893ffba30e18bb9327eb2977a1d3dc
|
||||
01018cc4c476b5aa25290c03480933bc:372ede34c3519699f338c27a7088b19a
|
||||
Roswell New Mexico S02E13 - Mr. Jones
|
||||
0100e12f3fe7b6a545324f33d951caed:1afb8cb18d7874b3acece3c6c07df860
|
||||
0105d249d96c6fab93d1c3e313effcf0:459830b4933df00de270b92c5a883bdc
|
||||
01024b21ea6e6ea711ace86d1a55e4f1:97977e8d89f138055aef5ccf86d09bf6
|
||||
01018e618a3607c17602f97fe730b053:13f6347051f503712b89bf4737f73532
|
||||
Batwoman S01E06 - Ill Be Judge Ill Be Jury
|
||||
0100035d436fd3a38a4c67f52573795a:1070f9f940999f6668bf84ecd35bc25c
|
||||
01051df4f69aa25f62357fa6ab29998a:564637292b4cb57a8ead1b82cb477962
|
||||
01021af52e84005c77165fa8f5d5dba2:1d20fa6ac6811bd928a63e7c61fd532f
|
||||
01016d45285579f0b6e18f99c3cfe39c:32e8db3b1cf4c6e055efd19c089d7c1d
|
||||
Batwoman S01E07 - Tell Me the Truth
|
||||
0100d25d1d3f643e1375ba89566b6278:5d5fac6df13d4971d02df9abcefe7643
|
||||
0105e8ed57956430dbdf6c1e81cc294b:6ec6a00938e5b5e636bbb3539cb272ce
|
||||
01027f276f8031e04ab0b4ec6428bb41:853f4d05533edbd3cd68a5e5895e2919
|
||||
01013a9c3e68630d14e4229f8390e780:41fc467d248521addd83c91f53694253
|
||||
Batwoman S01E08 - A Mad TeaParty
|
||||
01009c66f4d085d088a2ab296a77e236:69d15a1be1d1af6ed8b59f9e9b070d2d
|
||||
0105c96898605d53d193e3ccea19eb2c:ae7e989db4d7d3557b7b809faab52e47
|
||||
01029dfd6f8068ca2d5b9e59ef221d45:5f9c617ccc9b998c8286c8ce1301c84a
|
||||
010134898d8d9e2ac6628fde4539e65a:3ffac8954cf5ceadfcb3b876eac90d6d
|
||||
Batwoman S01E09 - Crisis on Infinite Earths Part Two
|
||||
01004886cd5197e5cc90675b5d28b9fe:46ded550117402ce124db576452bb76c
|
||||
01058f4e3f078e386b61f565a967b07a:44b226f2f5b8d473b9ff73674e1d3f57
|
||||
01029ab729da9b7830eadc016b508f13:293dd873bc8bae539982c502a6ba7ce7
|
||||
01011c4340d1e63b831278f3a4d2bba0:078c67fdee03973ec6a990dbcf7cc0fb
|
||||
Batwoman S01E10 - How Queer Everything Is Today
|
||||
01000a64cb11f470025f7861dfea245a:6d200458ea6e5c76d745cd5f0e829362
|
||||
01055d2a5362c6782c7ffd323486a09a:1e9b76a5767be9a3e0f2c80a40cfea20
|
||||
0102d86a5d895f8f2ba83d37b79a2091:1782f785676eeecacff742ed2b7f208b
|
||||
01016c2da7936118823143f0326ecd02:fd262e5c19d05ee5b23b4e82069dfd4e
|
||||
Batwoman S01E11 - An UnBirthday Present
|
||||
01002ab23a6dc8570cee971720a9120d:22a4d9f94995210a6c91c200f042882c
|
||||
010578fadc01321fc91ed35208ca320b:db1d7713b323aea2ebd251679a82f42a
|
||||
010257259922aaa29c1a1b716ac3b639:213f968b7422156f264ee58ff7ece5a7
|
||||
010180a020a440a1bfd411119a29b287:f2d98d47a554dc590372c21c6104b0fa
|
||||
Batwoman S01E12 - Take Your Choice
|
||||
01000e9a1e5204c71cc677de16fd933f:cdb3b3ba7db9084fb878d90821d30f64
|
||||
01053f10dcb1eaad286c6532b422ddf8:57a5a7fd74fe851b20a4050f179bae67
|
||||
01025d50b1578f95e994b19582efd860:202007c453cae0148fa14ac0095b3af6
|
||||
01015d239cb82d487d3e5636bbfad079:629438e17c8671607fee73e8ede4ab22
|
||||
Batwoman S01E13 - Drink Me
|
||||
0100884863936f6672128402a9acd8c5:8a453eeb7af6d8d51a8b7068ccfe6641
|
||||
010581ee86847d2e3c818d47fe1b30fe:7c052539028c5b6a74ceb06aa1f8ebb4
|
||||
01025805daff8af753dd39dc68ec1815:a1f0b35fbc5719243274d6e706e176f6
|
||||
0101b8adc416982e92eacee5a4b18f1f:37ef15b8d35efd9228905a7070bad093
|
||||
Batwoman S01E14 - Grinning From Ear to Ear
|
||||
010008d0e901958c2082ff2ce6088099:86b5d84862abe0a0a3f572c5c46cc5a2
|
||||
01057f104e7198972975ba84b6b541b8:ddbfa02956875473a716475c571dae5d
|
||||
010201e7e0ea9ed068fb3e0453184e35:37e23fb6384249d0697aae659ef0ed90
|
||||
0101cbf0440eb922dcf5fcccf0570767:4d47c2da04240526c5b25a196626c5c3
|
||||
Batwoman S01E15 - Off With Her Head
|
||||
0100eea2f5e0a428730c95806f7249cd:e2e6db528dafac89b3e7962fab63908b
|
||||
010535f25a3256ab232c5ddbeb81f012:41c2cb9451c329001c0a18b80c43d298
|
||||
010229edd2c096e619fa7f927caf97cf:ae3653fa959da30955ea6f8c83c403cc
|
||||
0101e4f72b01eb1cb4715784f07ceece:2a76eb4a2c4236dcc98837f04066842a
|
||||
Batwoman S01E16 - Through the LookingGlass
|
||||
010027922226ebb00a92105c085f4c4d:5c05d0608c14e86b88da68892b427706
|
||||
0105544adf7cf66b8ad8e9fe8a702047:1726c1ae555e855b157cf0157881f499
|
||||
0102719b3c51b0326d5c30f5a8946416:ec9b8f2d4eebc2673a496cad0afd5439
|
||||
0101d6eb53f4e0347945fba8c9130d2d:a78547c8c6cb47f035cee5d56e00be63
|
||||
Batwoman S01E17 - A Narrow Escape
|
||||
0100278fd6667cec4d1a631cdf796384:948d90a2e4dde44c954485f5b5ea80dc
|
||||
0105bd0d61743eba7c3cf5b04fb7bcdc:2a8b0e496aa7ad94a3a4d1bdc98ab35f
|
||||
0102830aad98fd995bbb9681f3a1f7d7:a8469b7875bd80a1ee7aef95279ede4b
|
||||
0101d894d56bca027d036d1164af4126:062fb193e464618a7d7e6a4bd7080d83
|
||||
Batwoman S01E18 - If You Believe In Me Ill Believe In You
|
||||
0100e7d1cc7d2f4fbc326ab64732c614:5dccf502aaa33bc9207e686df509f9ba
|
||||
01053d5a7f6bcca4ec10ea3a7b98e10f:ef28d2f6c0e14331fe618ce0e800655b
|
||||
0102fa83cf3a4825ba712cce81bacc41:5920b927611a8ed73ac62c7d7e5ba62a
|
||||
0101c622ab93565ca301835ec0f2511b:7b0b5c4004620f45ab0f042763696e3c
|
||||
Batwoman S01E19 - A Secret Kept From All the Rest
|
||||
01009499add899323e56c93a3b6cacf4:b1adf953667c7f87722ef95002b3a7e7
|
||||
0105295e8784d92b43eba52bebce3925:2d6582ec207ef31d1449ac56eaba83bb
|
||||
01029b257bd6d060d1f3a3e3de3aefe6:be4e0463eaa8ca6422b05290d77b6e53
|
||||
0101ea890c84392a4e54245cedab0c48:7ea76ac53dd68d01687e25c3f995659c
|
||||
Batwoman S01E20 - O Mouse
|
||||
01007f429a8a95178d08da9f0c2dee9b:5bf08eeb0fd96f063090f1ea1e2cd456
|
||||
0105eb376ad767a419ce1654a0a49e25:e196f8a0561331d57c6401877e10bcfd
|
||||
0102e2eef8c3d3de5ba578df060159f3:bd0147fd33459dde65e0802a21271be1
|
||||
0101215a2e0e22edb5c1cdbedbcfde23:28e09a6d987a52ec5df8dd3bbfd786f3
|
||||
Batwoman S02E01 - Whatever Happened to Kate Kane
|
||||
0100195fc40e55337ebe9e2c5c9f6b18:fdaecc6a251271b6421bed72c78b7d55
|
||||
0105c89526a76a69a36d8ec66a1184bd:a62bc8fedf13935496e284f5778a497d
|
||||
0102f7735eef546b3ba225515caa1ed3:1a4f9e4054189570cbf99aa7762e9f4b
|
||||
0101195a7385e588dd2455e36e8a5e3f:eab66efb9557ac3fdd85df45f437f989
|
||||
Batwoman S02E02 - Prior Criminal History
|
||||
0100b4d9d53f3633b9cc9e7a21fbc556:ef5851feffe14998c2cc4bd0e0bc055d
|
||||
010549a2945d735bba3dd43274939b8e:9872e4151ff3f95ece2a2067f5bb1caf
|
||||
010275c53a546b20bf7647a73fe98494:37196cd33af243279ef2722b38b3f26c
|
||||
0101b7694404a788549527493393762f:2f946a6f792be8529dd5f1db221937a6
|
||||
Batwoman S02E03 - Bat Girl Magic
|
||||
0100a5706a179fee0f576bbc429c269f:8144bcc919ae18b34ae2e2177912a11b
|
||||
01050d66178688aa7b254603127889ca:551a411ead678cfb7ffe7197a31aadb0
|
||||
01027d7a7dd4464bca3b4b4229a8a848:38e455dff11b4a340c25966ef8e94b59
|
||||
0101c978bb80268c723564c703c48eb2:af4a79ebf0b2fe7a8fa1d5ef4ed1b841
|
||||
Batwoman S02E04 - Fair Skin Blue Eyes
|
||||
0100c9d92ae6eb9a8d054f5c64dbc7f3:0897f739796e0b3d8a5098a58804763b
|
||||
0105a6d106a9caac09c7990cbe6922d4:ae8ed94d6a0dbfc2d87907fcbd208988
|
||||
01027727be2becb3801bb23ca5f82030:cd169d2316ae7c8cc1b5ace5105802f7
|
||||
0101c7e2f00526422737ecaec7cfbfd1:068ccaa9ba41121bdf9a671a6f6b76a2
|
||||
Batwoman S02E05 - Gore on Canvas
|
||||
0100785a4a08f4670ea51d3a27e58cf9:769874aab85443e8f3f748d5df91a18f
|
||||
01050c76675bb6ce29da708944bf6784:d75a72be1c65efc811473f5c5e2bdfb8
|
||||
010239a841c096e7bcdda365dacbb7b2:48445f8c87883bfcfef0fc36ae6534ab
|
||||
010185d38aa8b1f82a91a0a23ffff890:3e914a141727f9711a1c7525a9b24552
|
||||
Batwoman S02E06 - Do Not Resuscitate
|
||||
010067302a677a674b9be4be621102f0:ffd8ad6826e7f6d61850945a92d43632
|
||||
010566dee26f7208094d4733918fde49:72fcab9cfe718de35f1974a4a70c34cc
|
||||
010249de755d9eeb5339dc587e366ff3:b46bf47aea22e546a3723fd6eed3c99b
|
||||
0101f27f0727a7c31b71008c7675b7aa:0671dd811f889beaa942a56df1b1b406
|
||||
Batwoman S02E07 - Its Best You Stop Digging
|
||||
01001ccca8ef2d5dbdb860c8f1ce5c61:75e69bda9b37058dcbda7da681c89c1f
|
||||
0105b856318d8610a2e93852c4a06c2b:dfa1886f3e7806547f220626879ff261
|
||||
01027c26e9750fef7aa25d3210872d64:2f3870c689616032d949c9db19985d51
|
||||
0101cd39afdcbcc06956ab9ae342ac63:2ae5e2a56f53660c4a54b553c5b2d6a2
|
||||
Batwoman S02E08 - Survived Much Worse
|
||||
010038429c900119a5837907df39e84c:56a45e9a47b31325f99f11278c59cf50
|
||||
010531e02e2f828a4e878ee57fe1aa36:ba75877b0c84eab324d9728853d7cf35
|
||||
0102dd204092dc81083e0ae685fbbbcb:b1ee9175b3e1f368c3900e3ff529b492
|
||||
010146121de7b4e8145707a9c1e4ca1a:f300e28d1808d53dc21695373e47b63b
|
||||
Batwoman S02E09 - Rule 1
|
||||
010075d63eb37e1c8cefb01fe1480bc1:45de633f9841312698535cce35b89e69
|
||||
010544c8ef36126b4ef2d23691348687:22268c051049c705538ef008923c6fea
|
||||
010212d6be72ea1061b0ecc51030d37c:13c731c1e293bfecd99d53f3f9365a12
|
||||
010137223021b950c1f0f6c9c490ba85:4c2abd22a6230d15959fedbcd6279bb6
|
||||
Batwoman S02E10 - Time Off for Good Behavior
|
||||
010085342cff58ddfedaf55d11b5e7b3:b6b52880e492c945e876d873b66cf65e
|
||||
010587e645752c67b65c55ed2edd2e9e:33975f1b9a5d240de589b405e6e5747d
|
||||
01020d63aeee2f671edbe5095245f0f4:ae95ccaf09ecff58ee85b9bd0f7d0cdb
|
||||
0101ce423176a0c35b8bf3ae2f3f5d23:25ddd879474fa73d33c60ce6737e5c29
|
||||
Batwoman S02E11 - Arrive Alive
|
||||
01007f4ec4b3d8b75800804c17b592ea:668c05c2794fa19f0b04b1f892b7dc42
|
||||
0105802fecfb861e1d9737d131532114:9e3c7395dd581298526ebcb61a7c92fd
|
||||
010239033eb000df46e69eb432549eb0:a08ee9f02ab8888f364d13e157f448ef
|
||||
01015bb29f71f8ff1b7b144a8ab05bc0:8c99cdc981fe0e1f9f8e8a71bccffaff
|
||||
Batwoman S02E12 - Initiate SelfDestruct
|
||||
01004d5bbd5243775c78166fa0b89df6:16516f29315498b6f2e9560307fda7a1
|
||||
0105de80a6ff76c7eaef30a72d56cdc8:19a58cf6c3e652ee9bd48642c176d86e
|
||||
010202d7403ad7de57669411bec8f6f1:3fc4d134442ebf69feb06df300b5d016
|
||||
010196bb776270cc0572ba965646d6b5:f7862b33719a782397e78b9f247aad4e
|
||||
Batwoman S02E13 - Ill Give You a Clue
|
||||
0100fb47d5ca8cdfb21bb659e262bee5:10f38081af0bda73c82443328cb49703
|
||||
0105af1b452522d5f5440768bfd0d56b:254be27bb967020e68c9a5d5d73e38d5
|
||||
0102ec412eefb75828dc9a72e583009c:da566dfaaeee1ece0af84f6d30f0edc4
|
||||
0101cb4d2d717d2253c43ee8d9b60a04:4d0076282cf7a9be56995a8c0f8d8bfe
|
||||
Batwoman S02E14 - And Justice for All
|
||||
01008877409569af4a2ead433f5af718:6ccaffc68f3a6aa2aaf98b8496b0ecbb
|
||||
0105fa00a369032379aa208fb46fc303:99121febd1ae9cdf2c472a68cc1b8e5b
|
||||
0102e3230f21c8bff8004740d89645cb:751687d4340d81c174d0f712d5dbcae0
|
||||
0101ebdbd11b670e91c268874c3109b0:7e4f10f5a0790c62ebe9dc4d5de9d33e
|
||||
Batwoman S02E15 - Armed Suspect
|
||||
01006ba0ea1f70084983e770c630bb36:c5f58a392516ac21ea1300ea04a669e5
|
||||
01055bd10b9f06d738e3d9a2b13edc7c:d492ed34fa7149844c7bf03c8ae47721
|
||||
0102b306556fb84582aa409ac4b6a584:281d9dd82d8843ca41f7092670d48800
|
||||
010152228cd2e39ea973f88d973dcd62:d93bdeb9dde3737e90a8fafc4df21427
|
||||
Batwoman S02E16 - Rebirth
|
||||
010021bc64ac431f4df958583a483201:086f250bf075edd18a24e8fa6f8ed65b
|
||||
01052ab94f1f64018300d1bb3077802d:91d163a8aacc0544e70f7eea763b3833
|
||||
0102089519e709cba16179a3ca398904:e0a082c1b0e34fd3cabc73265993ffd2
|
||||
010108362bd69113b4d27d7d986eb055:c683ed40543517865cdcf850c7ca5822
|
||||
Batwoman S02E17 - Kane Kate
|
||||
0100e13e59e28292dfe6e08991c0e61e:24f3a32b3ef62df60777e75baf540cde
|
||||
01056dce7c173e82c3eca7ed6f1d2b75:91ab12140d5c3ccaf4561fb3eab4213d
|
||||
010246b98e624bf1bb31458f857c22a8:97f45fd8d9c60d1e6b6f5591abae8d1c
|
||||
0101f682ea4a056ba5511f777c82fd0d:f6f9b45c4ad53548fafc97d1e309e5cc
|
||||
Batwoman S02E18 - Power
|
||||
0100c5624fc4fa47b5c771ba1f0879de:d5410e4831ba98d33ff18303aee40227
|
||||
0105eb5c07d078585c774abe909ca767:d3e9ddd1ec2bba81db00179c251571b5
|
||||
01028220ac9cd86cf7bbd47c6393b597:e329fc2c41fc6221a8eb84964c9f1c85
|
||||
0101b59a867c9c344c33bb9564a7812c:ff99c5cbca7e80dffedb4148bc21e5d5
|
31
KEYS/PARAMOUNTPLUS.txt
Normal file
31
KEYS/PARAMOUNTPLUS.txt
Normal file
@ -0,0 +1,31 @@
|
||||
##### One KEY per line. #####
|
||||
Un Lugar en Silencio (2018)
|
||||
32c7ac2797ae4ca8990cdb917f418a28:9363b26f7c599512db7f33b2eda3eeae
|
||||
Un Lugar en Silencio (2018)
|
||||
32c7ac2797ae4ca8990cdb917f418a28:9363b26f7c599512db7f33b2eda3eeae
|
||||
Sabrina the Teenage Witch - Piloto S01E01 - Piloto
|
||||
540009bd9b0f4e1bb4655cf7c0a30ab6:bbbc41bb980fbf4134eec5d9288d676d
|
||||
Sabrina the Teenage Witch - Viernes De Panque S01E02 - Viernes De Panque
|
||||
78fa06031ee94c2f9b1a7feebefd9dd1:86d96275eb806d5f3156ca1a45c30251
|
||||
Sabrina the Teenage Witch - Viernes De Panque S01E02 - Viernes De Panque
|
||||
78fa06031ee94c2f9b1a7feebefd9dd1:86d96275eb806d5f3156ca1a45c30251
|
||||
Sabrina the Teenage Witch - Viernes De Panque S01E02 - Viernes De Panque
|
||||
78fa06031ee94c2f9b1a7feebefd9dd1:86d96275eb806d5f3156ca1a45c30251
|
||||
Familias De La Mafia S01E02 - Parte II
|
||||
69e84b2e7fee46bc9630c7b4e8256d79:247b446e06c2d83d1ec70cb5cb2b50a2
|
||||
Familias De La Mafia S01E01 - Parte I
|
||||
db6595d6f64444208e0e0cc2080f2d50:89ad3c24568875c667293edb841eb74b
|
||||
Familias De La Mafia S01E01 - Parte I
|
||||
db6595d6f64444208e0e0cc2080f2d50:89ad3c24568875c667293edb841eb74b
|
||||
Los Padrinos Mágicos S05E01 - Día De Mudanzas Secreto De Familia
|
||||
4805cc1c5c554ec7b009c5203f559e50:066732c2c49451ecc13c3e1a68c4a376
|
||||
Los Padrinos Mágicos S05E02 - Mi Hermano Mayor Qué Diferencia Hay
|
||||
5634bd83530a4352a9eb05cbe3a17807:8ac3a06198dff4e5ec4155fd30b76841
|
||||
Los Padrinos Mágicos S05E03 - Un Ataque De Inteligencia La Academia Del Ocio
|
||||
f204b48ccb08400e87c3ec1b76a4954e:6adabdf7f867be3a42b0690d4b390739
|
||||
iCarly! S01E101 - Un Nuevo Comienzo
|
||||
41432623869945ee962c02bcac0109ea:baf729e875fb5431a2f2059189c54e60
|
||||
Acapulco Shore S08E14 - Invitadas Sorpresa
|
||||
873043e2654246fd9fc51fea9833b0c5:fc6e03c6222a77d760dbeff5869960eb
|
||||
Acapulco Shore S08E15 - La Fiesta Final
|
||||
31a46457e5784ceba40fe333b093d758:d1cd078dd97676c2fc787976882c72ec
|
6
PARAMETROS GENERALES_muestra como descarga.txt
Normal file
6
PARAMETROS GENERALES_muestra como descarga.txt
Normal file
@ -0,0 +1,6 @@
|
||||
python bad37.py --url httpsplay.hbomax.comfeatureurnhbofeatureGX9KHPw1OIMPCJgEAAAAD --alang es-la en --slang es-la en -q 1080p
|
||||
pause
|
||||
|
||||
para blim descargar la mejor calidad es el comando asi
|
||||
|
||||
python bad37.py --url https://www.blim.com/asset/7607 -s 10 -c playready -e 1
|
40
README.md
40
README.md
@ -1,2 +1,38 @@
|
||||
# HBO-MAX 4k Downloader
|
||||
Download from HMAX
|
||||
|
||||
<div size='20px'> #HBO MAX- BlimTV -Paramount plus 4K Downloader
|
||||
</div>
|
||||
|
||||
<div size='20px'> Tool To download 4K HDR DV SDR from HBO MAX- BlimTV -Paramount plus
|
||||
</div>
|
||||
|
||||
<p align="center">
|
||||
<img width="200" src="https://github.com/Kathryn-Jie/Kathryn-Jie/blob/main/kathryn.png">
|
||||
</p>
|
||||
|
||||
<h1> Hello Fellow < Developers/ >! <img src = "https://raw.githubusercontent.com/MartinHeinz/MartinHeinz/master/wave.gif" width = 30px> </h1>
|
||||
<p align='center'>
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<div size='20px'> Hi! My name is WVDUMP. I am Leaking the scripts to punish few idiots :smile:
|
||||
</div>
|
||||
|
||||
<h2> About Me <img src = "https://media0.giphy.com/media/KDDpcKigbfFpnejZs6/giphy.gif?cid=ecf05e47oy6f4zjs8g1qoiystc56cu7r9tb8a1fe76e05oty&rid=giphy.gif" width = 100px></h2>
|
||||
|
||||
<img width="55%" align="right" alt="Github" src="https://raw.githubusercontent.com/onimur/.github/master/.resources/git-header.svg" />
|
||||
|
||||
- 🔭 I’m currently working on Java scripts
|
||||
|
||||
- 🌱 I’m currently learning Python
|
||||
|
||||
- 👯 Sharing is caring
|
||||
|
||||
|
||||
- ⚡ CDM IS NOT INCLUDED BUY it from wvfuck@cyberfiends.net ⚡
|
||||
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
128
bad37.py
Normal file
128
bad37.py
Normal file
@ -0,0 +1,128 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module: BAD Project
|
||||
# Created on: 01-06-2021
|
||||
# Authors: JUNi
|
||||
# Version: 1.0
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
#Common:
|
||||
parser.add_argument("content", nargs="?", help="Content URL or ID")
|
||||
parser.add_argument("--url", dest="url_season", help="If set, it will download all assets from the season provided.")
|
||||
parser.add_argument("--tqdm", dest="tqmd_mode", help="If set, will download with threading", action="store_true")
|
||||
parser.add_argument("--nv", "--no-video", dest="novideo", help="If set, don't download video", action="store_true")
|
||||
parser.add_argument("--na", "--no-audio", dest="noaudio", help="If set, don't download audio", action="store_true")
|
||||
parser.add_argument("--ns", "--no-subs", dest="nosubs", help="If set, don't download subs", action="store_true")
|
||||
parser.add_argument("--all-season", dest="all_season", help="If set, active download mode.", action="store_true")
|
||||
parser.add_argument("-e", "--episode", dest="episodeStart", help="If set, it will start downloading the season from that episode.")
|
||||
parser.add_argument("-s", dest="season", help="If set, it will download all assets from the season provided.")
|
||||
parser.add_argument("--tag", type=str, required=False, help="Release group tag to use for filenames")
|
||||
parser.add_argument("-q", "--quality", dest="customquality", type=lambda x: [x.rstrip('p')], help="For configure quality of video.", default=[])
|
||||
parser.add_argument("-o", "--output", dest="output", default="downloads", help="If set, it will download all assets to directory provided.")
|
||||
parser.add_argument("--keep", dest="keep", help="If set, it will list all formats available.", action="store_true")
|
||||
parser.add_argument("--info", help="If set, it will print manifest infos and exit.", action="store_true")
|
||||
parser.add_argument("--no-mux", dest="nomux", help="If set, dont mux.", action="store_true")
|
||||
#parser.add_argument("--force-mux", dest="force_mux", nargs=1, help="If set, force mux.", default=[])
|
||||
#parser.add_argument("--langtag", dest="langtag", nargs=1, help="For configure language tag of MKV.", default=[])
|
||||
parser.add_argument("--only-2ch-audio", dest="only_2ch_audio", help="If set, no clean tag subtitles.", action="store_true")
|
||||
parser.add_argument("--alang", "--audio-language", dest="audiolang", nargs="*", help="If set, download only selected audio languages", default=[])
|
||||
parser.add_argument("--slang", "--subtitle-language", dest="sublang", nargs="*", help="If set, download only selected subtitle languages", default=[])
|
||||
parser.add_argument("--flang", "--forced-language", dest="forcedlang", nargs="*", help="If set, download only selected forced subtitle languages", default=[])
|
||||
parser.add_argument("--no-cleansubs", dest="nocleansubs", help="If set, no clean tag subtitles.", action="store_true")
|
||||
parser.add_argument("--hevc", dest="hevc", help="If set, it will return HEVC manifest", action="store_true")
|
||||
parser.add_argument("--uhd", dest="uhd", help="If set, it will return UHD manifest", action="store_true")
|
||||
parser.add_argument("--license", dest="license", help="Only print keys, don't download", action="store_true")
|
||||
parser.add_argument("-licenses-as-json", help="Save the wv keys as json instead", action="store_true")
|
||||
parser.add_argument("--debug", action="store_true", help="Enable debug logging")
|
||||
parser.add_argument("--aformat-51ch", "--audio-format-51ch", dest="aformat_51ch", help="For configure format of audio.")
|
||||
parser.add_argument("--nc", "--no-chapters", dest="nochpaters", help="If set, don't download chapters", action="store_true")
|
||||
parser.add_argument("-c", "--codec", choices=["widevine", "playready"], help="Video type to download", default="widevine")
|
||||
|
||||
parser.add_argument("--only-keys", dest="onlykeys", help="Only print keys, don't download", action="store_true")
|
||||
|
||||
#HBOMAX
|
||||
parser.add_argument("--atmos", dest="atmos", help="If set, it will return Atmos MPDs", action="store_true")
|
||||
parser.add_argument("--ad", "--desc-audio", action="store_true", dest="desc_audio", help="Download descriptive audio instead of normal dialogue")
|
||||
parser.add_argument("--hdr", dest="hdr", help="If set, it will return HDR manifest", action="store_true")
|
||||
parser.add_argument("-r", "--region", choices=["la", "us"], help="HBO Max video region", default="la")
|
||||
parser.add_argument("--vp", dest="videocodec", default="h264", choices=["h264", "hevc", "hdr"], help="video codec profile")
|
||||
|
||||
#Clarovideo:
|
||||
parser.add_argument("--m3u8", dest="m3u8mode", help="If set, it will return M3U8 manifest", action="store_true")
|
||||
parser.add_argument("--file", dest="txtpath", help="If set, it will download links of an txt file")
|
||||
|
||||
#DisneyPlus:
|
||||
parser.add_argument("--tlang", "--title-language", dest="titlelang", nargs=1, help="If set, it will change title language", default="es-la")
|
||||
parser.add_argument("--scenario", dest="scenario", help="Video API from DisneyPlus", default="chromecast-drm-cbcs")
|
||||
|
||||
#PROXY:
|
||||
parser.add_argument("--proxy", dest="proxy", help="Proxy URL to use for both fetching metadata and downloading")
|
||||
#proxy format: http://email@email:password@host:port
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
if args.debug:
|
||||
import logging
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
currentFile = '__main__'
|
||||
realPath = os.path.realpath(currentFile)
|
||||
dirPath = os.path.dirname(realPath)
|
||||
dirName = os.path.basename(dirPath)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if args.content:
|
||||
args.url_season = args.content
|
||||
|
||||
if not args.url_season:
|
||||
print('Please specify the URL of the content to download.')
|
||||
sys.exit(1)
|
||||
|
||||
if (args.url_season and 'hbomax' in args.url_season):
|
||||
mode = 'hbomax'
|
||||
import hbomax
|
||||
hbomax.main(args)
|
||||
elif (args.url_season and 'clarovideo' in args.url_season):
|
||||
mode = 'clarovideo'
|
||||
import clarovideo
|
||||
clarovideo.main(args)
|
||||
elif (args.url_season and 'blim' in args.url_season):
|
||||
mode = 'blimtv'
|
||||
import blimtv
|
||||
blimtv.main(args)
|
||||
elif (args.url_season and 'nowonline' in args.url_season):
|
||||
mode = 'nowonline'
|
||||
import nowonline
|
||||
nowonline.main(args)
|
||||
elif (args.url_season and 'globo' in args.url_season):
|
||||
mode = 'globoplay'
|
||||
import globoplay
|
||||
globoplay.main(args)
|
||||
elif (args.url_season and 'paramountplus.com' in args.url_season):
|
||||
mode = 'paramountplus'
|
||||
import paramountplus
|
||||
paramountplus.main(args)
|
||||
elif (args.url_season and 'disneyplus' in args.url_season):
|
||||
mode = 'disneyplus'
|
||||
import disneyplus
|
||||
disneyplus.main(args)
|
||||
elif (args.url_season and 'prende.tv' in args.url_season):
|
||||
mode = 'prendetv'
|
||||
import prendetv
|
||||
prendetv.main(args)
|
||||
elif (args.url_season and 'tv.apple.com' in args.url_season):
|
||||
mode = 'appletv'
|
||||
import appletv
|
||||
appletv.main(args)
|
||||
elif (args.url_season and 'wink' in args.url_season):
|
||||
mode = 'wink'
|
||||
import wink
|
||||
wink.main(args)
|
||||
|
||||
else:
|
||||
print("Error! This url or mode is not recognized.")
|
||||
sys.exit(0)
|
594
blimtv.py
Normal file
594
blimtv.py
Normal file
@ -0,0 +1,594 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module: Blim Downloader
|
||||
# Created on: 26-11-2020
|
||||
# Authors: JUNi
|
||||
# Version: 3.5
|
||||
|
||||
import requests
|
||||
import subprocess
|
||||
import xmltodict
|
||||
import ffmpy
|
||||
import time, shutil
|
||||
import glob, json
|
||||
import sys, os, re
|
||||
import isodate
|
||||
import oauthlib
|
||||
from oauthlib import oauth1
|
||||
from subprocess import Popen
|
||||
from titlecase import titlecase
|
||||
from unidecode import unidecode
|
||||
from pymediainfo import MediaInfo
|
||||
from os.path import isfile, join
|
||||
|
||||
import pywidevine.clients.blim.manifest_parse as manifestParse
|
||||
import pywidevine.clients.blim.client as blim_client
|
||||
import pywidevine.clients.blim.config as blim_cfg
|
||||
from pywidevine.clients.proxy_config import ProxyConfig
|
||||
from pywidevine.muxer.muxer import Muxer
|
||||
|
||||
from pywidevine.clients.blim.downloader_pr import PrDownloader
|
||||
from pywidevine.clients.blim.downloader_wv import WvDownloader
|
||||
from pywidevine.clients.blim.config import PrDownloaderConfig
|
||||
from pywidevine.clients.blim.config import WvDownloaderConfig
|
||||
|
||||
currentFile = 'blimtv'
|
||||
realPath = os.path.realpath(currentFile)
|
||||
dirPath = os.path.dirname(realPath)
|
||||
|
||||
def main(args):
|
||||
|
||||
SubtitleEditexe = shutil.which("subtitleedit") or shutil.which("SubtitleEdit")
|
||||
|
||||
proxies = {}
|
||||
proxy_meta = args.proxy
|
||||
if proxy_meta == 'none':
|
||||
proxies['meta'] = {'http': None, 'https': None}
|
||||
elif proxy_meta:
|
||||
proxies['meta'] = {'http': proxy_meta, 'https': proxy_meta}
|
||||
SESSION = requests.Session()
|
||||
SESSION.proxies = proxies.get('meta')
|
||||
proxy_cfg = ProxyConfig(proxies)
|
||||
|
||||
def alphanumericSort(l):
|
||||
def convert(text):
|
||||
if text.isdigit():
|
||||
return int(text)
|
||||
else:
|
||||
return text
|
||||
|
||||
def alphanum_key(key):
|
||||
return [convert(c) for c in re.split('([0-9]+)', key)]
|
||||
|
||||
return sorted(l, key=alphanum_key)
|
||||
|
||||
def convert_size(size_bytes):
|
||||
if size_bytes == 0:
|
||||
return '0bps'
|
||||
else:
|
||||
s = round(size_bytes / 1000, 0)
|
||||
return '%ikbps' % s
|
||||
|
||||
def get_size(size):
|
||||
power = 1024
|
||||
n = 0
|
||||
Dic_powerN = {0:'', 1:'K', 2:'M', 3:'G', 4:'T'}
|
||||
while size > power:
|
||||
size /= power
|
||||
n += 1
|
||||
return str(round(size, 2)) + Dic_powerN[n] + 'B'
|
||||
|
||||
def find_str(s, char):
|
||||
index = 0
|
||||
if char in s:
|
||||
c = char[0]
|
||||
for ch in s:
|
||||
if ch == c:
|
||||
if s[index:index + len(char)] == char:
|
||||
return index
|
||||
index += 1
|
||||
|
||||
return -1
|
||||
|
||||
def getKeyId(name):
|
||||
mp4dump = subprocess.Popen([blim_cfg.MP4DUMP, name], stdout=(subprocess.PIPE))
|
||||
mp4dump = str(mp4dump.stdout.read())
|
||||
A = find_str(mp4dump, 'default_KID')
|
||||
KEY_ID_ORI = ''
|
||||
KEY_ID_ORI = mp4dump[A:A + 63].replace('default_KID = ', '').replace('[', '').replace(']', '').replace(' ', '')
|
||||
if KEY_ID_ORI == '' or KEY_ID_ORI == "'":
|
||||
KEY_ID_ORI = 'nothing'
|
||||
return KEY_ID_ORI
|
||||
|
||||
def replace_words(x):
|
||||
x = re.sub(r'[]¡!"#$%\'()*+,:;<=>¿?@\\^_`{|}~[-]', '', x)
|
||||
return unidecode(x)
|
||||
|
||||
def downloadFile2(link, file_name):
|
||||
with open(file_name, 'wb') as (f):
|
||||
print('\nDownloading %s' % file_name)
|
||||
response = requests.get(link, stream=True)
|
||||
total_length = response.headers.get('content-length')
|
||||
if total_length is None:
|
||||
f.write(response.content)
|
||||
else:
|
||||
dl = 0
|
||||
total_length = int(total_length)
|
||||
for data in response.iter_content(chunk_size=4096):
|
||||
dl += len(data)
|
||||
f.write(data)
|
||||
done = int(50 * dl / total_length)
|
||||
sys.stdout.write('\r[%s%s]' % ('=' * done, ' ' * (50 - done)))
|
||||
sys.stdout.flush()
|
||||
|
||||
global folderdownloader
|
||||
if args.output:
|
||||
if not os.path.exists(args.output):
|
||||
os.makedirs(args.output)
|
||||
os.chdir(args.output)
|
||||
if ":" in str(args.output):
|
||||
folderdownloader = str(args.output).replace('/','\\').replace('.\\','\\')
|
||||
else:
|
||||
folderdownloader = dirPath + str(args.output).replace('/','\\').replace('.\\','\\')
|
||||
else:
|
||||
folderdownloader = dirPath.replace('/','\\').replace('.\\','\\')
|
||||
|
||||
def manifest_parse(manifest_url):
|
||||
r = SESSION.get(url=manifest_url)
|
||||
r.raise_for_status()
|
||||
xml = xmltodict.parse(r.text)
|
||||
manifest = json.loads(json.dumps(xml))
|
||||
if '.mpd' in manifest_url:
|
||||
length, video_list, audio_list, subs_list = manifestParse.get_mpd_list(manifest)
|
||||
base_url = manifest['MPD']['Period']['BaseURL']
|
||||
else:
|
||||
length, video_list, audio_list, subs_list = manifestParse.get_ism_list(manifest)
|
||||
base_url = manifest_url.split('Manifest')[0]
|
||||
|
||||
video_list = sorted(video_list, key=(lambda k: int(k['Bandwidth'])))
|
||||
height_all = []
|
||||
for x in video_list:
|
||||
height_all.append(x['Height'])
|
||||
|
||||
try:
|
||||
while args.customquality != [] and int(video_list[(-1)]['Height']) > int(args.customquality[0]):
|
||||
video_list.pop(-1)
|
||||
except Exception:
|
||||
video_list = []
|
||||
|
||||
if video_list == []:
|
||||
video_list = video_list
|
||||
args.novideo = True
|
||||
|
||||
audio_list = sorted(audio_list, key=(lambda k: (int(k['Bandwidth']), str(k['Language']))), reverse=True)
|
||||
BitrateList = []
|
||||
AudioLanguageList = []
|
||||
for x in audio_list:
|
||||
BitrateList.append(x['Bandwidth'])
|
||||
AudioLanguageList.append(x['Language'])
|
||||
|
||||
BitrateList = alphanumericSort(list(set(BitrateList)))
|
||||
AudioLanguageList = alphanumericSort(list(set(AudioLanguageList)))
|
||||
audioList_new = []
|
||||
audio_Dict_new = {}
|
||||
for y in AudioLanguageList:
|
||||
counter = 0
|
||||
for x in audio_list:
|
||||
if x['Language'] == y and counter == 0:
|
||||
audio_Dict_new = {
|
||||
'Language':x['Language'],
|
||||
'Bandwidth':x['Bandwidth'],
|
||||
'ID':x['ID'],
|
||||
'Codec': x['Codec']}
|
||||
audioList_new.append(audio_Dict_new)
|
||||
counter = counter + 1
|
||||
|
||||
audioList = audioList_new
|
||||
audio_list = sorted(audioList, key=(lambda k: (int(k['Bandwidth']), str(k['Language']))))
|
||||
|
||||
subs_list = []
|
||||
subsList_new = []
|
||||
if args.sublang:
|
||||
for x in subs_list:
|
||||
langAbbrev = x['Language']
|
||||
if langAbbrev in list(args.sublang):
|
||||
subsList_new.append(x)
|
||||
subs_list = subsList_new
|
||||
|
||||
return base_url, length, video_list, audio_list, subs_list, manifest
|
||||
|
||||
def get_episodes(ep_str, num_eps):
|
||||
eps = ep_str.split(',')
|
||||
eps_final = []
|
||||
|
||||
for ep in eps:
|
||||
if '-' in ep:
|
||||
(start, end) = ep.split('-')
|
||||
start = int(start)
|
||||
end = int(end or num_eps)
|
||||
eps_final += list(range(start, end + 1))
|
||||
else:
|
||||
eps_final.append(int(ep))
|
||||
|
||||
return eps_final
|
||||
|
||||
tokenIsOk = False
|
||||
os.makedirs(blim_cfg.COOKIES_FOLDER, exist_ok=True)
|
||||
BLIMLOGINDATA_FILE = join(blim_cfg.COOKIES_FOLDER, 'blim_login_data.json')
|
||||
SESSION, costumer_key, access_key_secret = blim_client.login(SESSION)
|
||||
|
||||
def get_auth_header(api_url):
|
||||
client = oauthlib.oauth1.Client(costumer_key, client_secret=access_key_secret)
|
||||
uri, auth_header, body = client.sign(api_url)
|
||||
return auth_header
|
||||
|
||||
def get_season(blim_id):
|
||||
season_req = requests.get(url=blim_cfg.ENDPOINTS['seasons'] + str(blim_id)).json()['data']
|
||||
|
||||
if 'episode' in season_req['category'] and args.season:
|
||||
blim_id = season_req['parentShow']['id']
|
||||
season_req = requests.get(url=blim_cfg.ENDPOINTS['seasons'] + str(blim_id)).json()['data']
|
||||
|
||||
if not args.season:
|
||||
args.season = 'all'
|
||||
|
||||
seasons = []
|
||||
if args.season:
|
||||
if args.season == 'all':
|
||||
seasons = 'all'
|
||||
elif ',' in args.season:
|
||||
seasons = [int(x) for x in args.season.split(',')]
|
||||
elif '-' in args.season:
|
||||
(start, end) = args.season.split('-')
|
||||
seasons = list(range(int(start), int(end) + 1))
|
||||
else:
|
||||
seasons = [int(args.season)]
|
||||
|
||||
if 'series' in season_req['category']:
|
||||
if seasons == 'all':
|
||||
seasons = [x['number'] for x in season_req['seasons']]
|
||||
|
||||
for season_num in seasons:
|
||||
episode_list = season_req['seasons'][int(season_num) - 1]['episodes']
|
||||
episodes_list_new = []
|
||||
for num, ep in enumerate(episode_list, start=1):
|
||||
episodes_list_new.insert(num - 0, {
|
||||
'id': ep['id'],
|
||||
'episode_num': num
|
||||
})
|
||||
episode_list = sorted(episodes_list_new, key=lambda x: x['episode_num'])
|
||||
|
||||
if args.episodeStart:
|
||||
eps = get_episodes(args.episodeStart, len(episode_list))
|
||||
episode_list = [x for x in episode_list if x['episode_num'] in eps]
|
||||
|
||||
for episode in episode_list:
|
||||
get_metadata(blim_id=episode['id'])
|
||||
|
||||
else:
|
||||
get_metadata(blim_id)
|
||||
|
||||
def get_metadata(blim_id):
|
||||
content_url = blim_cfg.ENDPOINTS['content'] + str(blim_id)
|
||||
info_json = requests.get(url=content_url, headers=get_auth_header(content_url), proxies=proxy_cfg.get_proxy('meta')).json()
|
||||
if 'episode' in info_json['data']['category']:
|
||||
blimType = "show"
|
||||
seriesTitles = info_json['data']['parentShow']['titleEditorial']
|
||||
seasonNumber = info_json['data']['parentSeason']['number']
|
||||
episodeNumber = info_json['data']['episodeNumber']
|
||||
episodeTitle = info_json['data']['titleEditorial']
|
||||
|
||||
if 'movie' in info_json['data']['category']:
|
||||
blimType = "movie"
|
||||
seriesTitles = info_json['data']['titleEditorial']
|
||||
releaseYearSearch = info_json['data']['airDate']
|
||||
releaseYear = re.search(r"^[0-9]{4}", releaseYearSearch)
|
||||
|
||||
if blimType=="movie":
|
||||
seriesName = replace_words(seriesTitles) + ' (' + releaseYear.group() + ')'
|
||||
folderName = None
|
||||
|
||||
if blimType=="show":
|
||||
seriesName = f'{replace_words(seriesTitles)} S{seasonNumber:02}E{episodeNumber:02} - {replace_words(episodeTitle)}'
|
||||
folderName = f'{replace_words(seriesTitles)} S{seasonNumber:02}'
|
||||
|
||||
start_process(get_manifest_url(info_json), seriesName, folderName, blimType)
|
||||
|
||||
codec = "mpd" if args.codec == "widevine" else "ss"
|
||||
|
||||
def get_manifest_url(api_json):
|
||||
video_json = api_json['data']['videos'][0]['files']
|
||||
for x in video_json:
|
||||
if x['type'] == codec:
|
||||
videoURL = x['path'].replace("AVOD.", "")
|
||||
if 'ss_629d09c4372f297f2760c820711c4d4737b14f26c25c55e58f1147819005089e' in videoURL or "468842.mpd" in videoURL:
|
||||
print("Lo sentimos, por el momento Blim no está disponible en tu país")
|
||||
sys.exit(0)
|
||||
break
|
||||
return videoURL
|
||||
|
||||
def get_drm_info(): # não está utilizando
|
||||
resp = requests.get(url=blim_cfg.ENDPOINTS['config'], proxies=proxy_cfg.get_proxy('meta')).json()
|
||||
wvlic = resp['widevineLicenseServer']
|
||||
wvcert = resp['widevineCertificateServer']
|
||||
return wvlic, wvcert
|
||||
|
||||
def start_process(manifest_url, seriesName, folderName, blimType):
|
||||
base_url, length, video_list, audio_list, subs_list, xml = manifest_parse(manifest_url)
|
||||
video_bandwidth = dict(video_list[(-1)])['Bandwidth']
|
||||
video_height = str(dict(video_list[(-1)])['Height'])
|
||||
video_width = str(dict(video_list[(-1)])['Width'])
|
||||
video_codec = str(dict(video_list[(-1)])['Codec'])
|
||||
video_format_id = str(dict(video_list[(-1)])['ID'])
|
||||
if not args.novideo:
|
||||
print('\nVIDEO - Bitrate: ' + convert_size(int(video_bandwidth)) + ' - Profile: ' + video_codec.split('=')[0] + ' - Size: ' + get_size(length * float(video_bandwidth) * 0.125) + ' - Dimensions: ' + video_width + 'x' + video_height)
|
||||
print()
|
||||
|
||||
if not args.noaudio:
|
||||
if audio_list != []:
|
||||
for x in audio_list:
|
||||
audio_bandwidth = x['Bandwidth']
|
||||
audio_representation_id = str(x['Codec'])
|
||||
audio_lang = x['Language']
|
||||
print('AUDIO - Bitrate: ' + convert_size(int(audio_bandwidth)) + ' - Profile: ' + audio_representation_id.split('=')[0] + ' - Size: ' + get_size(length * float(audio_bandwidth) * 0.125) + ' - Language: ' + audio_lang)
|
||||
print()
|
||||
|
||||
if not args.nosubs:
|
||||
if subs_list != []:
|
||||
for z in subs_list:
|
||||
sub_lang = str(dict(z)['Language'])
|
||||
print('SUBTITLE - Profile: Normal - Language: ' + sub_lang)
|
||||
print()
|
||||
|
||||
print('Name: ' + seriesName)
|
||||
|
||||
if blimType == 'show':
|
||||
CurrentName = seriesName
|
||||
CurrentHeigh = str(video_height)
|
||||
outputName = folderdownloader + '\\' + str(folderName) + str(CurrentName) + ' [' + str(CurrentHeigh) + 'p].mkv'
|
||||
else:
|
||||
CurrentName = seriesName
|
||||
CurrentHeigh = str(video_height)
|
||||
outputName = folderdownloader + str(CurrentName) + ' [' + str(CurrentHeigh) + 'p].mkv'
|
||||
|
||||
if 'ism' in manifest_url:
|
||||
if video_height == "1080":
|
||||
init_url = blim_cfg.init_files["1080p"]
|
||||
elif video_height == "480":
|
||||
init_url = blim_cfg.init_files["480p"]
|
||||
|
||||
if not os.path.isfile(outputName):
|
||||
|
||||
if not args.novideo:
|
||||
inputVideo = seriesName + ' [' + str(CurrentHeigh) + 'p].mp4'
|
||||
if os.path.isfile(inputVideo):
|
||||
print('\n' + inputVideo + '\nFile has already been successfully downloaded previously.\n')
|
||||
else:
|
||||
if args.codec == 'playready':
|
||||
prdl_cfg = PrDownloaderConfig(xml, base_url, inputVideo, video_bandwidth, init_url, 'video')
|
||||
downloader = PrDownloader(prdl_cfg)
|
||||
else:
|
||||
wvdl_cfg = WvDownloaderConfig(xml, base_url, inputVideo, video_format_id, 'video/mp4')
|
||||
downloader = WvDownloader(wvdl_cfg)
|
||||
downloader.run()
|
||||
|
||||
if not args.noaudio:
|
||||
for x in audio_list:
|
||||
audio_lang = x['Language']
|
||||
inputAudio = seriesName + ' ' + '(' + audio_lang + ')' + '.mp4'
|
||||
inputAudio_demuxed = seriesName + ' ' + '(' + audio_lang + ')' + '.m4a'
|
||||
if os.path.isfile(inputAudio) or os.path.isfile(inputAudio_demuxed):
|
||||
print('\n' + inputAudio + '\nFile has already been successfully downloaded previously.\n')
|
||||
else:
|
||||
if args.codec == 'playready':
|
||||
prdl_cfg = PrDownloaderConfig(xml, base_url, inputAudio, x['Bandwidth'], blim_cfg.init_files["audio"], 'audio')
|
||||
downloader = PrDownloader(prdl_cfg)
|
||||
else:
|
||||
wvdl_cfg = WvDownloaderConfig(xml, base_url, inputAudio, x['ID'], 'audio/mp4')
|
||||
downloader = WvDownloader(wvdl_cfg)
|
||||
downloader.run()
|
||||
|
||||
if not args.nosubs:
|
||||
if subs_list != []:
|
||||
for z in subs_list:
|
||||
langAbbrev = str(dict(z)['Language'])
|
||||
inputSub = seriesName + " " + "(" + langAbbrev + ")"
|
||||
if os.path.isfile(inputSub + ".vtt") or os.path.isfile(inputSub + ".srt"):
|
||||
print("\n" + inputSub + "\nFile has already been successfully downloaded previously.\n")
|
||||
else:
|
||||
downloadFile2(str(dict(z)['File_URL']), inputSub + ".vtt")
|
||||
print('\nConverting subtitles...')
|
||||
SubtitleEdit_process = subprocess.Popen([SubtitleEditexe, "/convert", inputSub + ".vtt", "srt", "/fixcommonerrors", "/encoding:utf-8", "/RemoveLineBreaks"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
for f in glob.glob(inputSub + ".vtt"):
|
||||
os.remove(f)
|
||||
print("Done!")
|
||||
else:
|
||||
print ("\nNo subtitles available.")
|
||||
|
||||
CorrectDecryptVideo = False
|
||||
if not args.novideo:
|
||||
inputVideo = seriesName + ' [' + str(CurrentHeigh) + 'p].mp4'
|
||||
if os.path.isfile(inputVideo):
|
||||
CorrectDecryptVideo = DecryptVideo(inputVideo=inputVideo, keys_video=blim_cfg.protection_keys)
|
||||
else:
|
||||
CorrectDecryptVideo = True
|
||||
|
||||
CorrectDecryptAudio = False
|
||||
if not args.noaudio:
|
||||
for x in audio_list:
|
||||
audio_lang = x['Language']
|
||||
inputAudio = seriesName + ' ' + '(' + audio_lang + ')' + '.mp4'
|
||||
if os.path.isfile(inputAudio):
|
||||
CorrectDecryptAudio = DecryptAudio(inputAudio=inputAudio, keys_audio=blim_cfg.protection_keys)
|
||||
else:
|
||||
CorrectDecryptAudio = True
|
||||
|
||||
if not args.nomux:
|
||||
if not args.novideo:
|
||||
if not args.noaudio:
|
||||
if CorrectDecryptVideo == True:
|
||||
if CorrectDecryptAudio == True:
|
||||
print('\nMuxing...')
|
||||
|
||||
if blimType=="show":
|
||||
MKV_Muxer=Muxer(CurrentName=CurrentName,
|
||||
SeasonFolder=folderName,
|
||||
CurrentHeigh=CurrentHeigh,
|
||||
Type=blimType,
|
||||
mkvmergeexe=blim_cfg.MKVMERGE)
|
||||
|
||||
else:
|
||||
MKV_Muxer=Muxer(CurrentName=CurrentName,
|
||||
SeasonFolder=None,
|
||||
CurrentHeigh=CurrentHeigh,
|
||||
Type=blimType,
|
||||
mkvmergeexe=blim_cfg.MKVMERGE)
|
||||
|
||||
MKV_Muxer.mkvmerge_muxer(lang="English")
|
||||
|
||||
if args.tag:
|
||||
inputName = CurrentName + ' [' + CurrentHeigh + 'p].mkv'
|
||||
release_group(base_filename=inputName,
|
||||
default_filename=CurrentName,
|
||||
folder_name=folderName,
|
||||
type=blimType,
|
||||
video_height=CurrentHeigh)
|
||||
|
||||
if not args.keep:
|
||||
for f in os.listdir():
|
||||
if re.fullmatch(re.escape(CurrentName) + r'.*\.(mp4|m4a|h264|h265|eac3|srt|txt|avs|lwi|mpd)', f):
|
||||
os.remove(f)
|
||||
print("Done!")
|
||||
else:
|
||||
print("\nFile '" + str(outputName) + "' already exists.")
|
||||
|
||||
def release_group(base_filename, default_filename, folder_name, type, video_height):
|
||||
if type=='show':
|
||||
video_mkv = os.path.join(folder_name, base_filename)
|
||||
else:
|
||||
video_mkv = base_filename
|
||||
|
||||
mediainfo = MediaInfo.parse(video_mkv)
|
||||
video_info = next(x for x in mediainfo.tracks if x.track_type == "Video")
|
||||
video_format = video_info.format
|
||||
|
||||
video_codec = ''
|
||||
if video_format == "AVC":
|
||||
video_codec = 'H.264'
|
||||
elif video_format == "HEVC":
|
||||
video_codec = 'H.265'
|
||||
|
||||
audio_info = next(x for x in mediainfo.tracks if x.track_type == "Audio")
|
||||
codec_name = audio_info.format
|
||||
channels_number = int(audio_info.other_channel_positions[0].split('/')[0])
|
||||
|
||||
audio_codec = ''
|
||||
audio_channels = ''
|
||||
if codec_name == "AAC":
|
||||
audio_codec = "AAC"
|
||||
elif codec_name == "AC-3":
|
||||
audio_codec = "DD"
|
||||
elif codec_name == "E-AC-3":
|
||||
audio_codec = "DDP"
|
||||
elif codec_name == "E-AC-3 JOC":
|
||||
audio_codec = "ATMOS"
|
||||
|
||||
if channels_number == "2":
|
||||
audio_channels = "2.0"
|
||||
elif channels_number == "6":
|
||||
audio_channels = "5.1"
|
||||
|
||||
audio_ = audio_codec + audio_channels
|
||||
|
||||
# renomear arquivo
|
||||
default_filename = default_filename.replace('&', '.and.')
|
||||
default_filename = re.sub(r'[]!"#$%\'()*+,:;<=>?@\\^_`{|}~[-]', '', default_filename)
|
||||
default_filename = default_filename.replace(' ', '.')
|
||||
default_filename = re.sub(r'\.{2,}', '.', default_filename)
|
||||
default_filename = unidecode(default_filename)
|
||||
|
||||
output_name = '{}.{}p.BLIM.WEB-DL.{}.{}-{}'.format(default_filename, video_height, audio_, video_codec, args.tag)
|
||||
if type=='show':
|
||||
outputName = os.path.join(folder_name, output_name + '.mkv')
|
||||
else:
|
||||
outputName = output_name + '.mkv'
|
||||
|
||||
os.rename(video_mkv, outputName)
|
||||
print("{} -> {}".format(base_filename, output_name))
|
||||
|
||||
def DecryptAudio(inputAudio, keys_audio):
|
||||
key_audio_id_original = getKeyId(inputAudio)
|
||||
outputAudioTemp = inputAudio.replace(".mp4", "_dec.mp4")
|
||||
if key_audio_id_original != "nothing":
|
||||
for key in keys_audio:
|
||||
key_id=key[0:32]
|
||||
if key_id == key_audio_id_original:
|
||||
print("\nDecrypting audio...")
|
||||
print ("Using KEY: " + key)
|
||||
wvdecrypt_process = subprocess.Popen([blim_cfg.MP4DECRYPT, "--show-progress", "--key", key, inputAudio, outputAudioTemp])
|
||||
stdoutdata, stderrdata = wvdecrypt_process.communicate()
|
||||
wvdecrypt_process.wait()
|
||||
time.sleep (50.0/1000.0)
|
||||
os.remove(inputAudio)
|
||||
print("\nDemuxing audio...")
|
||||
mediainfo = MediaInfo.parse(outputAudioTemp)
|
||||
audio_info = next(x for x in mediainfo.tracks if x.track_type == "Audio")
|
||||
codec_name = audio_info.format
|
||||
|
||||
ext = ''
|
||||
if codec_name == "AAC":
|
||||
ext = '.m4a'
|
||||
elif codec_name == "E-AC-3":
|
||||
ext = ".eac3"
|
||||
elif codec_name == "AC-3":
|
||||
ext = ".ac3"
|
||||
outputAudio = outputAudioTemp.replace("_dec.mp4", ext)
|
||||
print("{} -> {}".format(outputAudioTemp, outputAudio))
|
||||
ff = ffmpy.FFmpeg(executable=blim_cfg.FFMPEG, inputs={outputAudioTemp: None}, outputs={outputAudio: '-c copy'}, global_options="-y -hide_banner -loglevel warning")
|
||||
ff.run()
|
||||
time.sleep (50.0/1000.0)
|
||||
os.remove(outputAudioTemp)
|
||||
print("Done!")
|
||||
return True
|
||||
|
||||
elif key_audio_id_original == "nothing":
|
||||
return True
|
||||
|
||||
def DecryptVideo(inputVideo, keys_video):
|
||||
key_video_id_original = getKeyId(inputVideo)
|
||||
inputVideo = inputVideo
|
||||
outputVideoTemp = inputVideo.replace('.mp4', '_dec.mp4')
|
||||
outputVideo = inputVideo
|
||||
if key_video_id_original != 'nothing':
|
||||
for key in keys_video:
|
||||
key_id = key[0:32]
|
||||
if key_id == key_video_id_original:
|
||||
print('\nDecrypting video...')
|
||||
print('Using KEY: ' + key)
|
||||
wvdecrypt_process = subprocess.Popen([blim_cfg.MP4DECRYPT, '--show-progress', '--key', key, inputVideo, outputVideoTemp])
|
||||
stdoutdata, stderrdata = wvdecrypt_process.communicate()
|
||||
wvdecrypt_process.wait()
|
||||
print('\nRemuxing video...')
|
||||
ff = ffmpy.FFmpeg(executable=blim_cfg.FFMPEG, inputs={outputVideoTemp: None}, outputs={outputVideo: '-c copy'}, global_options='-y -hide_banner -loglevel warning')
|
||||
ff.run()
|
||||
time.sleep(0.05)
|
||||
os.remove(outputVideoTemp)
|
||||
print('Done!')
|
||||
return True
|
||||
|
||||
elif key_video_id_original == 'nothing':
|
||||
return True
|
||||
|
||||
def id_parse(x):
|
||||
if 'player' in args.url_season:
|
||||
id_ = args.url_season.split('/')[-2]
|
||||
else:
|
||||
id_ = args.url_season.split('/')[-1]
|
||||
return id_
|
||||
|
||||
blim_id = id_parse(args.url_season)
|
||||
|
||||
if 'player' in args.url_season:
|
||||
get_metadata(blim_id)
|
||||
else:
|
||||
get_season(blim_id)
|
||||
|
0
cookies/cookies.txt
Normal file
0
cookies/cookies.txt
Normal file
949
hbomax.py
Normal file
949
hbomax.py
Normal file
@ -0,0 +1,949 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Module: HBO Max Downloader
|
||||
# Created on: 04-11-2020
|
||||
# Version: 3.5
|
||||
|
||||
import sys, os
|
||||
import subprocess, re, base64, requests
|
||||
import xmltodict, isodate
|
||||
import time, glob, uuid, ffmpy, json
|
||||
import shutil, urllib.parse
|
||||
|
||||
from unidecode import unidecode
|
||||
|
||||
import pywidevine.clients.hbomax.config as HMAXConfig
|
||||
import pywidevine.clients.hbomax.client as HMAXClient
|
||||
|
||||
from pywidevine.clients.hbomax.config import HMAXRegion
|
||||
from pywidevine.clients.proxy_config import ProxyConfig
|
||||
from pywidevine.muxer.muxer import Muxer
|
||||
from os.path import join, isfile
|
||||
|
||||
currentFile = 'hbomax'
|
||||
realPath = os.path.realpath(currentFile)
|
||||
dirPath = os.path.dirname(realPath)
|
||||
SESSION = requests.session()
|
||||
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
|
||||
|
||||
def main(args):
|
||||
|
||||
proxies = {}
|
||||
proxy_meta = args.proxy
|
||||
if proxy_meta == 'none':
|
||||
proxies['meta'] = {'http': None, 'https': None}
|
||||
elif proxy_meta:
|
||||
proxies['meta'] = {'http': proxy_meta, 'https': proxy_meta}
|
||||
SESSION.proxies = proxies.get('meta')
|
||||
proxy_cfg = ProxyConfig(proxies)
|
||||
|
||||
if not os.path.exists(dirPath + '/KEYS'):
|
||||
os.makedirs(dirPath + '/KEYS')
|
||||
else:
|
||||
keys_file = dirPath + '/KEYS/HBOMAX.txt'
|
||||
try:
|
||||
keys_file_hbomax = open(keys_file, 'r', encoding='utf8')
|
||||
keys_file_txt = keys_file_hbomax.readlines()
|
||||
except Exception:
|
||||
with open(keys_file, 'a', encoding='utf8') as (file):
|
||||
file.write('##### One KEY per line. #####\n')
|
||||
keys_file_hbomax = open(keys_file, 'r', encoding='utf8')
|
||||
keys_file_txt = keys_file_hbomax.readlines()
|
||||
|
||||
global folderdownloader
|
||||
if args.output:
|
||||
if not os.path.exists(args.output):
|
||||
os.makedirs(args.output)
|
||||
os.chdir(args.output)
|
||||
if ":" in str(args.output):
|
||||
folderdownloader = str(args.output).replace('/','\\').replace('.\\','\\')
|
||||
else:
|
||||
folderdownloader = dirPath + '\\' + str(args.output).replace('/','\\').replace('.\\','\\')
|
||||
else:
|
||||
folderdownloader = dirPath.replace('/','\\').replace('.\\','\\')
|
||||
|
||||
def downloadFile(aria2c_infile):
|
||||
aria2c_opts = [
|
||||
HMAXConfig.ARIA2C,
|
||||
'--allow-overwrite=true',
|
||||
'--download-result=hide',
|
||||
'--console-log-level=warn',
|
||||
'--enable-color=false',
|
||||
'-x16', '-s16', '-j16',
|
||||
'-i', aria2c_infile]
|
||||
|