Compare commits

...

677 Commits

Author SHA1 Message Date
Diaoul 537d33b66a Release 1.0 2015-07-22 01:45:23 +02:00
Diaoul 3933db4936 Add wheel dev dependency 2015-07-22 01:45:12 +02:00
Diaoul 86c6d2c253 Add minimum required version for dependencies 2015-07-21 23:54:00 +02:00
Diaoul 75ffe3767f Skip doctests for python 2 2015-07-21 21:31:10 +02:00
Diaoul 015b7547db Use a session fixture to configure cache region 2015-07-21 21:30:48 +02:00
Diaoul 2a6d861968 Check for files in mkv fixture 2015-07-21 21:29:58 +02:00
Diaoul 0f188e30b0 Update badges and urls 2015-07-21 21:22:52 +02:00
Diaoul 5faf8277f1 Remove pip logs from travis cache 2015-07-21 02:20:31 +02:00
Diaoul b86b4f1405 Add mkv test data to travis cache 2015-07-21 02:09:30 +02:00
Diaoul 98f903174a Merge branch 'master' of github.com:Diaoul/subliminal 2015-07-21 01:56:52 +02:00
Diaoul d8df8a4624 Fix region configuration in tests 2015-07-21 01:56:40 +02:00
Diaoul 0df19e300f Remove --doctest-modules 2015-07-21 01:56:31 +02:00
Antoine Bertin b26bf1c470 Add License badge to README 2015-07-20 23:16:32 +02:00
Diaoul 53cd3f6118 Update documentation and add doctests 2015-07-20 23:00:55 +02:00
Diaoul c23f955b6c Merge branch 'master' of github.com:Diaoul/subliminal 2015-07-20 22:59:04 +02:00
Diaoul 5c5b2656ec Add possible values for min-score in cli help 2015-07-20 22:58:56 +02:00
Diaoul c6278909ff Remove redundant documentation 2015-07-20 22:54:09 +02:00
Diaoul 64d599d6f7 Add compute_score to subliminal namespace 2015-07-20 22:53:40 +02:00
Diaoul 90d638e9c6 Replace DispatchExtensionManager with EnabledExtensionManager 2015-07-20 22:53:13 +02:00
Antoine Bertin 1dabbf78b2 Simplify example in README 2015-07-16 16:18:10 +02:00
Antoine Bertin 58b0b0c756 Improve README readability 2015-07-16 16:13:49 +02:00
Antoine Bertin 1426d9d62d Add more verbosity for travis 2015-07-16 15:58:56 +02:00
Antoine Bertin 85db6c7884 Merge pull request #463 from martinp/python2-fix
Fix for Python 2
2015-07-16 15:30:26 +02:00
Martin Polden 43d02c349f Fix for Python 2
Python 2 doesn't have the exist_ok parameter.
2015-07-16 13:26:55 +02:00
Diaoul c7af4573ca Add cache and sudo directives to travis 2015-07-16 01:41:45 +02:00
Diaoul 73a217eb1b Fix travis build 2015-07-16 01:14:33 +02:00
Diaoul b1854222a0 Merge branch 'master' of github.com:Diaoul/subliminal 2015-07-16 01:05:09 +02:00
Diaoul 7cb72b2bb2 Update to 1.0.dev0 2015-07-16 01:01:38 +02:00
Antoine Bertin 00245dd44d Merge pull request #451 from h3llrais3r/fix_podnapisi_provider
Fix podnapisi provider
2015-05-09 19:22:30 +02:00
h3llrais3r c1972ab26f Fix podnapisi provider
The download url is not longer a link on the page, but it's the
subtitle.page_link appended with '/download'.
2015-05-09 17:59:40 +02:00
Antoine Bertin b86254b0b8 Merge pull request #426 from oxan/addic7ed-codec
Also guess video codec from version in addic7ed provider
2015-01-31 17:51:59 +01:00
Oxan van Leeuwen 00157ee655 Also guess video codec from version in addic7ed provider 2014-12-27 21:17:22 +01:00
Antoine Bertin 6aaece1c44 Merge pull request #403 from h3llrais3r/opensubtitles-query-search
Implemented query search for opensubtitles
2014-09-17 20:27:45 +02:00
h3llrais3r 6445064836 Implemented query search for opensubtitles
Opensubtitles was only using the hash search functionality. For series,
it will now search on series name, season and episode.
2014-09-17 10:17:45 +02:00
Antoine Bertin 9d0c9d93a0 Merge pull request #396 from joseflavio/master
Adding support to proper decode Polish and Bulgarian
2014-08-17 20:09:31 +02:00
Jose Flavio Aguilar 01a06166ff Adding support to proper decode Polish and Bulgarian 2014-08-17 18:49:19 +02:00
Antoine Bertin f41fc2bceb Merge pull request #377 from goll/master
Update for python-guessit 0.7.1
2014-05-07 18:24:10 +02:00
Adrian Goll 5ffa344f1c Update for python-guessit 0.7.1
Latest guessit doesn't require 'autodetect' anymore. Here is a snippet from the usage:

-t TYPE, --type=TYPE  the suggested file type: movie, episode. If undefined, type will be guessed.
2014-05-07 14:18:14 +02:00
Antoine Bertin 31c2b21350 Merge pull request #362 from northerndrifter/p1
Fix hearing impaired flag for podnapisi
2014-03-26 10:36:13 +01:00
northerndrifter b2c6562c64 fixed hearing impaired flag for podnapisi 2014-03-25 21:01:13 +01:00
Antoine Bertin 02a36d9cad Merge pull request #336 from Nikoli/master
Use pysrt 1.0.1: first version migrated from charade to chardet
2014-02-17 10:32:05 +01:00
Nikoli 5dcb1916b2 Use pysrt 1.0.1: first version migrated from charade to chardet 2014-02-14 04:41:09 +04:00
Antoine Bertin c5623ec868 Merge pull request #327 from queeup/master
Fix wrong Turkish subtitle encoding detection #315
2014-02-12 14:58:07 +01:00
queeup 1c17c1987f Fix wrong Turkish subtitle encoding detection #315
Because of chardet Turkish encoding detect issue subliminal can't
recognize Turkish encoding and convert correctly to utf-8 #315
2014-02-12 01:28:57 +02:00
Antoine Bertin b6318bfae0 Update docs and HISTORY 2014-02-11 23:23:00 +01:00
Antoine Bertin 0e8489951d Use bytes for subtitle's content and refactor subtitle validation 2014-02-11 23:22:47 +01:00
Antoine Bertin 21d3a1c1bb Merge pull request #331 from h3llrais3r/master
Add a format to Video and use it for matching
2014-02-09 13:44:36 +01:00
h3llrais3r 9055021282 Added format to hash equation 2014-02-08 23:41:12 +01:00
h3llrais3r 10fcfd21b1 Ignore Pycharm ide files 2014-02-08 22:37:22 +01:00
h3llrais3r c142233ff9 Upgraded guessit to version 0.7 2014-02-08 20:28:30 +01:00
h3llrais3r e660e47265 Fixed unit tests related to format matching (2) 2014-02-07 23:22:36 +01:00
h3llrais3r 40c4c0aeec Fixed unit tests related to format matching 2014-02-07 22:36:44 +01:00
h3llrais3r 97c9a7b025 Updated methods for guess properties 2014-02-07 22:34:18 +01:00
h3llrais3r 9145f2530b Added format for matching on movie 2014-02-07 22:33:37 +01:00
h3llrais3r a1b073e5d6 Fixed guess properties for tvsubtitles 2014-02-07 22:32:03 +01:00
h3llrais3r 7425153760 Use guessit method for partial filenames
Use the correct guessit method when we don't have the complete filename.
We don't fake an episode filename anymore.
2014-02-05 22:37:07 +01:00
h3llrais3r c0836a94a9 Use guessit for matching 2014-01-30 23:11:29 +01:00
h3llrais3r 9dc24951a2 Use format for matching 2014-01-30 21:32:55 +01:00
Antoine Bertin f3eaad8d1c Close xmlrpc in terminate in opensubtitles 2014-01-29 00:17:22 +01:00
Antoine Bertin effde5014e Use little-endian for OpenSubtitles hash 2014-01-28 23:43:35 +01:00
Antoine Bertin 74c4c06a5c Fix cli with new ProviderManager 2014-01-28 21:52:11 +01:00
Antoine Bertin f10b7683c9 Rework provider loading and management
- Rename ProviderManager to ProviderPool
- Add a ProviderManager to manage the entry point
2014-01-27 22:17:00 +01:00
Antoine Bertin 5e26185c9f Fixes for babelfish 0.5.1 2014-01-27 20:58:31 +01:00
Antoine Bertin 2d350f5340 Merge branch 'master' of github.com:Diaoul/subliminal 2014-01-26 14:29:32 +01:00
Antoine Bertin f0519bbefb Update for babelfish 0.5.1 2014-01-26 14:29:20 +01:00
Antoine Bertin 7acfb3f027 More python3 compatibility 2014-01-26 14:27:54 +01:00
Antoine Bertin 24621e15e3 Merge pull request #317 from doron1/patch-1
Update subtitle.py
2014-01-21 13:45:34 -08:00
doron1 3474b2363f Update subtitle.py 2014-01-21 20:45:44 +02:00
Antoine Bertin 560dea3e3e More python3 compatibility 2014-01-19 18:48:50 +01:00
Antoine Bertin f6e5cf91ab Use pysrt 1.0.0 2014-01-19 14:55:19 +01:00
Antoine Bertin 57e8770fda Update HISTORY 2014-01-19 14:45:49 +01:00
Antoine Bertin 7e8f7e41b5 Update unittests 2014-01-19 14:36:37 +01:00
Antoine Bertin 84d890d7b0 Refactor exceptions, add a TimeoutTransport and fix line endings 2014-01-19 14:36:26 +01:00
Antoine Bertin e57c90b97e Respect xdg for cache file 2014-01-19 09:46:00 +01:00
Antoine Bertin 236c43b807 Improve version numbering in documentation 2013-12-13 14:29:58 +01:00
Antoine Bertin bb32c286d9 Fix podnapisi provider 2013-12-12 23:42:37 +01:00
Antoine Bertin f1d4975079 Fix a typo in documentation examples 2013-12-12 22:11:27 +01:00
Antoine Bertin 464b783477 Fix release detection in podnapisi 2013-12-05 20:23:41 +01:00
Antoine Bertin c4756030c7 Fix subtitle re download with single 2013-12-05 20:20:23 +01:00
Antoine Bertin bf538fee32 Add support for directory and encoding in cli 2013-12-03 21:41:20 +01:00
Antoine Bertin cc32c29930 Use debug level for language parsing error in subtitle track name 2013-12-03 21:41:04 +01:00
Antoine Bertin 27b8703949 Add asctime to log file in cli 2013-12-03 21:40:21 +01:00
Antoine Bertin 0d9bbff534 Rename folder_path to directory and add encoding in save_subtitles 2013-12-03 21:39:37 +01:00
Antoine Bertin cad60e73a6 Fix single subtitles saving in cli 2013-12-03 20:36:01 +01:00
Antoine Bertin 1d14d21684 Update addic7ed unittests 2013-12-02 21:10:56 +01:00
Antoine Bertin 0733ef7d32 Fix podnapisi download 2013-12-02 20:29:45 +01:00
Antoine Bertin 143f872166 Remove debug print statement in decode 2013-12-02 20:29:30 +01:00
Antoine Bertin 95abab3c18 Catch more video age detection errors 2013-12-02 20:23:31 +01:00
Antoine Bertin 2e5fb46ebc Fix example in documentation 2013-12-02 00:27:59 +01:00
Antoine Bertin 0d11092178 Improve encoding detection 2013-12-01 22:00:31 +01:00
Antoine Bertin 80589f325a Use lowercase comments 2013-12-01 21:57:02 +01:00
Antoine Bertin 0b6b3d0905 Fix relative links in addic7ed and tvsubtitles for page_link 2013-12-01 18:16:14 +01:00
Antoine Bertin bc97f772b8 Remove bierdopje from the docs 2013-12-01 18:15:30 +01:00
Antoine Bertin efe944a10c Remove extra end of line character in cli 2013-12-01 10:17:57 +01:00
Antoine Bertin 9d9aed2d4b Add a page_link attribute to Subtitle 2013-11-30 23:42:21 +01:00
Antoine Bertin 9cd8b7d593 Use print statement to write to stderr 2013-11-30 23:41:24 +01:00
Antoine Bertin abfd2361d4 Use Video.fromname in cli 2013-11-30 23:41:07 +01:00
Antoine Bertin b10e616ec2 Add traceback to enzyme parsing error log 2013-11-28 21:26:22 +01:00
Antoine Bertin 7dc2a90edc Catch video age detection errors 2013-11-28 21:22:54 +01:00
Antoine Bertin cb53199748 Update cli documentation 2013-11-28 20:48:49 +01:00
Antoine Bertin 7b2402c436 More explicit log messages in api 2013-11-28 20:21:37 +01:00
Antoine Bertin 0715437888 Add support for file logging in cli 2013-11-28 20:21:21 +01:00
Antoine Bertin bea95113e7 Update HISTORY 2013-11-28 00:47:57 +01:00
Antoine Bertin e73e969f58 Remove dead BierDopje provider 2013-11-28 00:47:47 +01:00
Antoine Bertin fd30cf7388 Add year in episode
Used to make a difference between two series with the same name
2013-11-28 00:46:37 +01:00
Antoine Bertin fa9792b280 Fix missing return statement for Video.fromname 2013-11-27 23:33:37 +01:00
Antoine Bertin e93530c7c7 Add a maximum expiration time to cached functions 2013-11-25 23:25:31 +01:00
Antoine Bertin 35d4c37d61 Update to new API
- Add some provider utilities
- Add a ProviderManager class to manage multiple providers
- Add a content attribute to the Subtitle class
- Dissociate download and save functions to give more control to the
user
- Add a fromname classmethod to Video, Episode and Movie classes
- Update unittests
- Update documentation
2013-11-25 22:26:11 +01:00
Antoine Bertin 4d61d3fc42 Switch to 0.8.0 2013-11-22 23:44:02 +01:00
Antoine Bertin a24388137e Remove sphinxcontrib-programoutput 2013-11-22 23:38:17 +01:00
Antoine Bertin 60c7666610 Update badges in README 2013-11-22 21:38:12 +01:00
Antoine Bertin e11f1c4b28 Fix unittests for addic7ed 2013-11-22 21:31:12 +01:00
Antoine Bertin e1b32f237c Merge branch 'develop' 2013-11-22 21:06:04 +01:00
Antoine Bertin fe76634d02 Release 0.7.3 2013-11-22 21:05:49 +01:00
Antoine Bertin b499540bed Sync README and documentation 2013-11-22 20:47:56 +01:00
Antoine Bertin 7b4a9c2060 Fix wrong error catched for babelfish 0.4.0 2013-11-21 23:52:06 +01:00
Antoine Bertin a84cc80a88 Ignore IDE error in cli 2013-11-21 23:51:25 +01:00
Antoine Bertin 241cea9729 Fix podnapisi tests 2013-11-21 23:31:43 +01:00
Antoine Bertin 4b83ddc63e Improve assertions in tests 2013-11-21 23:31:02 +01:00
Antoine Bertin 0b431fbb8d Add Podnapisi to the list of providers in documentation 2013-11-21 00:38:01 +01:00
Antoine Bertin 3736d921a1 Update dogpile.cache to 0.5.2 and use a MutexLock in cli 2013-11-21 00:12:53 +01:00
Antoine Bertin 380fb28d2e Update to babelfish 0.4.0 2013-11-20 22:40:06 +01:00
Antoine Bertin 64c0ee4ccf Add setuptools to dev-requirements.txt 2013-11-20 22:38:55 +01:00
Antoine Bertin 5977bf69fb Improve embedded subtitles language detection 2013-11-14 22:08:48 +01:00
CelestianX 179ae6a24e Updated README with proper information
Section relative to the library was invalid. Missing references and
arguments.
2013-11-14 21:55:24 +01:00
Antoine Bertin 16942ec4c7 Switch to 0.7.3 2013-11-14 21:53:36 +01:00
Antoine Bertin 6f5378ea40 Be more permissive in subtitle validation 2013-11-14 21:51:39 +01:00
Antoine Bertin 02ee2039f4 Skip empty language in addic7ed 2013-11-14 21:51:04 +01:00
Antoine Bertin e7f89c1a19 Release 0.7.2 2013-11-10 11:06:46 +01:00
Antoine Bertin be4f9d92eb Remove unused import 2013-11-10 11:03:37 +01:00
Antoine Bertin ca63b97e79 Parse IETF language format in cli 2013-11-10 10:25:00 +01:00
Antoine Bertin c1ed4a0232 Fix exception handling when validating subtitle 2013-11-10 10:24:23 +01:00
Antoine Bertin b826a0bf08 Use debug level for subtitle track detection 2013-11-10 10:23:41 +01:00
Antoine Bertin fd0d87d719 Use info level when skipping providers 2013-11-10 10:23:24 +01:00
Antoine Bertin 094373f3c1 Add podnapisi provider 2013-11-10 10:22:33 +01:00
Antoine Bertin 5dac623c9f Update to babelfish 0.3.0 2013-11-09 20:25:39 +01:00
Antoine Bertin 57d1e772ec Use more list comprehension 2013-11-09 18:09:19 +01:00
Antoine Bertin 983efbfd9b Reduce debug logging in opensubtitles 2013-11-09 18:06:52 +01:00
Antoine Bertin 1f11e293c1 Add missing docstring 2013-11-09 18:06:17 +01:00
Antoine Bertin bfd278ae1c Change Subtitle repr language format 2013-11-09 18:05:48 +01:00
Antoine Bertin dbe1b9d2af Update guessit requirement 2013-11-09 03:04:13 +01:00
Antoine Bertin d71bc4bf09 Set CLI default cache expiration time to 30 days 2013-11-07 00:33:38 +01:00
Antoine Bertin faf2e1dfa4 Add a CACHE_VERSION to force cache reloading on version change 2013-11-07 00:26:06 +01:00
Antoine Bertin 93360aa1bb Fix find_show_id in tvsubtitles for ambiguous series 2013-11-06 21:08:09 +01:00
Antoine Bertin 8df7780ef9 Switch to 0.7.2 2013-11-06 00:42:44 +01:00
Antoine Bertin c1fda7f44c Release 0.7.1 2013-11-06 00:32:33 +01:00
Antoine Bertin ce42201eee Improve exceptions in addic7ed terminate 2013-11-06 00:31:49 +01:00
Antoine Bertin f65131e5b0 Use the full path to guess in scan_video 2013-11-06 00:20:26 +01:00
Antoine Bertin 8d9efa5dc0 Catch exceptions during provider terminate in api 2013-11-06 00:19:45 +01:00
Antoine Bertin 1a54bfb732 Fix ProviderNotAvailable in list_subtitles 2013-11-06 00:03:53 +01:00
Antoine Bertin a15c1f05b2 Skip links and hidden files and folders in scan_video 2013-11-05 23:25:57 +01:00
Antoine Bertin ccfd341fe9 Fix enzyme track detection 2013-11-05 00:23:24 +01:00
Antoine Bertin aab8e0aa4d Fix spacing around operator 2013-11-04 23:14:25 +01:00
Antoine Bertin 9b669c8a3d Update opensubtitles unittests 2013-11-04 00:56:21 +01:00
Antoine Bertin 50960fed24 Fix single subtitles being always downloaded 2013-11-04 00:43:16 +01:00
Antoine Bertin ff61bc8d2d Add colors to debug log 2013-11-04 00:34:02 +01:00
Antoine Bertin e5d9c229ed Improve CLI 2013-11-04 00:08:20 +01:00
Antoine Bertin b0e38c7e2c Remove unnecessary personal information from addic7ed logging 2013-11-04 00:08:10 +01:00
Antoine Bertin c12dade5ea Add tests for scan_video 2013-11-03 11:53:29 -05:00
Antoine Bertin cb35dabf31 Remove lxml dependency 2013-11-03 11:52:39 -05:00
Antoine Bertin a66cf4b501 Require babelfish 0.2.1 2013-11-03 11:29:42 -05:00
Antoine Bertin c355d6a24a Fix hashes computation for small files 2013-11-03 11:26:34 -05:00
Antoine Bertin 60c1e93037 Scan for und languages and fix download for single 2013-11-01 08:38:24 +01:00
Antoine Bertin 708126aca3 Fix subtitle language filtering of videos 2013-10-31 23:24:49 +01:00
Antoine Bertin bf763a3ad7 Always log found embedded subtitles 2013-10-31 23:23:36 +01:00
Antoine Bertin bb0c3b91a2 Fix the download loop not breaking when done 2013-10-31 22:49:46 +01:00
Antoine Bertin a7c0cd0d19 Fix intersection of sets 2013-10-31 22:49:01 +01:00
Antoine Bertin f315ef9bd0 Fix subtitle language detection in api 2013-10-31 22:32:43 +01:00
Antoine Bertin b262a5491c Fix embedded subtitles always being scanned 2013-10-31 20:47:28 +01:00
Antoine Bertin d7b30336b6 Fix badly encoded subtitles 2013-10-31 20:46:19 +01:00
Antoine Bertin c834bac460 Use absolute paths in cli 2013-10-31 08:37:37 +01:00
Antoine Bertin 36da0a1204 Validate cache-file in cli 2013-10-31 08:37:28 +01:00
Antoine Bertin 6ece9271eb Require absolute paths in scan_video and scan_videos 2013-10-31 08:36:13 +01:00
Antoine Bertin a465058bb3 Catch enzyme and babelfish exceptions in scan_video 2013-10-30 22:47:13 +01:00
Antoine Bertin bad7dbb55c Explicitly use utf-8 for subtitle files encoding 2013-10-30 21:07:18 +01:00
Antoine Bertin 501aaf076e Handle download limit in Addic7ed 2013-10-30 21:05:48 +01:00
Antoine Bertin 49d27cc7e4 Add login support for Addic7ed 2013-10-30 08:40:03 +01:00
Antoine Bertin e3903f77e9 Use babelfish 0.2.0 2013-10-30 08:39:06 +01:00
Antoine Bertin b6ee9b5d7e Fix required language argument in cli 2013-10-30 08:30:11 +01:00
Antoine Bertin e3301cefd7 Fix language extensions loading
The alpha2 converter might not yet be loaded at this point.
When subliminal's converters are loaded, they import subliminal
which import the video module.
2013-10-30 08:29:43 +01:00
Antoine Bertin 74ac38329e Fix None not being a valid language for embedded subtitles 2013-10-30 08:24:15 +01:00
Antoine Bertin 50c39382e6 Improve error logging 2013-10-29 18:07:26 +01:00
Antoine Bertin 9a65708855 Add missing age implementation 2013-10-29 18:06:57 +01:00
Antoine Bertin 4ebcb2cc95 Fix video_types in some providers 2013-10-29 17:26:56 +01:00
Antoine Bertin 0c3c41fb4a Fix unsupported type for timedelta in cli 2013-10-29 17:26:29 +01:00
Antoine Bertin f44942f78e Switch to 0.7.1 2013-10-29 17:23:41 +01:00
Antoine Bertin d7f2211800 Update dev requirements for sphinx documentation upload in pypi 2013-10-29 12:59:50 +01:00
Antoine Bertin 60610e2032 Merge branch 'develop'
Conflicts:
	requirements.txt
	setup.py
	subliminal/infos.py
2013-10-29 12:43:20 +01:00
Antoine Bertin f11402c452 Complete rewrite of subliminal 2013-10-29 12:22:21 +01:00
Antoine Bertin 277b046b41 Fix requirements for enzyme 0.3 2013-05-19 15:44:49 +02:00
Antoine Bertin 7878fb2f92 Update unittests 2013-01-20 00:01:52 +01:00
Antoine Bertin f90c4634c2 Revamp TVsubtitles
- Use dogpile.cache
- Compute confidence based on votes
- Improved keywords detection
- Add docstrings
- Rename to TVsubtitles
- Add unittests
2013-01-19 23:26:40 +01:00
Antoine Bertin b52fbc8af5 Unset language_code in PodnapisiWeb 2013-01-19 21:42:34 +01:00
Antoine Bertin cde1175a7b Update default User-Agent 2013-01-19 21:42:06 +01:00
Antoine Bertin 30786743e3 Update TheSubDB and add unittests 2013-01-19 15:25:45 +01:00
Antoine Bertin c675bad95c Update Subtitulos and add unittests 2013-01-19 15:03:35 +01:00
Antoine Bertin 288b92d2ce Update SubsWiki and add unittests 2013-01-19 15:03:06 +01:00
Antoine Bertin f6e656117c Add unittests for PodnapisiWeb 2013-01-19 15:02:11 +01:00
Antoine Bertin 896baa6a04 Add unittests for Podnapisi 2013-01-18 20:54:37 +01:00
Antoine Bertin b8f820a9af Fix download method in Podnapisi 2013-01-18 20:52:52 +01:00
Antoine Bertin eb8b046dbd Use new is_valid_subtitle method
Thanks to byroot
2013-01-18 20:52:13 +01:00
Antoine Bertin ff9e0f3190 Fix Video path being empty even if forced in unittests 2013-01-18 20:51:27 +01:00
Antoine Bertin c823eda245 Update NEWS 2013-01-17 21:09:28 +01:00
Antoine Bertin 6340de0ddb Fix requirements due to requests 1.0 2013-01-17 20:49:41 +01:00
Antoine Bertin e4f10b9e77 Update addic7ed to use dogpile.cache 2013-01-13 21:25:13 +01:00
Antoine Bertin 5ca2623c13 Merge remote-tracking branch 'rik/requests-changes-172' into develop 2013-01-13 16:47:59 +01:00
Antoine Bertin e560823271 Update setup 2013-01-13 16:46:27 +01:00
Antoine Bertin 3f83b13a29 Use setuptools entry points 2013-01-13 16:46:20 +01:00
Antoine Bertin 507bf09466 Update version to 0.7-dev 2013-01-13 15:57:34 +01:00
Antoine Bertin 688a07dbe9 Update requirements 2013-01-13 15:55:36 +01:00
Antoine Bertin e7c4bc9fc3 Move tests under subliminal module 2013-01-13 15:53:24 +01:00
Anthony Ricaud 04c74afad6 Update to the latest requests API.
fix #172
2013-01-13 14:30:33 +01:00
Antoine Bertin e8a4521b7e Add query unittests for BierDopje and OpenSubtitles 2012-12-16 21:31:49 +01:00
Antoine Bertin 768b9d203c Update new unittests
- Do not expect the exact count of results in list tests
- Download tests
2012-12-16 10:33:32 +01:00
Antoine Bertin ba5e03342f Use key_mangler to fix the error in dbm backend in dogpile.cache 2012-12-15 13:33:25 +01:00
Antoine Bertin cb3ff0334d Add unittests for BierDopje 2012-12-15 13:32:38 +01:00
Antoine Bertin b96bf9b9a5 Finish list unittests for OpenSubtitles 2012-12-15 13:08:05 +01:00
Antoine Bertin 4bf673dfc6 Update new unittests 2012-12-11 14:55:01 +01:00
Antoine Bertin 223fe8025c Use dogpile.cache 2012-12-10 23:31:44 +01:00
Antoine Bertin cf47cf1512 Update requirements
- Add charade and pysrt as test_require
- Add dogpile.cache as install_require
2012-12-10 23:27:57 +01:00
Antoine Bertin 1bac0c3e8c New unittests for services using a yaml configuration file 2012-12-10 23:10:15 +01:00
Antoine Bertin 4634c353d8 Fix subswiki on some movies 2012-12-10 14:05:33 +01:00
Antoine Bertin 9ac2dde4e1 Shorten travis install part 2012-12-09 16:22:58 +01:00
Antoine Bertin 07a6db43e6 Fix test_videos by using unicode 2012-12-09 13:34:17 +01:00
Antoine Bertin c40f1f0cc2 Update unittests for PodnapisiWeb 2012-12-09 11:12:06 +01:00
Antoine Bertin c4ddc6d793 Fix subtitles validation
Subtitles are considered valid if their first 50 lines are
2012-12-09 11:11:48 +01:00
Antoine Bertin 8f58974a1a Remove keywords parameter in PodnapisiWeb as it is not supported 2012-12-09 10:48:07 +01:00
Antoine Bertin b17fbd6fc0 Ensure paths are unicode in get_defaults 2012-12-09 10:46:47 +01:00
Antoine Bertin 57d5d57c53 Fix subtitles validation 2012-12-09 01:14:13 +01:00
Antoine Bertin 5436512b1f Allow empty keywords in services
Applies to addic7ed, subswiki and subtitulos
2012-12-09 00:42:32 +01:00
Antoine Bertin 40e10ea72c Replace filesizes checks in unittests with subtitles validation
Use pysrt for subtitles validation
2012-12-09 00:38:34 +01:00
Antoine Bertin ea6aba4e92 Skip badly encoded paths and require unicode for api calls 2012-12-08 20:21:45 +01:00
Antoine Bertin e4817dd0d3 Update filesizes in unittests 2012-12-07 14:55:55 +01:00
Antoine Bertin 751a2d822a Fix PodnapisiWeb service
- Remove the sR parameter that does not accept multiple
  values and is case-sensitive
- Ensure the languageId is an integer
- Update filesizes in unittests
2012-12-07 14:55:43 +01:00
Antoine Bertin 38cc8422b6 Fix PodnapisiWeb and add unittests 2012-09-23 15:03:06 +02:00
Antoine Bertin 35f2e47195 Fix unittests for SubsWiki 2012-09-23 14:53:20 +02:00
Antoine Bertin ab3ad0fe70 Merge pull request #113 from abenea/podnapisi
Podnapisi
2012-09-22 06:37:13 -07:00
Antoine Bertin ccf26730a2 Fix repr of ServiceConfig when no cache_dir is given 2012-09-22 13:17:36 +02:00
Antoine Bertin c23868dfb1 Merge remote-tracking branch 'wackou/develop' into develop
- Move get_defaults to core
- Add new functions to __all__
- Fix download_subtitles in api
2012-09-22 12:43:03 +02:00
Antoine Bertin b24af17326 Add python 2.6 compatibility on download_zip_file 2012-09-22 11:53:37 +02:00
Antoine Bertin 45aff11bff Fix Subtitulos on incomplete subtitles and use bs4 syntax 2012-09-22 11:45:36 +02:00
Antoine Bertin 1ee700fa9d Merge branch 'develop' 2012-09-15 13:29:27 +02:00
Antoine Bertin 4f74dc9031 Bump version number 2012-09-15 13:28:11 +02:00
Antoine Bertin b53fd0bd61 Fix enzyme import in videos 2012-09-15 13:05:58 +02:00
Antoine Bertin 80e3514d56 Update copyright notice on Addic7ed 2012-09-15 13:05:35 +02:00
Antoine Bertin 3f1cac3ccc Add Galician and Catalan languages to Addic7ed 2012-09-15 13:05:21 +02:00
Antoine Bertin 261e4e8f67 Fix OpenSubtitles testcase 2012-09-15 11:58:20 +02:00
Antoine Bertin bec7ec1901 Fix SubsWiki 2012-09-15 11:29:45 +02:00
Antoine Bertin 69015293a4 Fix OpenSubtitles testcase 2012-09-15 11:28:58 +02:00
Antoine Bertin ca55e417ee Remove unused function in Addic7ed 2012-09-15 11:28:40 +02:00
Antoine Bertin ed37415ee2 Use relative imports in Subtitulos 2012-09-12 23:59:31 +02:00
Antoine Bertin 68dc99f7ab Fix Addic7ed 2012-09-12 23:51:17 +02:00
Antoine Bertin 4d9cac8941 Fix unittests for BierDopje 2012-09-12 21:52:59 +02:00
Antoine Bertin fbd6fe00d6 Add a user agent to BierDopje as requested by the service 2012-09-12 21:52:40 +02:00
Antoine Bertin e491680dff List supported services in CLI help message 2012-09-12 21:29:11 +02:00
Antoine Bertin ffc8474918 Test current directory if no folder is given while scanning 2012-09-12 21:28:43 +02:00
Antoine Bertin dd7f26e51e Update diaoul-sphinx-themes 2012-09-12 07:42:13 +02:00
Nicolas Wack 498460031e Fixed missing import 2012-07-30 00:25:57 +02:00
Nicolas Wack d977e3569f Fixed get_defaults() function call 2012-07-30 00:25:05 +02:00
Antoine Bertin f122e7e4ed Merge pull request #114 from abenea/ass
Add the .ass subtitle extension
2012-07-15 02:13:40 -07:00
Andrei Benea 3af3db3df6 Request XML search results. 2012-07-09 21:35:46 +03:00
Andrei Benea f4246de8a7 Add the .ass subtitle extension. 2012-07-07 11:20:54 +03:00
Andrei Benea 43b647ed28 Enable the PodnapisiWeb service. 2012-07-07 11:09:18 +03:00
Andrei Benea 04958f63de PodnapisiWeb service based on the simple web interface. 2012-07-07 05:03:43 +03:00
Nicolas Wack b15b2c0e7b Factored out consume_task_list() to avoid code duplication 2012-07-01 16:39:45 +02:00
Nicolas Wack 61909b68cc Factored out get_defaults() function to avoid code duplication 2012-07-01 16:37:03 +02:00
Antoine Bertin 71c91bed29 Control subtitles naming in unittest 2012-06-26 19:49:34 +02:00
Antoine Bertin a8aa57dcd6 Merge branch 'develop' 2012-06-24 22:56:03 +02:00
Antoine Bertin a7de8c81b4 Bump version 2012-06-24 22:55:47 +02:00
Antoine Bertin c2688fe81c Remove references to Podnapisi as it is not ready yet 2012-06-24 22:54:42 +02:00
Antoine Bertin 295474506b Update NEWS 2012-06-24 22:49:24 +02:00
Antoine Bertin c4a989dd3d Add the release name in the repr of ResultSubtitle if available 2012-06-24 21:48:18 +02:00
Antoine Bertin 7f6e192149 Add more logging in matching_confidence 2012-06-24 21:46:54 +02:00
Antoine Bertin 28b40e9174 Fix subtitle release name in BierDopje
Matching confidence could not be computed because of the
missing extension
2012-06-24 21:46:33 +02:00
Antoine Bertin f2d2da94a1 Add the path to the repr of a ResultSubtitle 2012-06-24 15:43:44 +02:00
Antoine Bertin 14d19ff090 Fix subtitles being downloaded multiple times
This happened with the multi option because subtitles were
grouped by languages and Language('en-US') is different from
Language('en'). Now we take into account user's languages
preferred order
2012-06-24 15:43:09 +02:00
Antoine Bertin a547464d1e Add Chineese exception to TvSubtitles 2012-06-24 14:49:46 +02:00
Antoine Bertin 23b9aba560 Fix unicode representation of Video when it does not exist 2012-06-24 14:20:10 +02:00
Antoine Bertin 347038c528 Add test_videos to the main test suite 2012-06-24 13:53:41 +02:00
Antoine Bertin 2fc26d910a Use positional arguments for required fields of ResultSubtitle 2012-06-24 13:53:03 +02:00
Antoine Bertin 4828730ea3 Fix some encoding issues 2012-06-24 13:52:28 +02:00
Antoine Bertin 7c4f539a44 Use None as default for keywords in ResultSubtitle constructor 2012-06-24 13:49:13 +02:00
Antoine Bertin 598ef91a30 Do not convert to absolute paths in scan 2012-06-24 13:47:40 +02:00
Antoine Bertin 4862f12619 Update NEWS 2012-06-23 12:35:26 +02:00
Antoine Bertin c96ac214bb Update unittests 2012-06-23 11:24:00 +02:00
Antoine Bertin 8fb9cf6a0b Add __repr__ to Subtitles 2012-06-23 11:22:56 +02:00
Antoine Bertin 4a177b6008 Fix single download subtitles without the force option 2012-06-23 00:23:50 +02:00
Antoine Bertin 58b59a3304 Improve the download_zip_file method 2012-06-20 21:42:51 +02:00
Antoine Bertin 83e84a24b1 Always return the subtitle in Service.download 2012-06-20 21:18:54 +02:00
Antoine Bertin 322e6c1f1c Add Spanish (Latin America) exception to Addic7ed 2012-06-20 21:17:47 +02:00
Antoine Bertin d1ca77d7db Improve Addic7ed subtitles validation 2012-06-20 08:19:19 +02:00
Antoine Bertin d885c78b9a Fix group_by_video when a list entry has None as subtitles 2012-06-20 08:18:37 +02:00
Antoine Bertin 6c8a8a53e7 Avoid some other Addic7ed errors 2012-06-19 23:24:16 +02:00
Antoine Bertin 21ec9335fc Add support for Galician language in Subtitulos 2012-06-19 08:12:31 +02:00
Antoine Bertin 4c40a463da Add an integrity check after subtitles download for Addic7ed 2012-06-19 08:11:54 +02:00
Antoine Bertin 169e97975d Improve logging for file downloads 2012-06-19 08:11:06 +02:00
Antoine Bertin e26c65d4f1 Add error handling for if not strict in Language 2012-06-19 08:10:25 +02:00
Antoine Bertin d1dd86c825 Add possible filesizes for OpenSubtitles in unittests 2012-06-17 19:50:29 +02:00
Antoine Bertin e8388a757b Fix TheSubDB hash method to return None if the file is too small 2012-06-17 18:17:11 +02:00
Antoine Bertin 51c7d46390 Update services unittests
- Remove useless import
- Do not set verbosity
2012-06-17 12:26:16 +02:00
Antoine Bertin 84688acf32 Replace guessit.Language in Video.scan 2012-06-17 11:30:16 +02:00
Antoine Bertin f16ecd220a Fix language detection of subtitles 2012-06-17 11:28:32 +02:00
Antoine Bertin a0f89e46a8 Remove extra skip in unittests 2012-06-17 11:26:07 +02:00
Antoine Bertin 6fce503814 Merge branch 'develop' 2012-06-16 08:07:20 +02:00
Antoine Bertin e873a2fbd2 Put release date in NEWS 2012-06-16 08:06:03 +02:00
Antoine Bertin 53e15969c1 Merge branch 'develop' 2012-06-16 08:02:57 +02:00
Antoine Bertin c11d83a204 Update README 2012-06-16 00:28:05 +02:00
Antoine Bertin 35d664d414 Update documentation 2012-06-16 00:25:55 +02:00
Antoine Bertin 11a33e5425 Use travis-ci sidebar in the documentation 2012-06-16 00:25:43 +02:00
Antoine Bertin 97bd82967e Update diaoul-sphinx-themes 2012-06-16 00:24:30 +02:00
Antoine Bertin ca89339042 Fix CLI 2012-06-15 23:54:25 +02:00
Antoine Bertin 07054c3f68 Fix some naming mistakes 2012-06-15 22:56:11 +02:00
Antoine Bertin 72405f5c0e Add notifications and fix installation in travis-ci 2012-06-15 22:44:41 +02:00
Antoine Bertin d5232b8a68 Add the build status in README 2012-06-15 22:43:39 +02:00
Antoine Bertin d44d032e93 Update requirements
- Add EOL in requirements.txt
- Add optional-requirements.txt for lxml
2012-06-15 22:42:32 +02:00
Antoine Bertin d7122a9c98 Clean up
- Remove blank lines
- Move the strict test in Language
- Update comments in thesubdb
- Order language_map with codes first
2012-06-15 22:40:56 +02:00
Antoine Bertin eb0b9f29f2 Avoid ValueError when a new code is found 2012-06-15 22:38:44 +02:00
Antoine Bertin a8b7763a13 Call parent __init__ in Tasks 2012-06-15 22:37:51 +02:00
Antoine Bertin 1e7fe9d216 Fix encoding issues 2012-06-15 22:37:20 +02:00
Antoine Bertin a0dbfe8c4b Refactor unittests 2012-06-15 21:00:49 +02:00
Antoine Bertin ef2571d626 Fix return type of consume_task for DownloadTasks 2012-06-15 21:00:03 +02:00
Antoine Bertin d3cde7bd05 Update travis-ci file 2012-06-15 18:40:13 +02:00
Antoine Bertin 01191d632b Update NEWS 2012-06-15 18:32:25 +02:00
Antoine Bertin 5c934766f5 Clean up
- Improve imports
- Remove unused exceptions
- Remove blank lines
- Add __all__ in modules
2012-06-15 18:31:56 +02:00
Antoine Bertin decd0e2510 Use the same return type between list_sutbitles and download_subtitles 2012-06-15 17:54:22 +02:00
Antoine Bertin cd46dad14b Add unittests for api 2012-06-15 17:47:15 +02:00
Antoine Bertin 69c5075ced Fix returned results of download_subtitles in api 2012-06-15 17:46:44 +02:00
Antoine Bertin 4da9b7080d Update services and unittests 2012-06-15 17:00:45 +02:00
Antoine Bertin be112bc091 Remove special languages from OpenSubtitles list (und, mis and mul) 2012-06-15 08:21:20 +02:00
Antoine Bertin 8389c86ce7 Rename test_set to test_set_contains in language unittests 2012-06-15 01:07:58 +02:00
Antoine Bertin fa55d32563 Update addic7ed, bierdopje and opensubtitles 2012-06-15 01:07:32 +02:00
Antoine Bertin 185cc9844c Update api, async, core and services to use the new language module 2012-06-15 01:06:31 +02:00
Antoine Bertin 705fb0d342 Init the session in the constructor of ServiceBase 2012-06-15 01:04:17 +02:00
Antoine Bertin 2ce9ac0862 Compact cache functions in ServiceBase 2012-06-15 01:03:40 +02:00
Antoine Bertin a237cd856d Use the NotImplementedError in ServiceBase 2012-06-15 01:02:34 +02:00
Antoine Bertin b1e685ffc2 Make the Video hashable 2012-06-15 01:01:39 +02:00
Antoine Bertin d19dde9843 Replace guessit.language in subtitles module 2012-06-15 01:01:01 +02:00
Antoine Bertin 74693bf747 Add language_list class and its unittests 2012-06-15 00:59:16 +02:00
Antoine Bertin 530bc7f5ff Update language module documentation and improve exception messages 2012-06-15 00:58:16 +02:00
Antoine Bertin 1b660d1e6d Fix language_set substraction operation and add a unittest 2012-06-15 00:56:31 +02:00
Antoine Bertin 34ce0d640c Fix language_set constructor with list of tuples 2012-06-15 00:53:20 +02:00
Antoine Bertin ae2c08bfbd Remove languages for special situations from the list 2012-06-15 00:51:53 +02:00
Antoine Bertin f517a683e3 Merge branch 'develop' of github.com:Diaoul/subliminal into develop 2012-06-12 23:36:02 +02:00
Antoine Bertin b512439d41 Remove some blank lines 2012-06-12 23:33:04 +02:00
Antoine Bertin c62a2a7672 Order documentation by source 2012-06-12 23:32:51 +02:00
Antoine Bertin bcd5c8f610 Add language stuff 2012-06-12 23:32:25 +02:00
Antoine Bertin a75aff65d6 Use skip in unittests 2012-06-09 23:46:36 +02:00
Antoine Bertin 9500f882d5 Replace required_parsers with required_features
Remove detection code and rely on beautifulsoup4 for that
2012-06-09 23:45:27 +02:00
Antoine Bertin 7fc5f2ef97 Update requirements 2012-06-09 19:33:54 +02:00
Antoine Bertin 5d0808a1f9 Merge branch 'develop' of git@github.com:Diaoul/subliminal.git into develop 2012-06-09 11:26:28 +02:00
Antoine Bertin 511fe7410b Update README 2012-06-08 10:57:45 +03:00
Antoine Bertin 7ed6819b03 Update unittests 2012-06-07 21:58:55 +02:00
Antoine Bertin 4709e26bd5 Update Podnapisi 2012-06-07 21:57:46 +02:00
Antoine Bertin 6e1fa561f0 Remove unused stuff in unittests 2012-06-07 18:11:09 +02:00
Antoine Bertin d7668d3573 Fix Podnapisi query method 2012-06-07 18:10:55 +02:00
Antoine Bertin 410295486a Update documentation 2012-06-07 18:09:30 +02:00
Antoine Bertin 0d63b47560 Clean up unused stuff in unittests 2012-06-03 22:05:41 +02:00
Antoine Bertin d3cb956061 Use the pythonic syntax for not in list 2012-06-03 22:04:54 +02:00
Antoine Bertin 2e00accfab Add Podnapisi service 2012-06-03 22:04:15 +02:00
Antoine Bertin c54a60097c Fix requirements 2012-06-03 15:02:23 +02:00
Antoine Bertin 58a54bce06 Merge pull request #84 from wackou/develop
Fixes for TvSubtitles and OpenSubtitles services
2012-06-03 05:15:32 -07:00
Antoine Bertin d00e6905e1 Fix python 2.6 compatibility
list.copy() is 2.7+
2012-06-03 14:10:36 +02:00
Nicolas Wack c7388c9247 Updated requirements for GuessIt 2012-05-12 17:30:30 +02:00
Nicolas Wack 5a2ab412b8 Fixed TvSubtitles download (we get back zip files, not srt ones) 2012-05-12 16:37:25 +02:00
Nicolas Wack 584acb0856 Updated OpenSubtitles' language support 2012-05-12 16:18:07 +02:00
Nicolas Wack 122f41507a Service.check_validity requires languages to be a set 2012-05-09 01:33:22 +02:00
Antoine Bertin 6a78564460 Add optional requirements to travis-ci configuration 2012-05-06 15:59:26 +02:00
Antoine Bertin 096cd5e09c Rename parser related variables. Clean up 2012-05-06 15:51:24 +02:00
Antoine Bertin cc3fa4b11a Update requirements 2012-05-06 12:08:34 +02:00
Antoine Bertin f050687487 Add automatic parser detection for BeautifulSoup 2012-05-06 11:40:12 +02:00
Antoine Bertin 4165ed0b9e Bump version to 0.6 in services 2012-05-06 11:39:23 +02:00
Antoine Bertin 3032590b8e Reorder imports 2012-05-06 11:38:36 +02:00
Antoine Bertin 113b504057 Use unicode in logging messages 2012-05-06 11:36:53 +02:00
Antoine Bertin 1a49f0b3ab Update documentation to remove references to subliminal.languages 2012-05-05 23:30:03 +02:00
Antoine Bertin a79143644b Fix import errors and be pep8 compliant 2012-05-05 23:12:02 +02:00
Antoine Bertin a2559d2d31 Add tests to setup.py and fix travis-ci support
Run tests with python setup.py test
2012-05-05 20:25:00 +02:00
Antoine Bertin 057933d737 Add support for travis-ci 2012-05-05 20:01:45 +02:00
Antoine Bertin bb16df5770 Change message when CLI does not download subtitles 2012-05-05 19:46:45 +02:00
Antoine Bertin b9c8ac23cc Fix requirements 2012-05-05 19:42:15 +02:00
Antoine Bertin bad6f77a01 Merge branch 'develop' of https://github.com/wackou/subliminal into develop 2012-05-05 19:42:07 +02:00
Nicolas Wack bb28945eba Optimized scanning for subtitles 2012-05-04 00:50:59 +02:00
Nicolas Wack 5a6ed82c5f Fixed possibly too greedy regexp 2012-05-03 23:10:21 +02:00
Nicolas Wack 055b2c7139 Fixed error message when no subtitles can be found in zipfile 2012-05-03 22:58:37 +02:00
Nicolas Wack e049eebeb0 Updated requirements for GuessIt 2012-04-28 20:56:33 +02:00
Nicolas Wack 0f3c68b7ef Removed bs4wrapper (requires BeautifulSoup>=4 now) 2012-04-28 20:23:39 +02:00
Nicolas Wack 607efff342 Merge remote-tracking branch 'olifozzy/develop' into languages_refactor 2012-04-25 02:14:14 +02:00
Nicolas Wack a88c05f7c3 Finished switching everything to guessit.Language; removed old language helper functions 2012-04-25 02:05:43 +02:00
Nicolas Wack 3aabbfde4c Subliminal now uses guessit.Language internally mostly everywhere 2012-04-24 22:25:21 +02:00
Nicolas Wack b447825a42 More flexilbe language handling 2012-04-22 03:28:12 +02:00
Nicolas Wack 2a1fb7bcb7 Unittests now clean up after themselves 2012-04-22 01:28:37 +02:00
Nicolas Wack fa7211c8b6 Added check on the size of the downloaded subtitle to make sure it is correct 2012-04-22 01:15:43 +02:00
Nicolas Wack bfa961a005 added unittests for the caching system 2012-04-21 21:43:08 +02:00
Nicolas Wack 4d9855d91c Refactored a bit unittests to use the generic EpisodeServiceTestCase 2012-04-21 20:09:04 +02:00
Nicolas Wack b09c069af8 Changed order of parameters for BierDopje.query() so that it follows the same order as the other services 2012-04-21 19:27:09 +02:00
Antoine Bertin 8fdb241a72 Update documentation 2012-04-15 23:25:14 +02:00
Nicolas Wack de781d0eec Refactored a bit the service unittests to avoid code duplication 2012-04-13 01:56:49 +02:00
Antoine Bertin 2959f52099 Fix CLI when --age is not given 2012-04-12 16:01:09 +03:00
Antoine Bertin 1e11c02006 Fix requirements for python 2.7
Add a requirement exception for previous versions of python
2012-04-11 22:24:37 +02:00
Antoine Bertin 12a58b0ca3 Bump version 2012-04-11 22:20:53 +02:00
Antoine Bertin 27f521d74e Update documentation 2012-04-11 21:15:02 +02:00
Antoine Bertin bbc3472873 Fix description for --age option in CLI 2012-04-11 20:35:47 +02:00
Antoine Bertin 680c699dfa Add --age option in CLI 2012-04-11 20:28:48 +02:00
Antoine Bertin b7ba6d51e2 Fix --workers option in CLI 2012-04-11 20:28:34 +02:00
Nicolas Wack 1f2128999f Correctly set config from a task to its cached service before consuming said task 2012-04-11 20:19:45 +02:00
olifozzy f03503b7f8 Change copyright 2012-04-11 09:53:00 +02:00
Antoine Bertin ae1b86173e Fix missing scan_filter option in async 2012-04-11 00:09:17 +02:00
Antoine Bertin e783c255b7 Add scan_filter option to filter out some paths 2012-04-10 23:48:49 +02:00
Nicolas Wack 0f86d7321f reworked caching system so that each ServiceConfig has its own Cache instance 2012-04-10 23:45:31 +02:00
Antoine Bertin f085b0fc8e Add argparse to the requirements (for python 2.6) 2012-04-10 22:07:57 +02:00
Nicolas Wack b4beba284d Caching system now has a separate cache and cache file for each service 2012-04-09 21:10:09 +02:00
Nicolas Wack c1e70e9e21 added TvSubtitles to the list of services in subliminal/core.py 2012-04-09 19:29:20 +02:00
olifozzy fca2c698fc Add unit tests 2012-04-06 15:09:35 +02:00
olifozzy 5d5b23f907 Change copyright author 2012-04-06 09:37:55 +02:00
olifozzy 2860e58830 Add Addic7ed service. 2012-04-06 01:06:26 +02:00
Antoine Bertin e8dec6c143 Merge branch 'develop' 2012-03-25 18:01:53 +02:00
Antoine Bertin 8b2b19de4b Update and fix NEWS 2012-03-25 17:58:42 +02:00
Antoine Bertin af162578c0 Merge branch 'develop' 2012-03-25 17:47:15 +02:00
Antoine Bertin c6ccfa4417 Bump version 2012-03-25 17:46:56 +02:00
Antoine Bertin 132001a1be Improve error handling of enzyme parsing 2012-03-25 17:46:10 +02:00
Antoine Bertin 830c09dde7 Merge branch 'develop' 2012-03-25 13:12:56 +02:00
Antoine Bertin 57bcde2511 Add missing setup.cfg 2012-03-25 13:12:46 +02:00
Antoine Bertin c1db5b43e5 Merge branch 'develop' 2012-03-25 12:50:27 +02:00
Antoine Bertin 7b7f29720c Update README 2012-03-25 12:10:55 +02:00
Antoine Bertin 13320db360 Clean up documentation 2012-03-25 12:10:46 +02:00
Antoine Bertin dd9d63d74e Remove version of requests in requirements.txt 2012-03-25 12:05:35 +02:00
Antoine Bertin 739ed2be6d Update NEWS 2012-03-25 12:04:36 +02:00
Antoine Bertin 95d9ed685f Use unicode for release of ResultSubtitle 2012-03-25 11:53:25 +02:00
Antoine Bertin 1064d60873 Fix setup sdist including everything. Improve keywords and requirements 2012-03-25 10:39:11 +02:00
Nicolas Wack 014c3249b5 Much better TvSubtitles service; uses cache now too 2012-03-21 20:14:24 +01:00
Nicolas Wack 59920a5537 Enhanced caching system 2012-03-21 16:27:26 +01:00
Nicolas Wack 8e04de4d65 Better BeautifulSoup4 wrapper 2012-03-20 20:31:54 +01:00
Nicolas Wack 3ff8ebea7d fixed some python 2.6 issues
some objects can be used in 2.7 as context managers but not in 2.6
2012-03-15 22:33:35 +01:00
Nicolas Wack 29096d6700 Merge branch 'develop' of github.com:wackou/subliminal into develop 2012-03-14 23:48:25 +01:00
Nicolas Wack 1c59fc829f added first version of a TvSubtitles service 2012-03-14 23:42:43 +01:00
Nicolas Wack ca5c0427b8 allow services to download an extract zip files 2012-03-14 22:30:38 +01:00
Nicolas Wack f1dd77bdfd Compatibility for BeautifulSoup 3 and 4
BeautifulSoup4 is imported by default if present.
2012-03-13 01:54:33 +01:00
Antoine Bertin a93f74c3ec Do not create download tasks without subtitles 2012-03-10 01:43:13 +01:00
Antoine Bertin a5b9d2dbd6 Add missing documentation stuff 2012-03-10 01:12:51 +01:00
Antoine Bertin 2e6e27991a Use modified flask's sphinx documentation theme 2012-03-10 00:50:02 +01:00
Antoine Bertin b0ae70a88f More documentation 2012-03-10 00:19:22 +01:00
Antoine Bertin af2e8ba7bd Fix wrong __all__ in utils 2012-03-10 00:04:37 +01:00
Antoine Bertin 15ca8dac1d More documentation 2012-03-10 00:04:19 +01:00
Antoine Bertin b6f6d17daa More documentation 2012-03-07 08:37:41 +01:00
Nicolas Wack 4d06316d22 ported services to BeautifulSoup4 2012-03-05 22:02:31 +01:00
Antoine Bertin 9290d7e96f Change list_subtitles so it returns a dict of subtitles by video 2012-03-05 21:46:53 +01:00
Antoine Bertin 10f931ab68 Add some core components to subliminal 2012-03-05 21:45:09 +01:00
Antoine Bertin 75986be154 Add some examples to the documentation 2012-03-03 23:19:09 +01:00
Antoine Bertin 1b53c9377d Remove old stuff in README 2012-03-03 23:18:58 +01:00
Antoine Bertin 7b31c000cd Allow zero depth entries 2012-03-03 22:37:31 +01:00
Antoine Bertin d180dd5f6a Fix subswiki and subtitulos 2012-03-03 22:24:34 +01:00
Antoine Bertin b7d4d67bec Add docstrings to async 2012-03-03 18:57:45 +01:00
Antoine Bertin 8a018ed3a8 Update async unittests 2012-03-03 18:27:42 +01:00
Antoine Bertin fe41ab9c6b Rename attribute _workers to workers in Pool 2012-03-03 18:27:23 +01:00
Antoine Bertin 7cf00b4b58 Add content to NEWS 2012-03-03 15:23:10 +01:00
Antoine Bertin 224b2399bc Fix COPYING 2012-03-03 15:22:51 +01:00
Antoine Bertin bef04df3b3 Fix CLI 2012-03-03 10:56:47 +01:00
Antoine Bertin a956707669 Fix async 2012-03-03 10:56:42 +01:00
Antoine Bertin d812af8535 Add a unittest for async 2012-03-02 11:02:47 +01:00
Antoine Bertin 0edb45d851 Add Pool to subliminal 2012-03-02 11:01:44 +01:00
Antoine Bertin e25903f282 Fix services 2012-03-02 10:43:21 +01:00
Antoine Bertin 591f98957f Fix async 2012-03-02 10:43:07 +01:00
Antoine Bertin 01eb6a7a5a Start working on the CLI 2012-03-02 10:42:51 +01:00
Antoine Bertin 2e9fc52ba2 Update unittests 2012-03-01 22:07:53 +01:00
Antoine Bertin 25c5b0f695 Update User-Agent 2012-03-01 19:30:05 +01:00
Antoine Bertin 88b242fe65 Add __version__ to subliminal 2012-03-01 18:00:26 +01:00
Antoine Bertin 28b7414347 Rename Subliminal to subliminal 2012-03-01 18:00:08 +01:00
Antoine Bertin 71e58336aa Remove plugins 2012-03-01 17:48:20 +01:00
Antoine Bertin b3388cfef9 Update unittests 2012-03-01 17:43:31 +01:00
Antoine Bertin ad1cbc8318 Add subswiki, subtitulos and thesubdb services 2012-03-01 17:43:18 +01:00
Antoine Bertin 6d47022bb5 Use new check_validity method in services 2012-03-01 17:42:51 +01:00
Antoine Bertin 4e96c77d2b Add a check_validity method to ServiceBase 2012-03-01 17:42:04 +01:00
Antoine Bertin b1071e0870 Add pass to some ServiceBase methods 2012-03-01 17:40:37 +01:00
Antoine Bertin e786c456af Default method for Service download 2012-03-01 17:40:05 +01:00
Antoine Bertin 68fb07ee0d Remove unused test files 2012-03-01 17:35:09 +01:00
Antoine Bertin 35bf0b803c Remove unused exception 2012-03-01 13:12:13 +01:00
Antoine Bertin ef1a142c59 Clean imports in core 2012-03-01 13:12:02 +01:00
Antoine Bertin 14ff363ce6 Replace plugin with service 2012-03-01 13:11:47 +01:00
Antoine Bertin 7872bca40d Fix very long lines in videos 2012-03-01 13:09:04 +01:00
Antoine Bertin 4b4272ce85 Improve setup.py stuff 2012-03-01 13:07:34 +01:00
Antoine Bertin 28b99ad374 General refactoring
- Move from md to rst
- Add sphinx docstrings
- Rename plugins to services
- Replace Subliminal class with the async module
- Straightforward to use
- Use relative imports
- Remove mkvmerge stuff
2012-02-29 22:28:54 +01:00
Antoine Bertin b7fb9a7703 Rename test to tests 2012-02-27 19:11:58 +01:00
Antoine Bertin 3eb4913863 Merge branch 'develop' of github.com:Diaoul/subliminal into develop 2012-02-27 16:46:42 +01:00
Antoine Bertin fe46afd571 Update license and minor changes 2012-02-27 15:34:23 +01:00
Antoine Bertin e8ba65ef22 Use MATCHING_CONFIDENCE 2012-01-24 15:25:27 +01:00
Antoine Bertin 4854b2630e Fix CLI 2012-01-11 13:21:04 +01:00
Antoine Bertin e7d3465cdd Update required packages 2012-01-02 07:56:06 +01:00
Antoine Bertin b04975af2e Improve __init__ 2012-01-02 07:56:06 +01:00
Antoine Bertin 947384aa6f Use relative imports 2012-01-02 07:56:06 +01:00
Antoine Bertin 8db65824bb Merge pull request #54 from bonega/develop
Fix for "ValueError: zero length field name in format"
2011-12-20 12:12:19 -08:00
Andreas Liljeqvist ec1c625a1a Fix for "ValueError: zero length field name in format"
Python 2.6 must have positional arguments for format.
2011-12-20 20:21:02 +01:00
Antoine Bertin ded2171375 Update README 2011-12-10 10:47:17 +01:00
Antoine Bertin fdc388a117 Fix __all__ of core.py 2011-12-08 16:02:31 +01:00
Antoine Bertin 2320cfd8e5 Fix a bug in matching_confidence 2011-12-08 15:44:23 +01:00
Antoine Bertin 1be88b8454 Fix variable name conflict 2011-12-08 15:43:35 +01:00
Antoine Bertin e3ea8ee06b Fix variable name conflicts 2011-12-08 15:17:14 +01:00
Antoine Bertin d7c10ae1b8 Code clean-up 2011-12-08 15:13:54 +01:00
Antoine Bertin 03f209b2b0 Use enzyme 2011-12-04 22:36:04 +01:00
Antoine Bertin c0ddac5eed Update license 2011-12-04 22:29:29 +01:00
Antoine Bertin 0e06088b3e Update video extensions 2011-12-02 10:53:19 +01:00
Antoine Bertin 75de6bbb3d Add more video extensions 2011-11-29 14:34:15 +01:00
Antoine Bertin 0e0189d518 Fix language detection for EmbeddedSubtitles 2011-11-24 00:06:09 +01:00
Antoine Bertin c166bfd334 Update unittest 2011-11-21 21:23:59 +01:00
Antoine Bertin 496cb3bc68 Fix mkvmerge 2011-11-21 21:23:34 +01:00
Antoine Bertin d5176b1b48 Use langcode instead of language from kaa.metadata 2011-11-17 22:19:53 +01:00
Antoine Bertin 2560c5f711 Fix fromKaa constructor 2011-11-17 08:58:34 +01:00
Antoine Bertin 062fcae014 Use utf-8 encoded strings for comparison 2011-11-17 08:58:15 +01:00
Antoine Bertin 90e6a4b94a Fix core.py for single srt detection 2011-11-17 08:57:57 +01:00
Antoine Bertin c7bf7dcb45 Fix CLI 2011-11-17 08:57:41 +01:00
Antoine Bertin 069ab7405f Delete api.py for now 2011-11-17 08:57:33 +01:00
Antoine Bertin ed2e8aa510 Fix setup.py 2011-11-16 22:46:46 +01:00
Antoine Bertin 08d7ce7a2b Fix missing import 2011-11-14 18:03:07 +01:00
Antoine Bertin 8dabb8cbbd Fix typo in scan 2011-11-11 21:46:44 +01:00
Antoine Bertin 3cf265f6c9 Change version from 1.0 to 0.4 2011-11-11 20:37:19 +01:00
Antoine Bertin 1b8dd8cc83 Update gitignore 2011-11-11 20:37:03 +01:00
Antoine Bertin d12226eb7e Change version number from 1.1 to 0.5 2011-11-11 20:32:45 +01:00
Antoine Bertin 6d9c5c34f2 Update unittests 2011-11-11 20:23:04 +01:00
Antoine Bertin 251b1fb446 Multiple enhancements
- Add languages.py with language related stuff
- Add multiple Subtitle classes
- Update scan so it returns [(video, [subtitle])]
- Update mkvmerge to support embedded subtitles
- Replace pt-br with (Brazilian, po, pob)
2011-11-11 20:21:06 +01:00
Antoine Bertin f39df2ff46 Update Video and Subtitle. New scan method with kaa.metadata 2011-11-08 01:35:07 +01:00
Antoine Bertin 945bcee3f5 Do not print Popen result in console 2011-11-08 01:33:04 +01:00
Antoine Bertin fef5c09a76 Add mapping for ISO-639-2 languages 2011-11-08 01:31:53 +01:00
Antoine Bertin 54a9851dee Fix mkvmerge 2011-11-06 22:17:49 +01:00
Antoine Bertin b609659f65 Add more logging when skipping videos 2011-11-06 13:55:55 +01:00
Antoine Bertin a352ecc771 Init requests session in PluginBase 2011-11-06 11:27:04 +01:00
Antoine Bertin abbf3bc20f Add a compatibility option to CLI 2011-11-05 23:19:30 +01:00
Antoine Bertin 21704696da Remove unused stuff 2011-11-05 21:42:39 +01:00
Antoine Bertin ffa38694df Add pt-br in valid languages 2011-11-05 21:42:23 +01:00
Antoine Bertin 090bdbeccd Fix "long int exceeds XML-RPC limits" in OpenSubtitles 2011-11-05 21:31:21 +01:00
Antoine Bertin 7f0d9fea54 Update unittests 2011-11-05 21:07:25 +01:00
Antoine Bertin 8f6839dfe8 Add keywords in Subtitulos subtitles 2011-11-05 21:04:27 +01:00
Antoine Bertin 246d35fdb1 Fix Subtitulos list 2011-11-05 21:04:11 +01:00
Antoine Bertin 11b0037986 Fix Subtitulos require_video 2011-11-05 21:03:48 +01:00
Antoine Bertin ab34a23bb4 Fix SubsWiki download 2011-11-05 21:03:34 +01:00
Antoine Bertin 288b9f00e8 Add parameters check in SubsWiki 2011-11-05 21:03:15 +01:00
Antoine Bertin 712842a235 Fix SubsWiki 2011-11-05 21:02:49 +01:00
Antoine Bertin 82b6b3faf5 Fix SubsWiki require_video 2011-11-05 21:02:22 +01:00
Antoine Bertin 563d0f7566 Add parameters check in BierDopje 2011-11-05 21:02:10 +01:00
Antoine Bertin a9c605f7c9 Update OpenSubtitles 2011-11-05 21:01:52 +01:00
Antoine Bertin 21a1c1243b Add Subtitulos to the list 2011-11-05 20:59:07 +01:00
Antoine Bertin 7c94f1792b Use requests in downloadFile 2011-11-05 17:37:00 +01:00
Antoine Bertin b0f87f4e37 Fix scan 2011-11-05 17:36:40 +01:00
Antoine Bertin 4bb10cf89a Fix OpenSubtitles terminate when could not LogIn 2011-11-03 08:50:06 +01:00
Antoine Bertin da22709623 Fix downloadSubtitles 2011-11-03 08:49:29 +01:00
Antoine Bertin 7c8e0457ce Update unittests 2011-11-02 08:57:17 +01:00
Antoine Bertin f18656738d Do not accept Movie in Subtitulos 2011-11-02 08:56:44 +01:00
Antoine Bertin 517cf6205c Add Subtitulos 2011-11-02 08:56:15 +01:00
Antoine Bertin f45f0b492d Fix SubsWiki list 2011-11-02 08:56:04 +01:00
Antoine Bertin 2271d3d4c5 Update unittests 2011-11-02 08:26:37 +01:00
Antoine Bertin b5293e4455 Add SubsWiki 2011-11-02 08:26:12 +01:00
Antoine Bertin c6614e2faa Fix split_keyword 2011-11-02 08:25:48 +01:00
Antoine Bertin b8ddc72fe8 Add other plugins to Subliminal 2011-11-02 08:25:19 +01:00
Antoine Bertin 3e63414b80 Various little changes 2011-11-02 08:25:01 +01:00
Antoine Bertin 58338fc946 Use pt-br in OpenSubtitles 2011-11-02 08:24:19 +01:00
Antoine Bertin acba7d1228 Update unittests for TheSubDB 2011-10-31 22:12:05 +01:00
Antoine Bertin 956d8ef0d8 Update unittests 2011-10-31 22:11:07 +01:00
Antoine Bertin 7bd6db0c5d Add TheSubDB 2011-10-31 22:09:56 +01:00
Antoine Bertin a291af863c Fix GetSubtitle 2011-10-31 22:09:43 +01:00
Antoine Bertin 7f828783a7 Improve HTTP error handling 2011-10-31 22:09:22 +01:00
Antoine Bertin eb57a83bf5 More accurate logging 2011-10-31 22:08:34 +01:00
Antoine Bertin 9720679461 More logging 2011-10-27 01:13:52 +02:00
Antoine Bertin cc10d69b47 Add structure for subtitles.com.br provider 2011-10-27 01:13:35 +02:00
Antoine Bertin e5b8b2fc8e Update unittests 2011-10-27 01:12:29 +02:00
Antoine Bertin b3880b3ec8 Update unittests 2011-10-26 19:28:27 +02:00
Antoine Bertin eaafa7fb25 Fix BierDopje query 2011-10-26 19:27:02 +02:00
Antoine Bertin be346af2ba Fix OpenSubtitles terminate 2011-10-26 19:26:45 +02:00
Antoine Bertin a5d53eaeba Add BierDopje plugin 2011-10-26 08:09:27 +02:00
Antoine Bertin af340eec7b Update CLI 2011-10-25 08:43:01 +02:00
Antoine Bertin 0baac5d829 New setup stuff
- Add requests to make HTTP requests
- Add suds to make SOAP requests
2011-10-25 08:42:43 +02:00
Antoine Bertin 1631d48490 Docstring in subtitles 2011-10-25 08:41:38 +02:00
Antoine Bertin f9874c3c37 Use only one plugin instance within the same worker. Other stuff
- More docstrings
- stopWorkers is more flexible
- pauseWorkers is now just a wrapper
- auto arg for list and download default to False
because of the new with statement
2011-10-25 08:41:16 +02:00
Antoine Bertin 2f8e49b8df Fix bad import. New stuff in __init__ 2011-10-25 08:38:11 +02:00
Antoine Bertin 8455b2c480 New plugins organization
- One file only to avoid importing parent
- Remove shared data and use single plugin instance instead
2011-10-25 08:37:40 +02:00
Antoine Bertin fa25502803 Remove broken plugins from the list 2011-10-25 08:09:08 +02:00
Antoine Bertin bfaa45252a Add plugins and languages args to constructor 2011-10-25 08:07:42 +02:00
Antoine Bertin 9af3627b62 Update OpenSubtitles 2011-10-24 08:46:06 +02:00
Antoine Bertin 8edccedbbd Fix OpenSubtitles when no data is returned 2011-10-24 08:45:49 +02:00
Antoine Bertin 8d020fd39a Update abstract methods in PluginBase 2011-10-24 08:45:23 +02:00
Antoine Bertin 139314eaba Remove useless stuff in PluginBase 2011-10-24 08:44:56 +02:00
Antoine Bertin 9cbd5ccf05 Improve __init__ in PluginBase 2011-10-24 08:42:48 +02:00
Antoine Bertin 314cab60aa Fix wrong state in pauseWorkers 2011-10-24 08:42:07 +02:00
Antoine Bertin 025b53092e Improve shared data 2011-10-24 08:41:48 +02:00
Antoine Bertin 7a0ea2bdff Implement with statement in Subliminal 2011-10-24 08:41:26 +02:00
Antoine Bertin 0a79820dd6 Improve __init__ 2011-10-24 08:39:35 +02:00
Antoine Bertin 7203ad93e4 Fix error in logging when video has no path 2011-10-24 08:39:09 +02:00
Antoine Bertin 504dda817a Put workers in property to raise BadStateError 2011-10-24 08:38:24 +02:00
Antoine Bertin 1069cff6cf Fix DownloadTask put in the taskQueue 2011-10-24 08:36:35 +02:00
Antoine Bertin 2662150710 Fix CLI 2011-10-24 08:34:58 +02:00
Antoine Bertin ad7c187201 Update OpenSubtitles 2011-10-22 18:26:30 +02:00
Antoine Bertin d7125413e5 Fix get_subtitle_path 2011-10-22 18:26:01 +02:00
Antoine Bertin 87d2d9e1f2 Init keywords with empty set in Subtitle 2011-10-22 17:57:49 +02:00
Antoine Bertin 9d712b86fa Improve the use of shared data
- Plugins have now access to their shared data only
- Add a class attribute shared_support in plugins
2011-10-22 17:57:17 +02:00
Antoine Bertin 69baf1e039 Add a video attribute to DownloadTask 2011-10-22 17:49:34 +02:00
Antoine Bertin 906707f0e0 Add size attribute and init hashes in constructor for Video 2011-10-22 17:48:28 +02:00
Antoine Bertin 3762ab1878 Review the factory method for videos 2011-10-22 17:46:14 +02:00
Antoine Bertin 12d7fe7ebf Fix a bug in scan 2011-10-22 17:45:26 +02:00
Antoine Bertin 5a6c278167 Finalize new structure
- Rename files_mode to filemode
- New PluginConfig object to give configuration to plugins
- Improve subtitles ordering with matching_confidence method
- Share plugins data inside a same worker to improve performances
- Fix get_subtitle_path
- Remove KEYWORD_SEPARATORS
- Replace keywords by guess in videos
- New get_keywords(guess) method
2011-10-22 15:21:00 +02:00
Antoine Bertin bddfa15eb8 Working OpenSubtitles 2011-10-20 08:50:21 +02:00
Antoine Bertin 899de2ebe3 More work on 1.1
- Introduce the sort_order so users can specify in which order
subtitles are downloaded (prefer language over plugin, etc.)
- Use key function in sorting
- List method now returns a list of tuples: [(video, [subtitle])]
- OpenSubtitles refactoring
- get_subtitle_path method in subtitles
- imdbid in Video
2011-10-19 00:19:42 +02:00
Antoine Bertin eef578b939 More work on 1.1
- Lots of #TODO
- Differentiate missing language and invalid language exceptions
- Extensions for videos and subtitles
- Mimetypes in videos
- Review PluginBase: use more classmethods
- Add mkvmerge method in videos
- Update unittests
- New utils.py for commonly used functions
2011-10-17 00:55:00 +02:00
Antoine Bertin a7608171b1 Update .gitignore 2011-10-17 00:49:19 +02:00
Antoine Bertin f3292c2916 Release v1.0b6 2011-10-08 19:44:14 +02:00
Antoine Bertin 048d6adfa3 Exit the plugin if no correct language is given 2011-10-08 19:41:04 +02:00
Antoine Bertin f004271e8b Fix log message in PluginBase 2011-10-08 19:37:33 +02:00
Antoine Bertin 63ef2f1273 Release v1.0b5 2011-10-08 19:03:51 +02:00
Antoine Bertin 4d3b050a81 Changes for 1.1
- Review code organization
- Add Video classes
- Improve Subtitle class
- Use classmethods
- Remove all socket.setdefaulttimeout
- Replace xmlrpclib.Server (deprecated) by xmlrpclib.ServerProxy
2011-10-08 18:52:36 +02:00
Antoine Bertin f7f2b80028 Update unittest 2011-10-07 19:22:45 +02:00
Antoine Bertin ec21d564b2 Handle correctly non existent file paths 2011-10-07 19:13:21 +02:00
Antoine Bertin 6d2b772f21 Add a timeout on downloadFile method so it does not get stuck 2011-10-07 19:11:05 +02:00
Antoine Bertin d506dd2095 Remove useless checkLanguages method 2011-10-07 19:10:11 +02:00
Antoine Bertin c66028793d Release v1.0b4 2011-10-07 13:59:37 +02:00
Antoine Bertin 0e3467d3aa Add possible_languages method to filter undesired languages 2011-10-07 01:35:34 +02:00
Antoine Bertin d9dc6832e3 Be more pythonic
- Use property decorators
- Use new-style classes
2011-10-07 01:33:28 +02:00
Antoine Bertin a57d49abf1 Remove useless comments 2011-10-07 01:31:50 +02:00
Antoine Bertin 614388e28f Fix bad error logging when there is no error 2011-10-07 01:31:02 +02:00
Antoine Bertin 7e1a09fb64 Do not forget to remove the gziped file in OpenSubtitles 2011-10-07 01:30:02 +02:00
Antoine Bertin 6efbbd9cad Use logging to print stack instead of traceback 2011-10-07 00:00:07 +02:00
Antoine Bertin e0b5894e3f Use sets in listSubtitles for wanted languages 2011-10-06 23:59:03 +02:00
Antoine Bertin 5ed153425b Preserve order for languages and plugins 2011-10-06 23:56:09 +02:00
Antoine Bertin c961c9be93 Fix multiple issues
- Add a DownloadFailedError exception
- Fix not working "skip on failure" on a download task
- Add extensions to detect subtitles files
- Replace recursiveSearch with scan method
- Fix 'list' object has no attribute 'path'
2011-10-05 22:30:33 +02:00
Antoine Bertin 0bafc9d31f Remove Addic7ed from plugins (not working anymore) 2011-10-05 21:31:54 +02:00
Antoine Bertin a48cd6c824 Remove duplicates in setters for languages and plugins 2011-10-02 21:23:46 +02:00
Antoine Bertin cb899b81e4 Release v1.0b3 2011-10-01 17:02:35 +02:00
Antoine Bertin 918151013e Improve error handling in subliminal 2011-10-01 17:01:54 +02:00
Antoine Bertin 4cb9ebb5e3 Fix search with special characters in some plugins 2011-10-01 15:06:46 +02:00
Antoine Bertin e14a5f1776 Improve error handling in plugins 2011-10-01 15:04:21 +02:00
Antoine Bertin 2437dc602c More logging in plugins 2011-10-01 15:02:38 +02:00
Antoine Bertin 8962d84ed3 Release v1.0b2 2011-09-29 23:55:58 +02:00
Antoine Bertin 4172d2a8b1 Change the Subtitle class. Make download return a list of Subtitles 2011-09-29 23:55:33 +02:00
Antoine Bertin 78a2166efe Release v1.0b 2011-09-29 23:51:30 +02:00
Antoine Bertin 20a2519d92 Fix unittest 2011-09-28 21:54:45 +02:00
Antoine Bertin a7da526885 Compare lowercase only in OpenSubtitles 2011-09-28 21:53:18 +02:00
Antoine Bertin d2010c3510 Log a warning if non unicode is submitted 2011-09-28 21:40:38 +02:00
Antoine Bertin 14c0c6fe6b Fix possible encoding issues in logger using repr instead of str 2011-09-28 21:39:48 +02:00
Antoine Bertin 5d8be66167 Add docstrings in classes 2011-09-28 21:37:37 +02:00
Antoine Bertin 9ac838a257 Make cmpSubtitles and recursiveSearch public 2011-09-27 21:38:30 +02:00
Antoine Bertin 0cd1016cae Use two result queues instead of one 2011-09-27 21:35:14 +02:00
Antoine Bertin 49b8486f44 Use simple quotes 2011-09-27 21:26:27 +02:00
Antoine Bertin 0a363ba5d5 Add a method to add tasks with default priority 2011-09-27 21:24:55 +02:00
Antoine Bertin 5fbfaef31d Fix BadStateError in CLI 2011-09-26 21:41:44 +02:00
Antoine Bertin 9324fc4c07 Add auto argument to manage workers 2011-09-26 21:41:20 +02:00
Antoine Bertin 171147dfcd Fix bad argument in unittest 2011-09-26 21:39:04 +02:00
Antoine Bertin dee0b33cec Fix missing import 2011-09-26 21:37:52 +02:00
Antoine Bertin f9c7654b7c Update unittest 2011-09-24 16:51:37 +02:00
Antoine Bertin b1e0371bb5 Use a PriorityQueue for tasks 2011-09-24 16:50:55 +02:00
Antoine Bertin f94957c68d Accept basestring input, not just unicode 2011-09-24 16:48:16 +02:00
Antoine Bertin 03dd15f718 Merge pull request #15 from abenea/master
Bugfixes
2011-09-23 15:08:44 -07:00
Andrei Benea 938b30604b Fix --cache_dir. 2011-09-23 21:25:28 +03:00
Andrei Benea acff303897 Fix "Downloaded subtitles" report. 2011-09-23 20:46:37 +03:00
Andrei Benea 978f4fb376 Fix exception in _recursiveSearch if no languages are selected. 2011-09-23 20:39:50 +03:00
Andrei Benea 50e0a6704b Add missing newline. 2011-09-23 20:39:08 +03:00
Andrei Benea b4e9c0e655 Don't hang on exceptions from the main thread. 2011-09-23 20:11:24 +03:00
Antoine Bertin 97ab555e2d Update unittest 2011-09-01 21:35:24 +02:00
Antoine Bertin 9bc12ec619 Fix BierDopje download 2011-09-01 21:35:04 +02:00
Antoine Bertin e4c12dfe5c Remove unused imports and variables 2011-09-01 08:38:53 +02:00
Antoine Bertin ca0d8e4ab1 Update .gitignore 2011-09-01 08:37:54 +02:00
Antoine Bertin 570dc7ef9a Remove last encodingKludge import 2011-08-31 21:38:04 +02:00
Antoine Bertin 3e7cac972d Update unittests 2011-08-29 22:23:24 +02:00
Antoine Bertin 9c7ac431b5 Update docstrings. Double quotes to simple quotes. Minor fixes
Minor fixes includes:
- getClassName() converted to self.__class__.__name__
- Typos
- listTeams separators in plugins to include more separators
2011-08-29 21:36:49 +02:00
Antoine Bertin 8f50b317cc Remove encodingKludge 2011-08-29 21:28:35 +02:00
Antoine Bertin c5e2e8c4b0 Fix wrong subliminal version in TheSubDB 2011-08-29 21:22:58 +02:00
Antoine Bertin 7aec1f7653 Remove unused multi_languages_queries in plugins 2011-08-29 21:22:30 +02:00
Antoine Bertin 65a677e6d4 Remove unused plugins_config 2011-08-29 21:20:40 +02:00
Antoine Bertin 8e9781c081 Add Subtitle and Task classes. Change list and download in plugins 2011-08-29 21:20:00 +02:00
Antoine Bertin d76d81eda3 Fix release group comparison. Use lowercase 2011-08-29 20:50:34 +02:00
Antoine Bertin 7b439bbf6f Remove useless multi_filename_queries stuff 2011-08-28 09:50:01 +02:00
Antoine Bertin aea078d65f Add some features. Review module organization
- More constants (FORMATS, LANGUAGES, PLUGINS, API_PLUGINS)
- NullHandler is given to the logger
- Remove useless stuff
- Custom exceptions
- More strict setters
- Move PluginWorker class to subliminal
2011-08-27 23:44:03 +02:00
Antoine Bertin 5834c3edcf Improve argument naming in subliminal script 2011-08-27 23:29:15 +02:00
Antoine Bertin 1d40c026f4 Remove the configuration file 2011-08-27 22:55:11 +02:00
Antoine Bertin 00fb74c5b1 Replace deprecated optparse with argparse 2011-08-27 18:49:53 +02:00
Antoine Bertin 066dc77bd9 Revert to development version 2011-08-27 18:47:16 +02:00
Antoine Bertin f264092e74 Release v0.3 2011-08-18 08:55:19 +02:00
Antoine Bertin 052481c0a1 Add more checks before adjusting permissions 2011-08-18 08:55:05 +02:00
Antoine Bertin 4e3f622de0 Add possibility to choose mode of created files (chmod) 2011-08-17 22:15:10 +02:00
Antoine Bertin 143c46fff0 Fix encoding issues with logging 2011-08-17 21:16:47 +02:00
Antoine Bertin bc8b0c762d Add a script to ease subtitles download 2011-07-31 19:42:58 +02:00
Antoine Bertin 9ec92d1be4 Fix dependencies failure when installing package 2011-07-31 19:42:25 +02:00
Antoine Bertin 29ee43a67d Fix a bug when series is not guessed by guessit 2011-07-23 13:39:11 +02:00
Antoine Bertin 0f15f8f52d Revert to development version 2011-07-23 13:24:30 +02:00
132 changed files with 212075 additions and 2459 deletions
+8
View File
@@ -0,0 +1,8 @@
[report]
exclude_lines =
pragma: no cover
raise NotImplementedError
def __repr__
if __name__ == .__main__.:
omit =
subliminal/cli.py
+64 -4
View File
@@ -1,4 +1,64 @@
build
dist
subliminal.egg-info
*.pyc
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
# Translations
*.mo
*.pot
# Django stuff:
*.log
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Pycharm
.idea
# Subliminal
tests/data/mkv/
+29
View File
@@ -0,0 +1,29 @@
sudo: false
language: python
python:
- 2.7
- 3.3
- 3.4
env:
- PARSER=native
- PARSER=lxml
cache:
directories:
- $HOME/.cache/pip
- tests/data/mkv
before_cache:
- rm -f $HOME/.cache/pip/log/debug.log
install:
- pip install -e .[test]
- if [ $PARSER = "lxml" ]; then pip install lxml; fi
- pip install coveralls
script: python setup.py test -a "--cov subliminal --verbose"
after_success: coveralls
+201
View File
@@ -0,0 +1,201 @@
Changelog
---------
1.0
^^^
**release date:** 2015-07-22
* Many changes and fixes
* New test suite
* New documentation
* New CLI
0.7.5
^^^^^
**release date:** 2015-03-04
* Update requirements
* Remove BierDopje provider
* Add pre-guessed video optional argument in scan_video
* Improve hearing impaired support
* Fix TVSubtitles and Podnapisi providers
0.7.4
^^^^^
**release date:** 2014-01-27
* Fix requirements for guessit and babelfish
0.7.3
^^^^^
**release date:** 2013-11-22
* Fix windows compatibility
* Improve subtitle validation
* Improve embedded subtitle languages detection
* Improve unittests
0.7.2
^^^^^
**release date:** 2013-11-10
* Fix TVSubtitles for ambiguous series
* Add a CACHE_VERSION to force cache reloading on version change
* Set CLI default cache expiration time to 30 days
* Add podnapisi provider
* Support script for languages e.g. Latn, Cyrl
* Improve logging levels
* Fix subtitle validation in some rare cases
0.7.1
^^^^^
**release date:** 2013-11-06
* Improve CLI
* Add login support for Addic7ed
* Remove lxml dependency
* Many fixes
0.7.0
^^^^^
**release date:** 2013-10-29
**WARNING:** Complete rewrite of subliminal with backward incompatible changes
* Use enzyme to parse metadata of videos
* Use babelfish to handle languages
* Use dogpile.cache for caching
* Use charade to detect subtitle encoding
* Use pysrt for subtitle validation
* Use entry points for subtitle providers
* New subtitle score computation
* Hearing impaired subtitles support
* Drop async support
* Drop a few providers
* And much more...
0.6.4
^^^^^
**release date:** 2013-05-19
* Fix requirements due to enzyme 0.3
0.6.3
^^^^^
**release date:** 2013-01-17
* Fix requirements due to requests 1.0
0.6.2
^^^^^
**release date:** 2012-09-15
* Fix BierDopje
* Fix Addic7ed
* Fix SubsWiki
* Fix missing enzyme import
* Add Catalan and Galician languages to Addic7ed
* Add possible services in help message of the CLI
* Allow existing filenames to be passed without the ./ prefix
0.6.1
^^^^^
**release date:** 2012-06-24
* Fix subtitle release name in BierDopje
* Fix subtitles being downloaded multiple times
* Add Chinese support to TvSubtitles
* Fix encoding issues
* Fix single download subtitles without the force option
* Add Spanish (Latin America) exception to Addic7ed
* Fix group_by_video when a list entry has None as subtitles
* Add support for Galician language in Subtitulos
* Add an integrity check after subtitles download for Addic7ed
* Add error handling for if not strict in Language
* Fix TheSubDB hash method to return None if the file is too small
* Fix guessit.Language in Video.scan
* Fix language detection of subtitles
0.6.0
^^^^^
**release date:** 2012-06-16
**WARNING:** Backward incompatible changes
* Fix --workers option in CLI
* Use a dedicated module for languages
* Use beautifulsoup4
* Improve return types
* Add scan_filter option
* Add --age option in CLI
* Add TvSubtitles service
* Add Addic7ed service
0.5.1
^^^^^
**release date:** 2012-03-25
* Improve error handling of enzyme parsing
0.5
^^^
**release date:** 2012-03-25
**WARNING:** Backward incompatible changes
* Use more unicode
* New list_subtitles and download_subtitles methods
* New Pool object for asynchronous work
* Improve sort algorithm
* Better error handling
* Make sorting customizable
* Remove class Subliminal
* Remove permissions handling
0.4
^^^
**release date:** 2011-11-11
* Many fixes
* Better error handling
0.3
^^^
**release date:** 2011-08-18
* Fix a bug when series is not guessed by guessit
* Fix dependencies failure when installing package
* Fix encoding issues with logging
* Add a script to ease subtitles download
* Add possibility to choose mode of created files
* Add more checks before adjusting permissions
0.2
^^^
**release date:** 2011-07-11
* Fix plugin configuration
* Fix some encoding issues
* Remove extra logging
0.1
^^^
**release date:** *private release*
* Initial release
+20
View File
@@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2015 Antoine Bertin
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+1
View File
@@ -0,0 +1 @@
include LICENSE HISTORY.rst requirements.txt
-6
View File
@@ -1,6 +0,0 @@
subliminal
==========
Python module to search and download subtitles
* [Project page](https://github.com/Diaoul/subliminal)
* [Initial project by Patrick Dessalle](http://code.google.com/p/periscope/)
+63
View File
@@ -0,0 +1,63 @@
Subliminal
==========
Subtitles, faster than your thoughts.
.. image:: https://img.shields.io/pypi/v/subliminal.svg
:target: https://pypi.python.org/pypi/subliminal
:alt: Latest Version
.. image:: https://travis-ci.org/Diaoul/subliminal.svg?branch=master
:target: https://travis-ci.org/Diaoul/subliminal
:alt: Travis CI build status
.. image:: https://readthedocs.org/projects/subliminal/badge/?version=latest
:target: https://subliminal.readthedocs.org/
:alt: Documentation Status
.. image:: https://coveralls.io/repos/Diaoul/subliminal/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/Diaoul/subliminal?branch=master
:alt: Code coverage
.. image:: https://img.shields.io/github/license/Diaoul/subliminal.svg
:target: https://github.com/Diaoul/subliminal/blob/master/LICENSE
:alt: License
:Project page: https://github.com/Diaoul/subliminal
:Documentation: https://subliminal.readthedocs.org/
Usage
-----
CLI
^^^
Download English subtitles::
$ subliminal download -l en The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4
Collecting videos [####################################] 100%
1 video collected / 0 video ignored
Downloading subtitles [####################################] 100%
Downloaded 1 subtitle
Library
^^^^^^^
Download best subtitles in French and English for videos less than two weeks old in a video folder:
.. code:: python
from datetime import timedelta
from babelfish import Language
from subliminal import download_best_subtitles, region, save_subtitles, scan_videos
# configure the cache
region.configure('dogpile.cache.dbm', arguments={'filename': 'cachefile.dbm'})
# scan for videos newer than 2 weeks and their existing subtitles in a folder
videos = [v for v in scan_videos('/video/folder') if v.age < timedelta(weeks=2)]
# download best subtitles
subtitles = download_best_subtitles(videos, {Language('eng'), Language('fra')})
# save them to disk, next to the video
save_subtitles(subtitles)
+192
View File
@@ -0,0 +1,192 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS = -n -W
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest coverage gettext
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/subliminal.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/subliminal.qhc"
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/subliminal"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/subliminal"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
+7
View File
@@ -0,0 +1,7 @@
API
===
.. automodule:: subliminal.api
.. data:: provider_manager
:class:`~stevedore.extension.ExtensionManager` based on the entry point ``subliminal.providers``
+21
View File
@@ -0,0 +1,21 @@
Cache
=====
.. module:: subliminal.cache
.. autodata:: CACHE_VERSION
:annotation:
.. autodata:: SHOW_EXPIRATION_TIME
:annotation:
.. autodata:: EPISODE_EXPIRATION_TIME
:annotation:
.. data:: region
:annotation:
The :class:`~dogpile.cache.region.CacheRegion`
Refer to dogpile.cache's `region configuration documentation
<http://dogpilecache.readthedocs.org/en/latest/usage.html#region-configuration>`_ to see how to configure the region
+3
View File
@@ -0,0 +1,3 @@
Exceptions
==========
.. automodule:: subliminal.exceptions
+3
View File
@@ -0,0 +1,3 @@
Providers
=========
.. automodule:: subliminal.providers
+3
View File
@@ -0,0 +1,3 @@
Score
=====
.. automodule:: subliminal.score
+3
View File
@@ -0,0 +1,3 @@
Subtitle
========
.. automodule:: subliminal.subtitle
+10
View File
@@ -0,0 +1,10 @@
Video
=====
.. automodule:: subliminal.video
:exclude-members: VIDEO_EXTENSIONS, SUBTITLE_EXTENSIONS
.. autodata:: VIDEO_EXTENSIONS
:annotation:
.. autodata:: SUBTITLE_EXTENSIONS
:annotation:
+280
View File
@@ -0,0 +1,280 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/1.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sXML=1&sTS=5&sTE=18&sK=The+Big+Bang+Theory&sL=hu
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Mon, 20 Jul 2015 06:11:37 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sXML=1&sTS=5&sTE=18&sK=The+Big+Bang+Theory&sL=hu']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/1.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sXML=1&sTS=5&sTE=18&sK=The+Big+Bang+Theory&sL=hu
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>2</results></pagination><subtitle><id>1495142</id><pid>ZtAW</pid><title>The
Big Bang Theory</title><year>2007</year><movieId>sY0G</movieId><url>http://www.podnapisi.net/subtitles/hu-the-big-bang-theory-2007-S05E18/ZtAW</url><uploaderId>40156</uploaderId><uploaderName>kvrle</uploaderName><release>The.Big.Bang.Theory.S05E18.HDTV-LOL
The.Big.Bang.Theory.S05E18.720p.HDTV.x264-DIMENSION</release><languageId>15</languageId><languageName>Hungarian</languageName><language>hu</language><time>1330213369</time><tvSeason>5</tvSeason><tvEpisode>18</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>497</downloads><exactHashes
/></subtitle><subtitle><id>1495096</id><pid>ONAW</pid><title>The Big Bang
Theory</title><year>2007</year><movieId>sY0G</movieId><url>http://www.podnapisi.net/subtitles/hu-the-big-bang-theory-2007-S05E18/ONAW</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>The.Big.Bang.Theory.S05E18.HDTV.XviD-FQM</release><languageId>15</languageId><languageName>Hungarian</languageName><language>hu</language><time>1330134575</time><tvSeason>5</tvSeason><tvEpisode>18</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>347</downloads><exactHashes /></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['2792']
Content-Type: [text/xml;charset=utf-8]
Date: ['Mon, 20 Jul 2015 06:11:37 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
- request:
body: null
headers:
User-Agent: [Subliminal/1.0]
method: GET
uri: http://podnapisi.net/subtitles/ZtAW/download?container=zip
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Mon, 20 Jul 2015 06:11:37 GMT']
Location: ['http://www.podnapisi.net/subtitles/ZtAW/download?container=zip']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/1.0]
method: GET
uri: http://www.podnapisi.net/subtitles/ZtAW/download?container=zip
response:
body:
string: !!binary |
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
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Disposition: [attachment; filename="e638ea178f406cb584f48051501e2cb4db4fce1d.zip"]
Content-Length: ['10541']
Content-Type: [application/octet-stream]
Date: ['Mon, 20 Jul 2015 06:11:37 GMT']
ETag: ['"4f497ffb-292d"']
Last-Modified: ['Sun, 26 Feb 2012 00:42:35 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
version: 1
+316
View File
@@ -0,0 +1,316 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# subliminal documentation build configuration file, created by
# sphinx-quickstart on Sat Jul 11 00:40:28 2015.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
from __future__ import unicode_literals
import sys
import os
import shlex
import sphinx_rtd_theme
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('..'))
import subliminal
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
'sphinx.ext.viewcode',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = subliminal.__title__
copyright = ' '.join(subliminal.__copyright__.split()[1:])
author = subliminal.__copyright__.split(', ')[1]
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = subliminal.__version__.split('-')[0]
# The full version, including alpha/beta/rc tags.
release = subliminal.__version__
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all
# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
#keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# html_theme_options = {
# 'github_user': 'Diaoul',
# 'github_repo': project,
# 'travis_button': True,
# 'gratipay_user': 'Diaoul'
# }
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#html_extra_path = []
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr'
#html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# Now only 'ja' uses this config value
#html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = project + 'doc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
# Latex figure (float) alignment
#'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, project + '.tex', project + ' Documentation',
author, 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, project, project + ' Documentation',
[author], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, project, project + ' Documentation',
author, project, 'Subtitles, faster than your thoughts',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#texinfo_no_detailmenu = False
# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {
'python': ('http://docs.python.org/3.4', None),
'guessit': ('http://guessit.readthedocs.org/en/latest', None),
'babelfish': ('http://babelfish.readthedocs.org/en/latest', None),
'dogpilecache': ('http://dogpilecache.readthedocs.org/en/latest', None),
'dogpilecore': ('http://dogpilecore.readthedocs.org/en/latest', None),
'stevedore': ('http://docs.openstack.org/developer/stevedore', None),
'click': ('http://click.pocoo.org/4', None)
}
# -- Options for autodoc -------------------------------------------------------
autodoc_member_order = 'bysource'
autodoc_default_flags = ['members']
+40
View File
@@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
import sys
import pytest
try:
from unittest.mock import Mock
except ImportError:
from mock import Mock
from vcr import VCR
from subliminal.cache import region
vcr = VCR(path_transformer=lambda path: path + '.yaml',
match_on=['method', 'scheme', 'host', 'port', 'path', 'query', 'body'],
cassette_library_dir=os.path.join('docs', 'cassettes'))
@pytest.fixture(autouse=True, scope='session')
def configure_region():
region.configure('dogpile.cache.null')
region.configure = Mock()
@pytest.fixture(autouse=True)
def chdir(tmpdir, monkeypatch):
monkeypatch.chdir(str(tmpdir))
@pytest.yield_fixture(autouse=True)
def use_cassette(request):
with vcr.use_cassette('test_' + request.fspath.purebasename):
yield
@pytest.fixture(autouse=True)
def skip_python_2():
if sys.version_info < (3, 0):
return pytest.skip('Requires python 3')
+48
View File
@@ -0,0 +1,48 @@
.. subliminal documentation master file, created by
sphinx-quickstart on Sat Jul 11 00:40:28 2015.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to subliminal!
======================
Subliminal is a python library to search and download subtitles.
It comes with an easy to use yet powerful :abbr:`CLI (command-line interface)` suitable for direct use or cron jobs.
Documentation
-------------
.. toctree::
:maxdepth: 2
user/usage
user/how_it_works
user/cli
user/provider_guide
API Documentation
-----------------
If you are looking for information on a specific function, class or method, this part of the documentation is for you.
.. toctree::
:maxdepth: 1
api/api
api/video
api/subtitle
api/providers
api/cache
api/score
api/exceptions
License
-------
MIT
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
+263
View File
@@ -0,0 +1,263 @@
@ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=_build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
set I18NSPHINXOPTS=%SPHINXOPTS% .
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over all changed/added/deprecated items
echo. xml to make Docutils-native XML files
echo. pseudoxml to make pseudoxml-XML files for display purposes
echo. linkcheck to check all external links for integrity
echo. doctest to run all doctests embedded in the documentation if enabled
echo. coverage to run coverage check of the documentation if enabled
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
REM Check if sphinx-build is available and fallback to Python version if any
%SPHINXBUILD% 2> nul
if errorlevel 9009 goto sphinx_python
goto sphinx_ok
:sphinx_python
set SPHINXBUILD=python -m sphinx.__init__
%SPHINXBUILD% 2> nul
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
:sphinx_ok
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\subliminal.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\subliminal.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdf" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdfja" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf-ja
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
if "%1" == "coverage" (
%SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
if errorlevel 1 exit /b 1
echo.
echo.Testing of coverage in the sources finished, look at the ^
results in %BUILDDIR%/coverage/python.txt.
goto end
)
if "%1" == "xml" (
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The XML files are in %BUILDDIR%/xml.
goto end
)
if "%1" == "pseudoxml" (
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
goto end
)
:end
+77
View File
@@ -0,0 +1,77 @@
.. _cli:
CLI
===
subliminal
----------
.. code-block:: none
$ subliminal --help
Usage: subliminal [OPTIONS] COMMAND [ARGS]...
Subtitles, faster than your thoughts.
Options:
--addic7ed USERNAME PASSWORD Addic7ed configuration.
--cache-dir DIRECTORY Path to the cache directory. [default:
~/.config/subliminal]
--debug Print useful information for debugging subliminal and for
reporting bugs.
--version Show the version and exit.
--help Show this message and exit.
Commands:
cache Cache management.
download Download best subtitles.
Suggestions and bug reports are greatly appreciated: https://github.com/Diaoul/subliminal/
subliminal download
-------------------
.. code-block:: none
$ subliminal download --help
Usage: subliminal download [OPTIONS] PATH...
Download best subtitles.
PATH can be an directory containing videos, a video file path or a video file name. It can be
used multiple times.
If an existing subtitle is detected (external or embedded) in the correct language, the
download is skipped for the associated video.
Options:
-l, --language LANGUAGE Language as IETF code, e.g. en, pt-BR (can be used multiple
times). [required]
-p, --provider [addic7ed|opensubtitles|podnapisi|thesubdb|tvsubtitles]
Provider to use (can be used multiple times).
-a, --age AGE Filter videos newer than AGE, e.g. 12h, 1w2d.
-d, --directory DIR Directory where to save subtitles, default is next to the video
file.
-e, --encoding ENC Subtitle file encoding, default is to preserve original
encoding.
-s, --single Save subtitle without language code in the file name, i.e. use
.srt extension.
-f, --force Force download even if a subtitle already exist.
-hi, --hearing-impaired Prefer hearing impaired subtitles.
-m, --min-score INTEGER RANGE Minimum score for a subtitle to be downloaded (0 to 100).
-v, --verbose Increase verbosity.
--help Show this message and exit.
subliminal cache
----------------
.. code-block:: none
$ subliminal cache --help
Usage: subliminal cache [OPTIONS]
Cache management.
Options:
--clear-subliminal Clear subliminal's cache. Use this ONLY if your cache is corrupted or if
you experience issues.
--help Show this message and exit.
+48
View File
@@ -0,0 +1,48 @@
How it works
============
Providers
---------
Subliminal uses multiple providers to give users a vast choice and have a better chance to find the best matching
subtitles. Current supported providers are:
* Addic7ed
* OpenSubtitles
* Podnapisi
* TheSubDB
* TvSubtitles
Providers all inherit the same :class:`~subliminal.providers.Provider` base class and thus share the same API.
They are registered on the ``subliminal.providers`` entry point and are exposed through the
:data:`~subliminal.api.provider_manager` for easy access.
To make working with multiple providers seamlessly, the :class:`~subliminal.api.ProviderPool` exposes the same API but
distributes it to its providers.
.. _scoring:
Scoring
-------
Rating subtitles and comparing them is probably the most difficult part and this is where subliminal excels with its
powerful scoring algorithm.
Using `guessit <http://guessit.readthedocs.org>`_ and `enzyme <http://enzyme.readthedocs.org>`_, subliminal extracts
properties of the video and match them with the properties of the subtitles found with the providers.
Equations in :mod:`subliminal.score` give a score to each property (called a match). The more matches the video and
the subtitle have the higher the score computed with :func:`~subliminal.subtitle.compute_score` gets.
Libraries
---------
Various libraries are used by subliminal and are key to its success:
* `guessit <http://guessit.readthedocs.org>`_ to guess informations from filenames
* `enzyme <http://enzyme.readthedocs.org>`_ to detect embedded subtitles in videos and read other video metadata
* `babelfish <http://babelfish.readthedocs.org>`_ to work with languages
* `requests <http://docs.python-requests.org>`_ to make human readable HTTP requests
* `BeautifulSoup <http://www.crummy.com/software/BeautifulSoup>`_ to parse HTML and XML
* `dogpile.cache <http://dogpilecache.readthedocs.org>`_ to cache intermediate search results
* `stevedore <http://docs.openstack.org/developer/stevedore/>`_ to manage the provider entry point
* `chardet <http://chardet.readthedocs.org>`_ to detect subtitles' encoding
* `pysrt <https://github.com/byroot/pysrt>`_ to validate downloaded subtitles
+102
View File
@@ -0,0 +1,102 @@
Provider Guide
==============
This guide is going to explain how to add a :class:`~subliminal.providers.Provider` to subliminal. You are encouraged
to take a look at the existing providers, it can be a nice base to start your own provider.
Requirements
------------
When starting a provider you should be able to answer to the following questions:
* What languages does my provider support?
* What are the language codes for the supported languages?
* Does my provider deliver subtitles for episodes? for movies?
* Does my provider require a video hash?
Each response of these questions will help you set the correct attributes for your
:class:`~subliminal.providers.Provider`.
Video Validation
----------------
Not all providers deliver subtitles for :class:`~subliminal.video.Episode`. Some may require a hash.
The :meth:`~subliminal.providers.Provider.check` method does validation against a :class:`~subliminal.video.Video`
object and will return `False` if the given :class:`~subliminal.video.Video` isn't suitable. If you're not happy
with the default implementation, you can override it.
Configuration
-------------
API keys must not be configurable by the user and must remain linked to subliminal. Hence they must be written
in the provider module.
Per-user authentication is allowed and must be configured at instantiation as keyword arguments. Configuration
will be done by the user through the `provider_configs` argument of the :func:`~subliminal.api.list_subtitles` and
:func:`~subliminal.api.download_best_subtitles` functions. No network operation must be done during instantiation,
only configuration. Any error in the configuration must raise a
:class:`~subliminal.exceptions.ConfigurationError`.
Beyond this point, if an error occurs, a generic :class:`~subliminal.exceptions.ProviderError` exception
must be raised. You can also use more explicit exception classes :class:`~subliminal.exceptions.AuthenticationError`
and :class:`~subliminal.exceptions.DownloadLimitExceeded`.
Initialization / Termination
----------------------------
Actual authentication operations must take place in the :meth:`~subliminal.providers.Provider.initialize` method.
If you need anything to be executed when the provider isn't used anymore like logout,
use :meth:`~subliminal.providers.Provider.terminate`.
Caching policy
--------------
To save bandwidth and improve querying time, intermediate data should be cached when possible. Typical use case is
when a query to retrieve show ids is required prior to the query to actually search for subtitles. In that case
the function that gets the show id from the show name must be cached.
Expiration time should be :data:`~subliminal.cache.SHOW_EXPIRATION_TIME` for shows and
:data:`~subliminal.cache.EPISODE_EXPIRATION_TIME` for episodes.
Language
--------
To be able to handle various language codes, subliminal makes use of `babelfish <http://babelfish.readthedocs.org>`_
Language and converters. You must set the attribute :attr:`~subliminal.providers.Provider.languages` with a set of
supported :class:`~babelfish.language.Language`.
If you cannot find a suitable converter for your provider, you can `make one of your own
<http://babelfish.readthedocs.org/en/latest/#custom-converters>`_.
Querying
--------
The :meth:`~subliminal.providers.Provider.query` method parameters must include all aspects of provider's querying with
primary types.
Subtitle
--------
A custom :class:`~subliminal.subtitle.Subtitle` subclass must be created to represent a subtitle from the provider.
It must have relevant attributes that can be used to compute the matches of the subtitle against a
:class:`~subliminal.video.Video` object.
Score computation
-----------------
To be able to compare subtitles coming from different providers between them, the
:meth:`~subliminal.subtitle.Subtitle.get_matches` method must be implemented.
If `guessit <http://guessit.readthedocs.org>`_ is used to extract data from the
:class:`~subliminal.subtitle.Subtitle` subclass, you can use :func:`~subliminal.subtitle.guess_matches`
as a helper to compute matches between the :class:`~subliminal.video.Video` and the :class:`~guessit.guess.Guess`.
Refer to the `scores` attribute of :class:`~subliminal.video.Episode` and :class:`~subliminal.video.Movie`
for a list of possible matches.
Unittesting
-----------
All possible uses of :meth:`~subliminal.providers.Provider.query`,
:meth:`~subliminal.providers.Provider.list_subtitles` and :meth:`~subliminal.providers.Provider.download_subtitle`
methods must have integration tests. Use `vcrpy <https://github.com/kevin1024/vcrpy>`_ for recording and playback
of network activity.
Other functions must be unittested. If necessary, you can use :mod:`unittest.mock` to mock some functions.
+144
View File
@@ -0,0 +1,144 @@
Usage
=====
CLI
---
Download English subtitles::
$ subliminal download -l en The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4
Collecting videos [####################################] 100%
1 video collected / 0 video ignored
Downloading subtitles [####################################] 100%
Downloaded 1 subtitle
.. warning::
For cron usage, make sure to specify a maximum age (with ``--age``) so subtitles are searched for recent videos
only. Otherwise you will get banned from the providers for abuse due to too many requests. If subliminal didn't
find subtitles for an old video, it's unlikely it will find subtitles for that video ever anyway.
See :ref:`cli` for more details on the available commands and options.
High level API
--------------
You can call subliminal in many different ways depending on how much control you want over the process. For most use
cases, you can stick to the standard API.
Common
^^^^^^
Let's start by importing subliminal:
>>> from __future__ import unicode_literals
>>> import os
>>> from babelfish import *
>>> from subliminal import *
Before going further, there are a few things to know about subliminal.
Video
^^^^^
The :class:`~subliminal.video.Movie` and :class:`~subliminal.video.Episode` classes represent a video,
existing or not. You can create a video by name (or path) with :meth:`Video.fromname <subliminal.video.Video.fromname>`,
use :func:`~subliminal.video.scan_video` on an existing file path to get even more information about the video or
use :func:`~subliminal.video.scan_videos` on an existing directory path to scan a whole directory for videos.
>>> video = Video.fromname('The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.mp4')
>>> video
<Episode ['The Big Bang Theory', 5x18]>
Here video informations were guessed based on the name of the video, you can access some video attributes:
>>> video.video_codec
'h264'
>>> video.release_group
'LOL'
Configuration
^^^^^^^^^^^^^
Before proceeding to listing and downloading subtitles, you need to configure the cache. Subliminal uses a cache to
reduce repeated queries to providers and improve overall performance with no impact on search quality. For the sake
of this example, we're going to use a memory backend.
>>> my_region = region.configure('dogpile.cache.memory')
.. warning::
Choose a cache that fits your application and prefer persistant over volatile backends. The ``file`` backend is
usually a good choice.
See `dogpile.cache's documentation <http://dogpilecache.readthedocs.org>`_ for more details on backends.
Now that we're done with the basics, let's have some *real* fun.
Listing
^^^^^^^
To list subtitles, subliminal provides a :func:`~subliminal.api.list_subtitles` function that will return all found
subtitles:
>>> subtitles = list_subtitles([video], {Language('hun')}, providers=['podnapisi'])
>>> subtitles[video]
[<PodnapisiSubtitle 'ZtAW' [hu]>, <PodnapisiSubtitle 'ONAW' [hu]>]
.. note::
As you noticed, all parameters are iterables but only contain one item which means you can deal with a lot of
videos, languages and providers at the same time. For the sake of this example, we filter providers to use only one,
pass ``providers=None`` (default) to search on all providers.
Scoring
^^^^^^^
It's usual you have multiple candidates for subtitles. To help you chose which one to download, subliminal can compare
them to the video and tell you exactly what matches with :meth:`~subliminal.subtitle.Subtitle.get_matches`:
>>> for s in subtitles[video]:
... sorted(s.get_matches(video))
['episode', 'format', 'hearing_impaired', 'release_group', 'season', 'series', 'video_codec', 'year']
['episode', 'format', 'hearing_impaired', 'season', 'series', 'year']
And then compute a score with those matches with :func:`~subliminal.subtitle.compute_score`:
>>> for s in subtitles[video]:
... {s: compute_score(s.get_matches(video), video)}
{<PodnapisiSubtitle 'ZtAW' [hu]>: 132}
{<PodnapisiSubtitle 'ONAW' [hu]>: 117}
Now you should have a better idea about which one you should choose.
Downloading
^^^^^^^^^^^
We can settle on the first subtitle and download its content using :func:`~subliminal.api.download_subtitles`:
>>> subtitle = subtitles[video][0]
>>> subtitle.content is None
True
>>> download_subtitles([subtitle])
>>> subtitle.content.split(b'\n')[2]
b'Elszaladok a boltba'
If you want a string instead of bytes, you can access decoded content with the
:attr:`~subliminal.subtitle.Subtitle.text` property:
>>> subtitle.text.split('\n')[3]
'néhány apróságért.'
Downloading best subtitles
^^^^^^^^^^^^^^^^^^^^^^^^^^
Downloading best subtitles is what you want to do in almost all cases, as a shortcut for listing, scoring and
downloading you can use :func:`~subliminal.api.download_best_subtitles`:
>>> best_subtitles = download_best_subtitles([video], {Language('hun')}, providers=['podnapisi'])
>>> best_subtitles[video]
[<PodnapisiSubtitle 'ZtAW' [hu]>]
>>> best_subtitle = best_subtitles[video][0]
>>> best_subtitle.content.split(b'\n')[2]
b'Elszaladok a boltba'
We end up with the same subtitle but with one line of code. Neat.
Save
^^^^
We got ourselves a nice subtitle now we can save it on the file system using :func:`~subliminal.api.save_subtitles`:
>>> save_subtitles(video, [best_subtitle])
[<PodnapisiSubtitle 'ZtAW' [hu]>]
>>> os.listdir()
['The.Big.Bang.Theory.S05E18.HDTV.x264-LOL.hu.srt']
+1
View File
@@ -0,0 +1 @@
-e .
+19
View File
@@ -0,0 +1,19 @@
[build_sphinx]
source-dir = docs/
build-dir = docs/_build
all_files = 1
[upload_sphinx]
upload-dir = docs/_build/html
[pytest]
norecursedirs = build dist env .tox .eggs
addopts = --pep8 --flakes --doctest-glob='*.rst'
pep8maxlinelength = 120
pep8ignore =
docs/conf.py ALL
subliminal/__init__.py E402
flakes-ignore =
docs/conf.py ALL
subliminal/__init__.py UnusedImport
doctest_optionflags= NORMALIZE_WHITESPACE IGNORE_EXCEPTION_DETAIL
+96 -38
View File
@@ -1,44 +1,102 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import io
import re
import sys
from setuptools import setup
from subliminal import __version__
from setuptools import setup, find_packages
from setuptools.command.test import test as TestCommand
class PyTest(TestCommand):
user_options = [('pytest-args=', 'a', 'Arguments to pass to py.test')]
def initialize_options(self):
TestCommand.initialize_options(self)
self.pytest_args = []
def finalize_options(self):
TestCommand.finalize_options(self)
self.test_args = []
self.test_suite = True
def run_tests(self):
# import here, cause outside the eggs aren't loaded
import pytest
errno = pytest.main(self.pytest_args)
sys.exit(errno)
# requirements
install_requirements = ['guessit>=0.9.1', 'babelfish>=0.5.2', 'enzyme>=0.4.1', 'beautifulsoup4>=4.2.0',
'requests>=2.0', 'click>=4.0', 'dogpile.cache>=0.5.4', 'stevedore>=1.0.0',
'chardet>=2.3.0', 'pysrt>=1.0.1', 'six>=1.9.0']
test_requirements = ['sympy', 'vcrpy>=1.6.1', 'pytest', 'pytest-pep8', 'pytest-flakes',
'pytest-cov']
if sys.version_info < (3, 3):
test_requirements.append('mock')
dev_requirements = ['tox', 'sphinx', 'wheel']
# package informations
with io.open('subliminal/__init__.py', 'r') as f:
version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]$', f.read(),
re.MULTILINE).group(1)
if not version:
raise RuntimeError('Cannot find version information')
with io.open('README.rst', 'r', encoding='utf-8') as f:
readme = f.read()
with io.open('HISTORY.rst', 'r', encoding='utf-8') as f:
history = f.read()
setup(name='subliminal',
version=__version__,
license="LGPLv3",
description="Subliminal - Subtitles, faster than your thoughts",
classifiers=['Development Status :: 4 - Beta',
'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2.6',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Multimedia :: Video'],
keywords='subliminal video movie subtitle python library',
author="Antoine Bertin",
author_email="diaoulael@gmail.com",
url="https://github.com/Diaoul/subliminal",
packages=["subliminal", "subliminal/plugins"],
py_modules=["subliminal"],
install_requires=["BeautifulSoup>=3.2.0", "guessit>=0.2"])
version=version,
license='MIT',
description='Subtitles, faster than your thoughts',
long_description=readme + '\n\n' + history,
keywords='subtitle subtitles video movie episode tv show',
url='https://github.com/Diaoul/subliminal',
author='Antoine Bertin',
author_email='diaoulael@gmail.com',
packages=find_packages(),
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Multimedia :: Video'
],
entry_points={
'subliminal.providers': [
'addic7ed = subliminal.providers.addic7ed:Addic7edProvider',
'opensubtitles = subliminal.providers.opensubtitles:OpenSubtitlesProvider',
'podnapisi = subliminal.providers.podnapisi:PodnapisiProvider',
'thesubdb = subliminal.providers.thesubdb:TheSubDBProvider',
'tvsubtitles = subliminal.providers.tvsubtitles:TVsubtitlesProvider'
],
'babelfish.language_converters': [
'addic7ed = subliminal.converters.addic7ed:Addic7edConverter',
'tvsubtitles = subliminal.converters.tvsubtitles:TVsubtitlesConverter'
],
'console_scripts': [
'subliminal = subliminal.cli:subliminal'
]
},
install_requires=install_requirements,
tests_require=test_requirements,
extras_require={
'test': test_requirements,
'dev': dev_requirements
},
cmdclass={'test': PyTest})
-71
View File
@@ -1,71 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import threading
import plugins
import logging
import traceback
class PluginWorker(threading.Thread):
"""Threaded plugin worker"""
def __init__(self, taskQueue, resultQueue):
threading.Thread.__init__(self)
self.taskQueue = taskQueue
self.resultQueue = resultQueue
self.logger = logging.getLogger('subliminal.worker')
def run(self):
while True:
task = self.taskQueue.get()
result = None
try:
if not task: # this is a poison pill
break
elif task['task'] == 'list': # the task is a listing
# get the corresponding plugin
plugin = getattr(plugins, task['plugin'])(task['config'])
# split tasks if the plugin can't handle multi queries
splitedTasks = plugin.splitTask(task)
myTask = splitedTasks.pop()
for st in splitedTasks:
self.taskQueue.put(st)
result = plugin.list(myTask['filenames'], myTask['languages'])
elif task['task'] == 'download': # the task is to download
result = None
while task['subtitle']:
subtitle = task['subtitle'].pop(0)
# get the corresponding plugin
plugin = getattr(plugins, subtitle["plugin"])(task['config'])
path = plugin.download(subtitle)
if path:
subtitle["subtitlepath"] = path
result = subtitle
break
else:
self.logger.error(u'Unknown task %s submited to worker %s' % (task['task'], self.name))
except:
self.logger.debug(traceback.print_exc())
self.logger.error(u"Worker couldn't do the job %s, continue anyway" % task['task'])
finally:
self.resultQueue.put(result)
self.taskQueue.task_done()
self.logger.debug(u"Thread %s terminated" % self.name)
+14 -21
View File
@@ -1,25 +1,18 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
__title__ = 'subliminal'
__version__ = '1.0'
__author__ = 'Antoine Bertin'
__license__ = 'MIT'
__copyright__ = 'Copyright 2015, Antoine Bertin'
__version__ = '0.2'
import logging
from .api import (ProviderPool, check_video, provider_manager, download_best_subtitles, download_subtitles,
list_subtitles, save_subtitles)
from .cache import region
from .exceptions import Error, ProviderError
from .providers import Provider
from .subtitle import Subtitle, compute_score
from .video import SUBTITLE_EXTENSIONS, VIDEO_EXTENSIONS, Episode, Movie, Video, scan_video, scan_videos
from subliminal import *
logging.getLogger(__name__).addHandler(logging.NullHandler())
+415
View File
@@ -0,0 +1,415 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from collections import defaultdict
import io
import logging
import operator
import os.path
import socket
from babelfish import Language
import requests
from stevedore import EnabledExtensionManager, ExtensionManager
from .subtitle import compute_score, get_subtitle_path
logger = logging.getLogger(__name__)
provider_manager = ExtensionManager('subliminal.providers')
class ProviderPool(object):
"""A pool of providers with the same API as a single :class:`~subliminal.providers.Provider`.
It has a few extra features:
* Lazy loads providers when needed and supports the :keyword:`with` statement to :meth:`terminate`
the providers on exit.
* Automatically discard providers on failure.
:param providers: name of providers to use, if not all.
:type providers: list
:param dict provider_configs: provider configuration as keyword arguments per provider name to pass when
instanciating the :class:`~subliminal.providers.Provider`.
"""
def __init__(self, providers=None, provider_configs=None):
#: Name of providers to use
self.providers = providers or provider_manager.names()
#: Provider configuration
self.provider_configs = provider_configs or {}
#: Initialized providers
self.initialized_providers = {}
#: Discarded providers
self.discarded_providers = set()
#: Dedicated :data:`provider_manager` as :class:`~stevedore.enabled.EnabledExtensionManager`
self.manager = EnabledExtensionManager(provider_manager.namespace, lambda e: e.name in self.providers)
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
self.terminate()
def __getitem__(self, name):
if name not in self.initialized_providers:
logger.info('Initializing provider %s', name)
provider = self.manager[name].plugin(**self.provider_configs.get(name, {}))
provider.initialize()
self.initialized_providers[name] = provider
return self.initialized_providers[name]
def __delitem__(self, name):
if name not in self.initialized_providers:
raise KeyError(name)
try:
logger.info('Terminating provider %s', name)
self.initialized_providers[name].terminate()
except (requests.Timeout, socket.timeout):
logger.error('Provider %r timed out, improperly terminated', name)
except:
logger.exception('Provider %r terminated unexpectedly', name)
del self.initialized_providers[name]
def __iter__(self):
return iter(self.initialized_providers)
def list_subtitles(self, video, languages):
"""List subtitles.
:param video: video to list subtitles for.
:type video: :class:`~subliminal.video.Video`
:param languages: languages to search for.
:type languages: set of :class:`~babelfish.language.Language`
:return: found subtitles.
:rtype: list of :class:`~subliminal.subtitle.Subtitle`
"""
subtitles = []
for name in self.providers:
# check discarded providers
if name in self.discarded_providers:
logger.debug('Skipping discarded provider %r', name)
continue
# check video validity
if not self.manager[name].plugin.check(video):
logger.info('Skipping provider %r: not a valid video', name)
continue
# check supported languages
provider_languages = self.manager[name].plugin.languages & languages
if not provider_languages:
logger.info('Skipping provider %r: no language to search for', name)
continue
# list subtitles
logger.info('Listing subtitles with provider %r and languages %r', name, provider_languages)
try:
provider_subtitles = self[name].list_subtitles(video, provider_languages)
except (requests.Timeout, socket.timeout):
logger.error('Provider %r timed out, discarding it', name)
self.discarded_providers.add(name)
continue
except:
logger.exception('Unexpected error in provider %r, discarding it', name)
self.discarded_providers.add(name)
continue
subtitles.extend(provider_subtitles)
return subtitles
def download_subtitle(self, subtitle):
"""Download `subtitle`'s :attr:`~subliminal.subtitle.Subtitle.content`.
:param subtitle: subtitle to download.
:type subtitle: :class:`~subliminal.subtitle.Subtitle`
:return: `True` if the subtitle has been successfully downloaded, `False` otherwise.
:rtype: bool
"""
# check discarded providers
if subtitle.provider_name in self.discarded_providers:
logger.warning('Provider %r is discarded', subtitle.provider_name)
return False
logger.info('Downloading subtitle %r', subtitle)
try:
self[subtitle.provider_name].download_subtitle(subtitle)
except (requests.Timeout, socket.timeout):
logger.error('Provider %r timed out, discarding it', subtitle.provider_name)
self.discarded_providers.add(subtitle.provider_name)
return False
except:
logger.exception('Unexpected error in provider %r, discarding it', subtitle.provider_name)
self.discarded_providers.add(subtitle.provider_name)
return False
# check subtitle validity
if not subtitle.is_valid():
logger.error('Invalid subtitle')
return False
return True
def download_best_subtitles(self, subtitles, video, languages, min_score=0, hearing_impaired=False, only_one=False,
scores=None):
"""Download the best matching subtitles.
:param subtitles: the subtitles to use.
:type subtitles: list of :class:`~subliminal.subtitle.Subtitle`
:param video: video to download subtitles for.
:type video: :class:`~subliminal.video.Video`
:param languages: languages to download.
:type languages: set of :class:`~babelfish.language.Language`
:param int min_score: minimum score for a subtitle to be downloaded.
:param bool hearing_impaired: hearing impaired preference.
:param bool only_one: download only one subtitle, not one per language.
:param dict scores: scores to use, if `None`, the :attr:`~subliminal.video.Video.scores` from the video are
used.
:return: downloaded subtitles.
:rtype: list of :class:`~subliminal.subtitle.Subtitle`
"""
# sort subtitles by score
scored_subtitles = sorted([(s, compute_score(s.get_matches(video, hearing_impaired=hearing_impaired), video,
scores=scores))
for s in subtitles], key=operator.itemgetter(1), reverse=True)
# download best subtitles, falling back on the next on error
downloaded_subtitles = []
for subtitle, score in scored_subtitles:
# check score
if score < min_score:
logger.info('Score %d is below min_score (%d)', (score, min_score))
break
# check downloaded languages
if subtitle.language in set(s.language for s in downloaded_subtitles):
logger.debug('Skipping subtitle: %r already downloaded', subtitle.language)
continue
# download
logger.info('Downloading subtitle %r with score %d', subtitle, score)
if self.download_subtitle(subtitle):
downloaded_subtitles.append(subtitle)
# stop when all languages are downloaded
if set(s.language for s in downloaded_subtitles) == languages:
logger.debug('All languages downloaded')
break
# stop if only one subtitle is requested
if only_one:
logger.debug('Only one subtitle downloaded')
break
return downloaded_subtitles
def terminate(self):
"""Terminate all the :attr:`initialized_providers`."""
logger.debug('Terminating initialized providers')
for name in list(self.initialized_providers):
del self[name]
def check_video(video, languages=None, age=None, undefined=False):
"""Perform some checks on the `video`.
All the checks are optional. Return `False` if any of this check fails:
* `languages` already exist in `video`'s :attr:`~subliminal.video.Video.subtitle_languages`.
* `video` is older than `age`.
* `video` has an `undefined` language in :attr:`~subliminal.video.Video.subtitle_languages`.
:param video: video to check.
:type video: :class:`~subliminal.video.Video`
:param languages: desired languages.
:type languages: set of :class:`~babelfish.language.Language`
:param datetime.timedelta age: maximum age of the video.
:param bool undefined: fail on existing undefined language.
:return: `True` if the video passes the checks, `False` otherwise.
:rtype: bool
"""
# language test
if languages and not (languages - video.subtitle_languages):
logger.debug('All languages %r exist', languages)
return False
# age test
if age and video.age > age:
logger.debug('Video is older than %r', age)
return False
# undefined test
if undefined and Language('und') in video.subtitle_languages:
logger.debug('Undefined language found')
return False
return True
def list_subtitles(videos, languages, **kwargs):
"""List subtitles.
The `videos` must pass the `languages` check of :func:`check_video`.
All other parameters are passed onwards to the :class:`ProviderPool` constructor.
:param videos: videos to list subtitles for.
:type videos: set of :class:`~subliminal.video.Video`
:param languages: languages to search for.
:type languages: set of :class:`~babelfish.language.Language`
:return: found subtitles per video.
:rtype: dict of :class:`~subliminal.video.Video` to list of :class:`~subliminal.subtitle.Subtitle`
"""
listed_subtitles = defaultdict(list)
# check videos
checked_videos = []
for video in videos:
if not check_video(video, languages=languages):
logger.info('Skipping video %r', video)
continue
checked_videos.append(video)
# return immediatly if no video passed the checks
if not checked_videos:
return listed_subtitles
# list subtitles
with ProviderPool(**kwargs) as pool:
for video in checked_videos:
logger.info('Listing subtitles for %r', video)
subtitles = pool.list_subtitles(video, languages - video.subtitle_languages)
listed_subtitles[video].extend(subtitles)
logger.info('Found %d subtitle(s)', len(subtitles))
return listed_subtitles
def download_subtitles(subtitles, **kwargs):
"""Download :attr:`~subliminal.subtitle.Subtitle.content` of `subtitles`.
All other parameters are passed onwards to the :class:`ProviderPool` constructor.
:param subtitles: subtitles to download.
:type subtitles: list of :class:`~subliminal.subtitle.Subtitle`
"""
with ProviderPool(**kwargs) as pool:
for subtitle in subtitles:
logger.info('Downloading subtitle %r', subtitle)
pool.download_subtitle(subtitle)
def download_best_subtitles(videos, languages, min_score=0, hearing_impaired=False, only_one=False, scores=None,
**kwargs):
"""List and download the best matching subtitles.
The `videos` must pass the `languages` and `undefined` (`only_one`) checks of :func:`check_video`.
All other parameters are passed onwards to the :class:`ProviderPool` constructor.
:param videos: videos to download subtitles for.
:type videos: set of :class:`~subliminal.video.Video`
:param languages: languages to download.
:type languages: set of :class:`~babelfish.language.Language`
:param int min_score: minimum score for a subtitle to be downloaded.
:param bool hearing_impaired: hearing impaired preference.
:param bool only_one: download only one subtitle, not one per language.
:param dict scores: scores to use, if `None`, the :attr:`~subliminal.video.Video.scores` from the video are used.
:return: downloaded subtitles per video.
:rtype: dict of :class:`~subliminal.video.Video` to list of :class:`~subliminal.subtitle.Subtitle`
"""
downloaded_subtitles = defaultdict(list)
# check videos
checked_videos = []
for video in videos:
if not check_video(video, languages=languages, undefined=only_one):
logger.info('Skipping video %r')
continue
checked_videos.append(video)
# return immediatly if no video passed the checks
if not checked_videos:
return downloaded_subtitles
# download best subtitles
with ProviderPool(**kwargs) as pool:
for video in checked_videos:
logger.info('Downloading best subtitles for %r', video)
subtitles = pool.download_best_subtitles(pool.list_subtitles(video, languages - video.subtitle_languages),
video, languages, min_score=min_score,
hearing_impaired=hearing_impaired, only_one=only_one,
scores=scores)
logger.info('Downloaded %d subtitle(s)', len(subtitles))
downloaded_subtitles[video].extend(subtitles)
return downloaded_subtitles
def save_subtitles(video, subtitles, single=False, directory=None, encoding=None):
"""Save subtitles on filesystem.
Subtitles are saved in the order of the list. If a subtitle with a language has already been saved, other subtitles
with the same language are silently ignored.
The extension used is `.lang.srt` by default or `.srt` is `single` is `True`, with `lang` being the IETF code for
the :attr:`~subliminal.subtitle.Subtitle.language` of the subtitle.
:param video: video of the subtitles.
:type video: :class:`~subliminal.video.Video`
:param subtitles: subtitles to save.
:type subtitles: list of :class:`~subliminal.subtitle.Subtitle`
:param bool single: save a single subtitle, default is to save one subtitle per language.
:param str directory: path to directory where to save the subtitles, default is next to the video.
:param str encoding: encoding in which to save the subtitles, default is to keep original encoding.
:return: the saved subtitles
:rtype: list of :class:`~subliminal.subtitle.Subtitle`
"""
saved_subtitles = []
for subtitle in subtitles:
# check content
if subtitle.content is None:
logger.error('Skipping subtitle %r: no content', subtitle)
continue
# check language
if subtitle.language in set(s.language for s in saved_subtitles):
logger.debug('Skipping subtitle %r: language already saved', subtitle)
continue
# create subtitle path
subtitle_path = get_subtitle_path(video.name, None if single else subtitle.language)
if directory is not None:
subtitle_path = os.path.join(directory, os.path.split(subtitle_path)[1])
# save content as is or in the specified encoding
logger.info('Saving %r to %r', subtitle, subtitle_path)
if encoding is None:
with io.open(subtitle_path, 'wb') as f:
f.write(subtitle.content)
else:
with io.open(subtitle_path, 'w', encoding=encoding) as f:
f.write(subtitle.text)
saved_subtitles.append(subtitle)
# check single
if single:
break
return saved_subtitles
+17
View File
@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
import datetime
from dogpile.cache import make_region
#: Subliminal's cache version
CACHE_VERSION = 1
#: Expiration time for show caching
SHOW_EXPIRATION_TIME = datetime.timedelta(weeks=3).total_seconds()
#: Expiration time for episode caching
EPISODE_EXPIRATION_TIME = datetime.timedelta(days=3).total_seconds()
region = make_region()
+276
View File
@@ -0,0 +1,276 @@
# -*- coding: utf-8 -*-
"""
Subliminal uses `click <http://click.pocoo.org>`_ to provide a powerful :abbr:`CLI (command-line interface)`.
"""
from __future__ import unicode_literals
from collections import defaultdict
from datetime import timedelta
import logging
import os
import re
from babelfish import Error as BabelfishError, Language
import click
from dogpile.cache.backends.file import AbstractFileLock
from dogpile.core import ReadWriteMutex
from subliminal import (Episode, Movie, ProviderPool, Video, __version__, check_video, provider_manager, region,
save_subtitles, scan_video, scan_videos)
from subliminal.subtitle import compute_score
class MutexLock(AbstractFileLock):
""":class:`MutexLock` is a thread-based rw lock based on :class:`dogpile.core.ReadWriteMutex`."""
def __init__(self, filename):
self.mutex = ReadWriteMutex()
def acquire_read_lock(self, wait):
ret = self.mutex.acquire_read_lock(wait)
return wait or ret
def acquire_write_lock(self, wait):
ret = self.mutex.acquire_write_lock(wait)
return wait or ret
def release_read_lock(self):
return self.mutex.release_read_lock()
def release_write_lock(self):
return self.mutex.release_write_lock()
class LanguageParamType(click.ParamType):
""":class:`~click.ParamType` for languages that returns a :class:`~babelfish.language.Language`"""
name = 'language'
def convert(self, value, param, ctx):
try:
return Language.fromietf(value)
except BabelfishError:
self.fail('%s is not a valid language' % value)
LANGUAGE = LanguageParamType()
class AgeParamType(click.ParamType):
""":class:`~click.ParamType` for age strings that returns a :class:`~datetime.timedelta`
An age string is in the form `number + identifier` with possible identifiers:
* ``w`` for weeks
* ``d`` for days
* ``h`` for hours
The form can be specified multiple times but only with that idenfier ordering. For example:
* ``1w2d4h`` for 1 week, 2 days and 4 hours
* ``2w`` for 2 weeks
* ``3w6h`` for 3 weeks and 6 hours
"""
name = 'age'
def convert(self, value, param, ctx):
match = re.match(r'^(?:(?P<weeks>\d+?)w)?(?:(?P<days>\d+?)d)?(?:(?P<hours>\d+?)h)?$', value)
if not match:
self.fail('%s is not a valid age' % value)
return timedelta(**{k: int(v) for k, v in match.groupdict(0).items()})
AGE = AgeParamType()
PROVIDER = click.Choice(sorted(provider_manager.names()))
subliminal_cache = 'subliminal.dbm'
@click.group(context_settings={'max_content_width': 100}, epilog='Suggestions and bug reports are greatly appreciated: '
'https://github.com/Diaoul/subliminal/')
@click.option('--addic7ed', type=click.STRING, nargs=2, metavar='USERNAME PASSWORD', help='Addic7ed configuration.')
@click.option('--cache-dir', type=click.Path(writable=True, resolve_path=True, file_okay=False),
default=click.get_app_dir('subliminal'), show_default=True, expose_value=True,
help='Path to the cache directory.')
@click.option('--debug', is_flag=True, help='Print useful information for debugging subliminal and for reporting bugs.')
@click.version_option(__version__)
@click.pass_context
def subliminal(ctx, addic7ed, cache_dir, debug):
"""Subtitles, faster than your thoughts."""
# create cache directory
try:
os.makedirs(cache_dir)
except OSError:
if not os.path.isdir(cache_dir):
raise
# configure cache
region.configure('dogpile.cache.dbm', expiration_time=timedelta(days=30),
arguments={'filename': os.path.join(cache_dir, subliminal_cache), 'lock_factory': MutexLock})
# configure logging
if debug:
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter(logging.BASIC_FORMAT))
logging.getLogger('subliminal').addHandler(handler)
logging.getLogger('subliminal').setLevel(logging.DEBUG)
# provider configs
ctx.obj = {'provider_configs': {}}
if addic7ed:
ctx.obj['provider_configs']['addic7ed'] = {'username': addic7ed[0], 'password': addic7ed[1]}
@subliminal.command()
@click.option('--clear-subliminal', is_flag=True, help='Clear subliminal\'s cache. Use this ONLY if your cache is '
'corrupted or if you experience issues.')
@click.pass_context
def cache(ctx, clear_subliminal):
"""Cache management."""
if clear_subliminal:
os.remove(os.path.join(ctx.parent.params['cache_dir'], subliminal_cache))
click.echo('Subliminal\'s cache cleared.')
else:
click.echo('Nothing done.')
@subliminal.command()
@click.option('-l', '--language', type=LANGUAGE, required=True, multiple=True, help='Language as IETF code, '
'e.g. en, pt-BR (can be used multiple times).')
@click.option('-p', '--provider', type=PROVIDER, multiple=True, help='Provider to use (can be used multiple times).')
@click.option('-a', '--age', type=AGE, help='Filter videos newer than AGE, e.g. 12h, 1w2d.')
@click.option('-d', '--directory', type=click.STRING, metavar='DIR', help='Directory where to save subtitles, '
'default is next to the video file.')
@click.option('-e', '--encoding', type=click.STRING, metavar='ENC', help='Subtitle file encoding, default is to '
'preserve original encoding.')
@click.option('-s', '--single', is_flag=True, default=False, help='Save subtitle without language code in the file '
'name, i.e. use .srt extension.')
@click.option('-f', '--force', is_flag=True, default=False, help='Force download even if a subtitle already exist.')
@click.option('-hi', '--hearing-impaired', is_flag=True, default=False, help='Prefer hearing impaired subtitles.')
@click.option('-m', '--min-score', type=click.IntRange(0, 100), default=0, help='Minimum score for a subtitle '
'to be downloaded (0 to 100).')
@click.option('-v', '--verbose', count=True, help='Increase verbosity.')
@click.argument('path', type=click.Path(), required=True, nargs=-1)
@click.pass_obj
def download(obj, provider, language, age, directory, encoding, single, force, hearing_impaired, min_score, verbose,
path):
"""Download best subtitles.
PATH can be an directory containing videos, a video file path or a video file name. It can be used multiple times.
If an existing subtitle is detected (external or embedded) in the correct language, the download is skipped for
the associated video.
"""
# process parameters
language = set(language)
# scan videos
videos = []
ignored_videos = []
with click.progressbar(path, label='Collecting videos',
item_show_func=lambda p: str(p) if p is not None else '') as bar:
for p in bar:
# non-existing
if not os.path.exists(p):
videos.append(Video.fromname(p))
continue
# directories
if os.path.isdir(p):
for video in scan_videos(p, subtitles=not force, embedded_subtitles=not force):
if check_video(video, languages=language, age=age, undefined=single):
videos.append(video)
else:
ignored_videos.append(video)
continue
# other inputs
video = scan_video(p, subtitles=not force, embedded_subtitles=not force)
if check_video(video, languages=language, age=age, undefined=single):
videos.append(video)
else:
ignored_videos.append(video)
# output ignored videos
if verbose > 1:
for video in ignored_videos:
click.secho('%s ignored - subtitles: %s / age: %d day%s ' % (
os.path.split(video.name)[1],
', '.join(str(s) for s in video.subtitle_languages) or 'none',
video.age.days,
's' if video.age.days > 1 else ''
), fg='yellow')
# report collected videos
click.echo('%s video%s collected / %s video%s ignored' % (click.style(str(len(videos)), bold=True),
's' if len(videos) > 1 else '',
click.style(str(len(ignored_videos)), bold=True),
's' if len(ignored_videos) > 1 else ''))
# exit if no video collected
if not videos:
return
# download best subtitles
downloaded_subtitles = defaultdict(list)
with ProviderPool(providers=provider, provider_configs=obj['provider_configs']) as pool:
with click.progressbar(videos, label='Downloading subtitles',
item_show_func=lambda v: os.path.split(v.name)[1] if v is not None else '') as bar:
for v in bar:
subtitles = pool.download_best_subtitles(pool.list_subtitles(v, language - v.subtitle_languages),
v, language, min_score=v.scores['hash'] * min_score / 100,
hearing_impaired=hearing_impaired, only_one=single)
downloaded_subtitles[v] = subtitles
# save subtitles
total_subtitles = 0
for v, subtitles in downloaded_subtitles.items():
saved_subtitles = save_subtitles(v, subtitles, single=single, directory=directory, encoding=encoding)
total_subtitles += len(saved_subtitles)
if verbose > 0:
click.echo('%s subtitle%s downloaded for %s' % (click.style(str(len(saved_subtitles)), bold=True),
's' if len(saved_subtitles) > 1 else '',
os.path.split(v.name)[1]))
if verbose > 1:
for s in saved_subtitles:
matches = s.get_matches(v, hearing_impaired=hearing_impaired)
score = compute_score(matches, v)
# score color
score_color = None
if isinstance(v, Movie):
if score < v.scores['title']:
score_color = 'red'
elif score < v.scores['title'] + v.scores['year'] + v.scores['release_group']:
score_color = 'yellow'
else:
score_color = 'green'
elif isinstance(v, Episode):
if score < v.scores['series'] + v.scores['season'] + v.scores['episode']:
score_color = 'red'
elif score < (v.scores['series'] + v.scores['season'] + v.scores['episode'] +
v.scores['release_group']):
score_color = 'yellow'
else:
score_color = 'green'
# scale score from 0 to 100 taking out preferences
scaled_score = score
if s.hearing_impaired == hearing_impaired:
scaled_score -= v.scores['hearing_impaired']
scaled_score *= 100 / v.scores['hash']
# echo some nice colored output
click.echo(' - [{score}] - {language} subtitle from {provider_name} (match on {matches})'.format(
score=click.style('{:5.1f}'.format(scaled_score), fg=score_color, bold=score >= v.scores['hash']),
language=s.language.name if s.language.country is None else '%s (%s)' % (s.language.name,
s.language.country.name),
provider_name=s.provider_name,
matches=', '.join(sorted(matches, key=v.scores.get, reverse=True))
))
if verbose == 0:
click.echo('Downloaded %s subtitle%s' % (click.style(str(total_subtitles), bold=True),
's' if total_subtitles > 1 else ''))
View File
+33
View File
@@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from babelfish import LanguageReverseConverter, language_converters
class Addic7edConverter(LanguageReverseConverter):
def __init__(self):
self.name_converter = language_converters['name']
self.from_addic7ed = {'Català': ('cat',), 'Chinese (Simplified)': ('zho',), 'Chinese (Traditional)': ('zho',),
'Euskera': ('eus',), 'Galego': ('glg',), 'Greek': ('ell',), 'Malay': ('msa',),
'Portuguese (Brazilian)': ('por', 'BR'), 'Serbian (Cyrillic)': ('srp', None, 'Cyrl'),
'Serbian (Latin)': ('srp',), 'Spanish (Latin America)': ('spa',),
'Spanish (Spain)': ('spa',)}
self.to_addic7ed = {('cat',): 'Català', ('zho',): 'Chinese (Simplified)', ('eus',): 'Euskera',
('glg',): 'Galego', ('ell',): 'Greek', ('msa',): 'Malay',
('por', 'BR'): 'Portuguese (Brazilian)', ('srp', None, 'Cyrl'): 'Serbian (Cyrillic)'}
self.codes = self.name_converter.codes | set(self.from_addic7ed.keys())
def convert(self, alpha3, country=None, script=None):
if (alpha3, country, script) in self.to_addic7ed:
return self.to_addic7ed[(alpha3, country, script)]
if (alpha3, country) in self.to_addic7ed:
return self.to_addic7ed[(alpha3, country)]
if (alpha3,) in self.to_addic7ed:
return self.to_addic7ed[(alpha3,)]
return self.name_converter.convert(alpha3, country, script)
def reverse(self, addic7ed):
if addic7ed in self.from_addic7ed:
return self.from_addic7ed[addic7ed]
return self.name_converter.reverse(addic7ed)
+26
View File
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from babelfish import LanguageReverseConverter, language_converters
class TVsubtitlesConverter(LanguageReverseConverter):
def __init__(self):
self.alpha2_converter = language_converters['alpha2']
self.from_tvsubtitles = {'br': ('por', 'BR'), 'ua': ('ukr',), 'gr': ('ell',), 'cn': ('zho',), 'jp': ('jpn',),
'cz': ('ces',)}
self.to_tvsubtitles = {v: k for k, v in self.from_tvsubtitles.items()}
self.codes = self.alpha2_converter.codes | set(self.from_tvsubtitles.keys())
def convert(self, alpha3, country=None, script=None):
if (alpha3, country) in self.to_tvsubtitles:
return self.to_tvsubtitles[(alpha3, country)]
if (alpha3,) in self.to_tvsubtitles:
return self.to_tvsubtitles[(alpha3,)]
return self.alpha2_converter.convert(alpha3, country, script)
def reverse(self, tvsubtitles):
if tvsubtitles in self.from_tvsubtitles:
return self.from_tvsubtitles[tvsubtitles]
return self.alpha2_converter.reverse(tvsubtitles)
-66
View File
@@ -1,66 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2011 Nic Wolfe <nic@wolfeden.ca>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import os
import subliminal
# This module tries to deal with the apparently random behavior of python when dealing with unicode <-> utf-8
# encodings. It tries to just use unicode, but if that fails then it tries forcing it to utf-8. Any functions
# which return something should always return unicode.
def fixStupidEncodings(x, silent=False):
if type(x) == str:
try:
return x.decode(subliminal.SYS_ENCODING)
except UnicodeDecodeError:
subliminal.logger.error(u"Unable to decode value: " + repr(x))
return None
elif type(x) == unicode:
return x
else:
subliminal.logger.log(u"Unknown value passed in, ignoring it: " + str(type(x)) + " (" + repr(x) + ":" + repr(type(x)) + ")", logging.DEBUG if silent else logging.ERROR)
return None
return None
def fixListEncodings(x):
if type(x) != list:
return x
else:
return filter(lambda x: x != None, map(fixStupidEncodings, x))
def ek(func, *args):
result = None
if os.name == 'nt':
result = func(*args)
else:
result = func(*[x.encode(subliminal.SYS_ENCODING) if type(x) in (str, unicode) else x for x in args])
if type(result) == list:
return fixListEncodings(result)
elif type(result) == str:
return fixStupidEncodings(result)
else:
return result
+27
View File
@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
class Error(Exception):
"""Base class for exceptions in subliminal."""
pass
class ProviderError(Error):
"""Exception raised by providers."""
pass
class ConfigurationError(ProviderError):
"""Exception raised by providers when badly configured."""
pass
class AuthenticationError(ProviderError):
"""Exception raised by providers when authentication failed."""
pass
class DownloadLimitExceeded(ProviderError):
"""Exception raised by providers when download limit is exceeded."""
pass
-158
View File
@@ -1,158 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from BeautifulSoup import BeautifulSoup
import guessit
import PluginBase
import zipfile
import os
import urllib2
import urllib
import traceback
import httplib
import re
import socket
class Addic7ed(PluginBase.PluginBase):
site_url = 'http://www.addic7ed.com'
site_name = 'Addic7ed'
server_url = 'http://www.addic7ed.com'
multi_languages_queries = True
multi_filename_queries = False
api_based = False
_plugin_languages = {u"English": "en",
u"English (US)": "en",
u"English (UK)": "en",
u"Italian": "it",
u"Portuguese": "pt",
u"Portuguese (Brazilian)": "pt-br",
u"Romanian": "ro",
u"Español (Latinoamérica)": "es",
u"Español (España)": "es",
u"Spanish (Latin America)": "es",
u"Español": "es",
u"Spanish": "es",
u"Spanish (Spain)": "es",
u"French": "fr",
u"Greek": "el",
u"Arabic": "ar",
u"German": "de",
u"Croatian": "hr",
u"Indonesian": "id",
u"Hebrew": "he",
u"Russian": "ru",
u"Turkish": "tr",
u"Swedish": "se",
u"Czech": "cs",
u"Dutch": "nl",
u"Hungarian": "hu",
u"Norwegian": "no",
u"Polish": "pl",
u"Persian": "fa"}
def __init__(self, config_dict=None):
super(Addic7ed, self).__init__(self._plugin_languages, config_dict, isRevert=True)
#http://www.addic7ed.com/serie/Smallville/9/11/Absolute_Justice
self.release_pattern = re.compile(" \nVersion (.+), ([0-9]+).([0-9])+ MBs")
def list(self, filenames, languages):
''' Main method to call when you want to list subtitles '''
# as self.multi_filename_queries is false, we won't have multiple filenames in the list so pick the only one
# once multi-filename queries are implemented, set multi_filename_queries to true and manage a list of multiple filenames here
if not self.checkLanguages(languages):
return []
filepath = filenames[0]
guess = guessit.guess_file_info(filepath, 'autodetect')
if guess['type'] != 'episode':
return []
# add multiple things to the release group set
release_group = set()
if 'releaseGroup' in guess:
release_group.add(guess['releaseGroup'])
else:
if 'title' in guess:
release_group.add(guess['title'])
if 'screenSize' in guess:
release_group.add(guess['screenSize'])
if len(release_group) == 0:
return []
self.release_group = release_group # used to sort results
return self.query(guess['series'], guess['season'], guess['episodeNumber'], release_group, filepath, languages)
def query(self, name, season, episode, release_group, filepath, languages=None):
''' Make a query and returns info about found subtitles '''
searchname = name.lower().replace(" ", "_")
searchurl = "%s/serie/%s/%s/%s/%s" % (self.server_url, searchname, season, episode, searchname)
self.logger.debug(u"Searching in %s" % searchurl)
try:
req = urllib2.Request(searchurl, headers={'User-Agent': self.user_agent})
page = urllib2.urlopen(req, timeout=self.timeout)
except urllib2.HTTPError as inst:
self.logger.info(u"Error: %s - %s" % (searchurl, inst))
return []
except urllib2.URLError as inst:
self.logger.info(u"TimeOut: %s" % inst)
return []
soup = BeautifulSoup(page.read())
sublinks = []
for html_sub in soup("td", {"class": "NewsTitle", "colspan": "3"}):
if not self.release_pattern.match(str(html_sub.contents[1])): # On not needed soup td result
continue
sub_teams = self.listTeams([self.release_pattern.match(str(html_sub.contents[1])).groups()[0]], [".", "_", " "])
if not release_group.intersection(sub_teams): # On wrong team
continue
html_language = html_sub.findNext("td", {"class": "language"})
sub_language = self.getRevertLanguage(html_language.contents[0].strip().replace('&nbsp;', ''))
if languages and not sub_language in languages: # On wrong language
continue
html_status = html_language.findNextSibling('td')
sub_status = html_status.find('b').string.strip()
if not sub_status == 'Completed': # On not completed subtitles
continue
sub_link = self.server_url + html_status.findNextSibling('td', {'colspan': '3'}).find('a')['href']
self.logger.debug(u'Found a match with teams: %s' % sub_teams)
result = {}
result["release"] = "%s.S%.2dE%.2d.%s" % (name.replace(" ", "."), int(season), int(episode), '.'.join(sub_teams))
result["lang"] = sub_language
result["link"] = sub_link
result["page"] = searchurl
result["filename"] = filepath
result["plugin"] = self.getClassName()
result["teams"] = sub_teams # used to sort
sublinks.append(result)
sublinks.sort(self._cmpTeams)
return sublinks
def download(self, subtitle):
'''pass the URL of the sub and the file it matches, will unzip it
and return the path to the created file'''
suburl = subtitle["link"]
videofilename = subtitle["filename"]
srtbasefilename = videofilename.rsplit(".", 1)[0]
srtfilename = srtbasefilename + self.getExtension(subtitle)
self.downloadFile(suburl, srtfilename)
return srtfilename
def _cmpTeams(self, x, y):
''' Sort based on teams matching '''
return -cmp(len(x['teams'].intersection(self.release_group)), len(y['teams'].intersection(self.release_group)))
-170
View File
@@ -1,170 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from xml.dom import minidom
import guessit
import PluginBase
import os
import pickle
import traceback
import urllib
import urllib2
from subliminal import encodingKludge as ek
class BierDopje(PluginBase.PluginBase):
site_url = 'http://bierdopje.com'
site_name = 'BierDopje'
server_url = 'http://api.bierdopje.com/A2B638AC5D804C2E/'
multi_languages_queries = True
multi_filename_queries = False
api_based = True
exceptions = {'the office': 10358,
'the office us': 10358,
'greys anatomy': 3733,
'sanctuary us': 7904,
'human target 2010': 12986,
'csi miami': 2187,
'castle 2009': 12708,
'chase 2010': 14228,
'the defenders 2010': 14225,
'hawaii five-0 2010': 14211}
_plugin_languages = {'en': 'en', 'nl': 'nl'}
def __init__(self, config_dict):
super(BierDopje, self).__init__(self._plugin_languages, config_dict)
#http://api.bierdopje.com/23459DC262C0A742/GetShowByName/30+Rock
#http://api.bierdopje.com/23459DC262C0A742/GetAllSubsFor/94/5/1/en (30 rock, season 5, episode 1)
if not config_dict or not config_dict['cache_dir']:
raise Exception('Cache directory is mandatory for this plugin')
self.showid_cache = ek.ek(os.path.join, config_dict['cache_dir'], "bierdopje_showid.cache")
with self.lock:
if not ek.ek(os.path.exists, self.showid_cache):
if not ek.ek(os.path.exists, ek.ek(os.path.dirname, self.showid_cache)):
raise Exception("Cache directory doesn't exists")
f = open(self.showid_cache, 'w')
pickle.dump({}, f)
f.close()
f = open(self.showid_cache, 'r')
self.showids = pickle.load(f)
self.logger.debug(u"Reading showids from cache: %s" % self.showids)
f.close()
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles"""
# as self.multi_filename_queries is false, we won't have multiple filenames in the list so pick the only one
# once multi-filename queries are implemented, set multi_filename_queries to true and manage a list of multiple filenames here
if not self.checkLanguages(languages):
return []
filepath = filenames[0]
guess = guessit.guess_file_info(filepath, 'autodetect')
if guess['type'] != 'episode':
return []
# add multiple things to the release group set
release_group = set()
if 'releaseGroup' in guess:
release_group.add(guess['releaseGroup'].lower())
else:
if 'title' in guess:
release_group.add(guess['title'].lower())
if 'screenSize' in guess:
release_group.add(guess['screenSize'].lower())
if len(release_group) == 0:
return []
self.release_group = release_group # used to sort results
return self.query(guess['series'], guess['season'], guess['episodeNumber'], release_group, filepath, languages)
def download(self, subtitle):
"""Main method to call when you want to download a subtitle"""
subpath = subtitle["filename"].rsplit(".", 1)[0] + self.getExtension(subtitle)
self.downloadFile(subtitle["link"], subpath)
return subpath
def query(self, name, season, episode, release_group, filepath, languages=None):
"""Makes a query and returns info (link, lang) about found subtitles"""
if languages:
available_languages = list(set(languages).intersection((self._plugin_languages.values())))
else:
available_languages = self._plugin_languages.values()
sublinks = []
# get the show id
show_name = name.lower()
if show_name in self.exceptions: # get it from exceptions
show_id = self.exceptions[show_name]
elif show_name in self.showids: # get it from cache
show_id = self.showids[show_name]
else: # retrieve it
show_id_url = "%sGetShowByName/%s" % (self.server_url, urllib.quote(show_name))
self.logger.debug(u"Retrieving show id from web at %s" % show_id_url)
page = urllib2.urlopen(show_id_url)
dom = minidom.parse(page)
if not dom or len(dom.getElementsByTagName('showid')) == 0: # no proper result
page.close()
return []
show_id = dom.getElementsByTagName('showid')[0].firstChild.data
self.showids[show_name] = show_id
with self.lock:
f = open(self.showid_cache, 'w')
self.logger.debug(u"Writing showid %s to cache file" % show_id)
pickle.dump(self.showids, f)
f.close()
page.close()
# get the subs for the show id we have
for language in available_languages:
subs_url = "%sGetAllSubsFor/%s/%s/%s/%s" % (self.server_url, show_id, season, episode, language)
self.logger.debug(u"Getting subtitles at %s" % subs_url)
page = urllib2.urlopen(subs_url)
dom = minidom.parse(page)
page.close()
for sub in dom.getElementsByTagName('result'):
sub_release = sub.getElementsByTagName('filename')[0].firstChild.data
if sub_release.endswith(".srt"):
sub_release = sub_release[:-4]
sub_release = sub_release + '.avi' # put a random extension for guessit not to fail guessing that file
# guess information from subtitle
sub_guess = guessit.guess_file_info(sub_release, 'episode')
sub_release_group = set()
if 'releaseGroup' in sub_guess:
sub_release_group.add(sub_guess['releaseGroup'].lower())
else:
if 'title' in sub_guess:
sub_release_group.add(sub_guess['title'].lower())
if 'screenSize' in sub_guess:
sub_release_group.add(sub_guess['screenSize'].lower())
sub_link = sub.getElementsByTagName('downloadlink')[0].firstChild.data
result = {}
result["release"] = sub_release
result["link"] = sub_link
result["page"] = sub_link
result["lang"] = language
result["filename"] = filepath
result["plugin"] = self.getClassName()
result["releaseGroup"] = sub_release_group
sublinks.append(result)
sublinks.sort(self._cmpReleaseGroup)
return sublinks
def _cmpReleaseGroup(self, x, y):
"""Sort based on teams matching"""
return -cmp(len(x['releaseGroup'].intersection(self.release_group)), len(y['releaseGroup'].intersection(self.release_group)))
-205
View File
@@ -1,205 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import PluginBase
import gzip
import os
import socket
import xmlrpclib
import guessit
from subliminal import encodingKludge as ek
class OpenSubtitles(PluginBase.PluginBase):
site_url = 'http://www.opensubtitles.org'
site_name = 'OpenSubtitles'
server_url = 'http://api.opensubtitles.org/xml-rpc'
user_agent = 'Subliminal v0.2'
multi_languages_queries = True
multi_filename_queries = False
api_based = True
_plugin_languages = {"en": "eng",
"fr": "fre",
"hu": "hun",
"cs": "cze",
"pl": "pol",
"sk": "slo",
"pt": "por",
"pt-br": "pob",
"es": "spa",
"el": "ell",
"ar": "ara",
"sq": "alb",
"hy": "arm",
"ay": "ass",
"bs": "bos",
"bg": "bul",
"ca": "cat",
"zh": "chi",
"hr": "hrv",
"da": "dan",
"nl": "dut",
"eo": "epo",
"et": "est",
"fi": "fin",
"gl": "glg",
"ka": "geo",
"de": "ger",
"he": "heb",
"hi": "hin",
"is": "ice",
"id": "ind",
"it": "ita",
"ja": "jpn",
"kk": "kaz",
"ko": "kor",
"lv": "lav",
"lt": "lit",
"lb": "ltz",
"mk": "mac",
"ms": "may",
"no": "nor",
"oc": "oci",
"fa": "per",
"ro": "rum",
"ru": "rus",
"sr": "scc",
"sl": "slv",
"sv": "swe",
"th": "tha",
"tr": "tur",
"uk": "ukr",
"vi": "vie"}
def __init__(self, config_dict=None):
super(OpenSubtitles, self).__init__(self._plugin_languages, config_dict)
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles """
# as self.multi_filename_queries is false, we won't have multiple filenames in the list so pick the only one
# once multi-filename queries are implemented, set multi_filename_queries to true and manage a list of multiple filenames here
filepath = filenames[0]
if ek.ek(os.path.isfile, filepath):
filehash = self.hashFile(filepath)
size = ek.ek(os.path.getsize, filepath)
return self.query(moviehash=filehash, languages=languages, bytesize=size, filepath=filepath)
else:
return self.query(languages=languages, filepath=filepath)
def download(self, subtitle):
"""Main method to call when you want to download a subtitle """
subtitleFilename = subtitle["filename"].rsplit(".", 1)[0] + self.getExtension(subtitle)
self.downloadFile(subtitle["link"], subtitleFilename + ".gz")
f = ek.ek(gzip.open, subtitleFilename + ".gz")
dump = ek.ek(open, subtitleFilename, "wb")
dump.write(f.read())
dump.close()
f.close()
ek.ek(os.remove, subtitleFilename + ".gz")
return subtitleFilename
def query(self, filepath, imdbID=None, moviehash=None, bytesize=None, languages=None):
"""Makes a query on OpenSubtitles and returns info about found subtitles.
Note: if using moviehash, bytesize is required. """
# prepare the search
search = {}
if moviehash:
search['moviehash'] = moviehash
if imdbID:
search['imdbid'] = imdbID
if bytesize:
search['moviebytesize'] = str(bytesize)
if languages:
search['sublanguageid'] = ",".join([self.getLanguage(l) for l in languages])
if not imdbID and not moviehash and not bytesize:
self.logger.debug(u"No search term, we'll use the filename")
guess = guessit.guess_file_info(filepath, 'autodetect')
if guess['type'] == 'episode':
search['query'] = guess['series']
elif guess['type'] == 'movie':
search['query'] = guess['title']
else: # we don't know what we have
return[]
# login
self.server = xmlrpclib.Server(self.server_url)
socket.setdefaulttimeout(self.timeout)
try:
log_result = self.server.LogIn("", "", "eng", self.user_agent)
if not log_result["status"] or log_result["status"] != '200 OK' or not log_result["token"]:
raise Exception('OpenSubtitles login failed')
token = log_result["token"]
except Exception:
self.logger.error(u"Cannot login")
token = None
socket.setdefaulttimeout(None)
return []
# search
sublinks = self.get_results(token, search, filepath)
# logout
try:
self.server.LogOut(token)
except:
self.logger.error(u"Cannot logout")
socket.setdefaulttimeout(None)
return sublinks
def get_results(self, token, search, filepath):
self.logger.debug(u"Query uses token %s and search parameters %s" % (token, search))
try:
results = self.server.SearchSubtitles(token, [search])
except Exception, e:
self.logger.debug(u"Cannot query the server")
return []
if not results['data']: # no subtitle found
return []
sublinks = []
self.filename = self.getFileName(filepath)
for r in sorted(results['data'], self._cmpSubFileName):
result = {}
result["release"] = r['SubFileName']
result["link"] = r['SubDownloadLink']
result["page"] = r['SubDownloadLink']
result["lang"] = self.getRevertLanguage(r['SubLanguageID'])
result["filename"] = filepath
result["plugin"] = self.getClassName()
if 'query' in search and not r["MovieReleaseName"].replace('.', ' ').startswith(search['query']): # query mode search, filter results
self.logger.debug(u"Skipping %s it does not start with %s" % (r["MovieReleaseName"].replace('.', ' '), search['query']))
continue
sublinks.append(result)
return sublinks
def _cmpSubFileName(self, x, y):
"""Sort based on the SubFileName name tag """
#TODO add also support for subtitles release
xmatch = x['SubFileName'] and (x['SubFileName'].find(self.filename) > -1 or self.filename.find(x['SubFileName']) > -1)
ymatch = y['SubFileName'] and (y['SubFileName'].find(self.filename) > -1 or self.filename.find(y['SubFileName']) > -1)
if xmatch and ymatch:
if x['SubFileName'] == self.filename or x['SubFileName'].startswith(self.filename):
return - 1
return 0
if not xmatch and not ymatch:
return 0
if xmatch and not ymatch:
return - 1
if not xmatch and ymatch:
return 1
return 0
-183
View File
@@ -1,183 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import abc
import logging
import os
import re
import sys
import urllib2
import struct
import threading
from subliminal import encodingKludge as ek
class PluginBase(object):
__metaclass__ = abc.ABCMeta
multi_languages_queries = False
multi_filename_queries = False
api_based = True
timeout = 3
user_agent = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3)'
lock = threading.Lock()
@abc.abstractmethod
def __init__(self, pluginLanguages, config_dict=None, isRevert=False):
self.config_dict = config_dict
if not pluginLanguages:
self.pluginLanguages = None
self.revertPluginLanguages = None
elif not isRevert:
self.pluginLanguages = pluginLanguages
self.revertPluginLanguages = dict((v, k) for k, v in self.pluginLanguages.iteritems())
else:
self.revertPluginLanguages = pluginLanguages
self.pluginLanguages = dict((v, k) for k, v in self.revertPluginLanguages.iteritems())
self.logger = logging.getLogger('subliminal.%s' % self.getClassName())
@staticmethod
def getFileName(filepath):
filename = filepath
if ek.ek(os.path.isfile, filename):
filename = ek.ek(os.path.basename, filename)
if filename.endswith(('.avi', '.wmv', '.mov', '.mp4', '.mpeg', '.mpg', '.mkv')):
filename = filename.rsplit('.', 1)[0]
return filename
def hashFile(self, filename):
"""Hash a file like OpenSubtitles"""
longlongformat = 'q' # long long
bytesize = struct.calcsize(longlongformat)
f = ek.ek(open, filename, "rb")
filesize = ek.ek(os.path.getsize, filename)
hash = filesize
if filesize < 65536 * 2:
self.logger.error(u"File %s is too small (SizeError < 2**16)" % filename)
return []
for x in range(65536 / bytesize):
buffer = f.read(bytesize)
(l_value,) = struct.unpack(longlongformat, buffer)
hash += l_value
hash = hash & 0xFFFFFFFFFFFFFFFF # to remain as 64bit number
f.seek(max(0, filesize - 65536), 0)
for x in range(65536 / bytesize):
buffer = f.read(bytesize)
(l_value,) = struct.unpack(longlongformat, buffer)
hash += l_value
hash = hash & 0xFFFFFFFFFFFFFFFF
f.close()
returnedhash = "%016x" % hash
return returnedhash
def downloadFile(self, url, filename, data=None):
"""Downloads the given url to the given filename"""
try:
self.logger.info(u"Downloading %s" % url)
req = urllib2.Request(url, headers={'Referer': url, 'User-Agent': self.user_agent})
f = urllib2.urlopen(req, data=data)
dump = ek.ek(open, filename, "wb")
dump.write(f.read())
dump.close()
f.close()
self.logger.debug(u"Download finished for file %s. Size: %s" % (filename, ek.ek(os.path.getsize, filename)))
except urllib2.HTTPError, e:
self.logger.error(u"HTTP Error:", e.code, url)
except urllib2.URLError, e:
self.logger.error(u"URL Error:", e.reason, url)
@abc.abstractmethod
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles"""
@abc.abstractmethod
def download(self, subtitle):
"""Main method to call when you want to download a subtitle"""
def getRevertLanguage(self, language):
"""Returns the short (two-character) representation from the long language name"""
try:
return self.revertPluginLanguages[language]
except KeyError, e:
self.logger.warn(u"Ooops, you found a missing language in the configuration file of %s: %s. Send a bug report to have it added." % (self.getClassName(), language))
def checkLanguages(self, languages):
if languages and not set(languages).intersection((self._plugin_languages.values())):
self.logger.debug(u'None of requested languages %s are available' % languages)
return False
return True
def getLanguage(self, language):
"""Returns the long naming of the language from a two character code"""
try:
return self.pluginLanguages[language]
except KeyError, e:
self.logger.warn(u"Ooops, you found a missing language in the configuration file of %s: %s. Send a bug report to have it added." % (self.getClassName(), language))
def getExtension(self, subtitle):
if self.config_dict and self.config_dict['multi']:
return ".%s.srt" % subtitle['lang']
return ".srt"
def getClassName(self):
return self.__class__.__name__
def splitTask(self, task):
"""Determines if the plugin can handle multi-thing queries and output splited tasks for list task only"""
if task['task'] != 'list':
return [task]
tasks = [task]
if not self.multi_filename_queries:
tasks = self._splitOnField(tasks, 'filenames')
if not self.multi_languages_queries:
tasks = self._splitOnField(tasks, 'languages')
return tasks
@staticmethod
def _splitOnField(elements, field):
"""
Split a list of dict in a bigger one if the element field in the dict has multiple elements too
i.e. [{'a': 1, 'b': [2,3]}, {'a': 7, 'b': [4]}] => [{'a': 1, 'b': [2]}, {'a': 1, 'b': [3]}, {'a': 7, 'b': [4]}]
with field = 'b'
"""
results = []
for e in elements:
for v in e[field]:
newElement = {}
for (key, value) in e.items():
if key != field:
newElement[key] = value
else:
newElement[key] = [v]
results.append(newElement)
return results
def listTeams(self, sub_teams, separators):
"""List teams of a given string using separators"""
for sep in separators:
sub_teams = self.splitTeam(sub_teams, sep)
return set(sub_teams)
def splitTeam(self, sub_teams, sep):
"""Split teams of a given string using separators"""
teams = []
for t in sub_teams:
teams += t.split(sep)
return teams
-146
View File
@@ -1,146 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from hashlib import md5, sha256
import PluginBase
import xmlrpclib
import struct
import socket
import zipfile
import os
import urllib2
import urllib
import traceback
from subliminal import encodingKludge as ek
class Podnapisi(PluginBase.PluginBase):
site_url = "http://www.podnapisi.net"
site_name = "Podnapisi"
server_url = 'http://ssp.podnapisi.net:8000'
multi_languages_queries = True
multi_filename_queries = False
api_based = True
_plugin_languages = {"sl": "1",
"en": "2",
"no": "3",
"ko": "4",
"de": "5",
"is": "6",
"cs": "7",
"fr": "8",
"it": "9",
"bs": "10",
"ja": "11",
"ar": "12",
"ro": "13",
"es-ar": "14",
"hu": "15",
"el": "16",
"zh": "17",
"lt": "19",
"et": "20",
"lv": "21",
"he": "22",
"nl": "23",
"da": "24",
"se": "25",
"pl": "26",
"ru": "27",
"es": "28",
"sq": "29",
"tr": "30",
"fi": "31",
"pt": "32",
"bg": "33",
"mk": "35",
"sk": "37",
"hr": "38",
"zh": "40",
"hi": "42",
"th": "44",
"uk": "46",
"sr": "47",
"pt-br": "48",
"ga": "49",
"be": "50",
"vi": "51",
"fa": "52",
"ca": "53",
"id": "54"}
def __init__(self, config_dict=None):
super(Podnapisi, self).__init__(self._plugin_languages, config_dict)
# Podnapisi uses two reference for latin serbian and cyrillic serbian (36 and 47)
# add the 36 manually as cyrillic seems to be more used
self.revertPluginLanguages["36"] = "sr"
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles"""
# as self.multi_filename_queries is false, we won't have multiple filenames in the list so pick the only one
# once multi-filename queries are implemented, set multi_filename_queries to true and manage a list of multiple filenames here
filepath = filenames[0]
if not ek.ek(os.path.isfile, filepath):
return []
return self.query(self.hashFile(filepath), languages)
def download(self, subtitle):
return []
def query(self, moviehash, languages=None):
"""Makes a query on podnapisi and returns info (link, lang) about found subtitles"""
# login
self.server = xmlrpclib.Server(self.server_url)
socket.setdefaulttimeout(self.timeout)
try:
log_result = self.server.initiate(self.user_agent)
self.logger.debug(u"Result: %s" % log_result)
token = log_result["session"]
nonce = log_result["nonce"]
except Exception, e:
self.logger.error(u"Cannot login" % log_result)
socket.setdefaulttimeout(None)
return []
username = 'getmesubs'
password = '99D31$$'
hash = md5()
hash.update(password)
password = hash.hexdigest()
hash = sha256()
hash.update(password)
hash.update(nonce)
password = hash.hexdigest()
self.server.authenticate(token, username, password)
self.logger.debug(u'Authenticated')
#if languages:
# self.logger.debug([self.getLanguage(l) for l in languages])
# self.server.setFilters(token, [self.getLanguage(l) for l in languages])
# self.logger.debug('Filers set for languages %s' % languages)
self.logger.debug(u"Starting search with token %s and hashs %s" % (token, [moviehash]))
results = self.server.search(token, [moviehash])
return results
subs = []
for sub in results['results']:
subs.append(sub)
d = self.server.download(token, [173793])
self.server.terminate(token)
return subs
-176
View File
@@ -1,176 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from BeautifulSoup import BeautifulSoup
import PluginBase
import zipfile
import os
import urllib2
import urllib
import traceback
import httplib
from subliminal import encodingKludge as ek
class SubScene(PluginBase.PluginBase):
site_url = 'http://subscene.com'
site_name = 'SubScene'
server_url = 'http://subscene.com/s.aspx?subtitle='
multi_languages_queries = True
multi_filename_queries = False
api_based = False
_plugin_languages = {"en": "English",
"se": "Swedish",
"da": "Danish",
"fi": "Finnish",
"no": "Norwegian",
"fr": "French",
"es": "Spanish",
"is": "Icelandic",
"cs": "Czech",
"bg": "Bulgarian",
"de": "German",
"ar": "Arabic",
"el": "Greek",
"fa": "Farsi/Persian",
"nl": "Dutch",
"he": "Hebrew",
"id": "Indonesian",
"ja": "Japanese",
"vi": "Vietnamese",
"pt": "Portuguese",
"ro": "Romanian",
"tr": "Turkish",
"sr": "Serbian",
"pt-br": "Brazillian Portuguese",
"ru": "Russian",
"hr": "Croatian",
"sl": "Slovenian",
"zh": "Chinese BG code",
"it": "Italian",
"pl": "Polish",
"ko": "Korean",
"hu": "Hungarian",
"ku": "Kurdish",
"et": "Estonian"}
def __init__(self, config_dict=None):
super(SubScene, self).__init__(self._plugin_languages, config_dict)
#http://subscene.com/s.aspx?subtitle=Dexter.S04E01.HDTV.XviD-NoTV
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles"""
# as self.multi_filename_queries is false, we won't have multiple filenames in the list so pick the only one
# once multi-filename queries are implemented, set multi_filename_queries to true and manage a list of multiple filenames here
filepath = filenames[0]
fname = self.getFileName(filepath)
subs = self.query(fname, filepath, languages)
if not subs and fname.rfind(".[") > 0:
# Try to remove the [VTV] or [EZTV] at the end of the file
teamless_filename = fname[0:fname.rfind(".[")]
subs = self.query(teamless_filename, filepath, languages)
return subs
else:
return subs
def download(self, subtitle):
"""Main method to call when you want to download a subtitle"""
subpage = subtitle["page"]
page = urllib2.urlopen(subpage)
soup = BeautifulSoup(page)
dlhref = soup.find("div", {"class": "download"}).find("a")["href"]
subtitle["link"] = self.site_url + dlhref.split('"')[7]
format = "zip"
archivefilename = subtitle["filename"].rsplit(".", 1)[0] + '.' + format
self.downloadFile(subtitle["link"], archivefilename)
subtitlefilename = None
if zipfile.is_zipfile(archivefilename):
self.logger.debug(u"Unzipping file " + archivefilename)
zf = zipfile.ZipFile(archivefilename, "r")
for el in zf.infolist():
extension = el.orig_filename.rsplit(".", 1)[1]
if extension in ("srt", "sub", "txt"):
subtitlefilename = srtbasefilename + "." + extension
outfile = ek.ek(open, subtitlefilename, "wb")
outfile.write(zf.read(el.orig_filename))
outfile.flush()
outfile.close()
else:
self.logger.info(u"File %s does not seem to be valid " % el.orig_filename)
# Deleting the zip file
zf.close()
ek.ek(os.remove, archivefilename)
return subtitlefilename
elif archivefilename.endswith('.rar'):
self.logger.warn(u'Rar is not really supported yet. Trying to call unrar')
import subprocess
try:
args = ['unrar', 'lb', archivefilename]
output = subprocess.Popen(args, stdout=subprocess.PIPE).communicate()[0]
for el in output.splitlines():
extension = el.rsplit(".", 1)[1]
if extension in ("srt", "sub"):
args = ['unrar', 'e', archivefilename, el, ek.ek(os.path.dirname, archivefilename)]
subprocess.Popen(args)
tmpsubtitlefilename = ek.ek(os.path.join, ek.ek(os.path.dirname, archivefilename), el)
subtitlefilename = ek.ek(os.path.join, ek.ek(os.path.dirname, archivefilename), srtbasefilename + "." + extension)
if ek.ek(os.path.exists, tmpsubtitlefilename):
# rename it to match the file
ek.ek(os.rename, tmpsubtitlefilename, subtitlefilename)
# exit
return subtitlefilename
except OSError, e:
self.logger.error(u"Execution failed: %s" % e)
return None
else:
self.logger.info(u"Unexpected file type (not zip) for %s" % archivefilename)
return None
def downloadFile(self, url, filename):
"""Downloads the given url to the given filename"""
#FIXME: Not working
super(SubScene, self).downloadFile(url, filename, urllib.urlencode({'__EVENTTARGET': 's$lc$bcr$downloadLink', '__EVENTARGUMENT': '', '__VIEWSTATE': '/wEPDwUHNzUxOTkwNWRk4wau5efPqhlBJJlOkKKHN8FIS04='}))
def query(self, token, filepath, langs=None):
"""Make a query on SubScene and returns info about found subtitles"""
sublinks = []
searchurl = "%s%s" % (self.server_url, urllib.quote(token))
self.logger.debug(u"Query: %s" % searchurl)
page = urllib2.urlopen(searchurl)
soup = BeautifulSoup(page.read())
for subs in soup("a", {"class": "a1"}):
lang_span = subs.find("span")
lang = self.getRevertLanguage(lang_span.contents[0].strip())
release_span = lang_span.findNext("span")
release = release_span.contents[0].strip().split(" (")[0]
sub_page = subs["href"]
#http://subscene.com//s-dlpath-260016/78348/rar.zipx
if release.lower().startswith(token.lower()) and (not langs or lang in langs):
result = {}
result["release"] = release
result["lang"] = lang
result["link"] = None
result["page"] = self.site_url + sub_page
result["filename"] = filepath
result["plugin"] = self.getClassName()
sublinks.append(result)
return sublinks
-156
View File
@@ -1,156 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from BeautifulSoup import BeautifulSoup
import PluginBase
import zipfile
import urllib2
import urllib
import logging
import traceback
import httplib
import re
import guessit
from subliminal import encodingKludge as ek
class SubsWiki(PluginBase.PluginBase):
site_url = 'http://www.subswiki.com'
site_name = 'SubsWiki'
server_url = 'http://www.subswiki.com'
multi_languages_queries = True
multi_filename_queries = False
api_based = False
_plugin_languages = {u"English (US)": "en",
u"English (UK)": "en",
u"English": "en",
u"French": "fr",
u"Brazilian": "pt-br",
u"Portuguese": "pt",
u"Español (Latinoamérica)": "es",
u"Español (España)": "es",
u"Español": "es",
u"Italian": "it",
u"Català": "ca"}
def __init__(self, config_dict=None):
super(SubsWiki, self).__init__(self._plugin_languages, config_dict, True)
self.release_pattern = re.compile("\nVersion (.+), ([0-9]+).([0-9])+ MBs")
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles"""
# as self.multi_filename_queries is false, we won't have multiple filenames in the list so pick the only one
# once multi-filename queries are implemented, set multi_filename_queries to true and manage a list of multiple filenames here
filepath = filenames[0]
if not self.checkLanguages(languages):
return []
guess = guessit.guess_file_info(filepath, 'autodetect')
if guess['type'] != 'episode':
return []
# add multiple things to the release group set
release_group = set()
if 'releaseGroup' in guess:
release_group.add(guess['releaseGroup'])
else:
if 'title' in guess:
release_group.add(guess['title'])
if 'screenSize' in guess:
release_group.add(guess['screenSize'])
if len(release_group) == 0:
return []
self.release_group = release_group # used to sort results
return self.query(guess['series'], guess['season'], guess['episodeNumber'], release_group, filepath, languages)
def query(self, name, season, episode, release_group, filepath, languages=None):
"""Make a query and returns info about found subtitles"""
sublinks = []
searchname = name.lower().replace(" ", "_")
searchurl = "%s/serie/%s/%s/%s/" % (self.server_url, searchname, season, episode)
self.logger.debug(u"Searching in %s" % searchurl)
try:
req = urllib2.Request(searchurl, headers={'User-Agent': self.user_agent})
page = urllib2.urlopen(req, timeout=self.timeout)
except urllib2.HTTPError as inst:
self.logger.info(u"Error: %s - %s" % (searchurl, inst))
return []
except urllib2.URLError as inst:
self.logger.info(u"TimeOut: %s" % inst)
return []
soup = BeautifulSoup(page.read())
for subs in soup("td", {"class": "NewsTitle"}):
sub_teams = self.listTeams([self.release_pattern.search("%s" % subs.contents[1]).group(1)], [".", "_", " ", "/", "-"])
if not release_group.intersection(sub_teams): # On wrong team
continue
self.logger.debug(u"Team from website: %s" % sub_teams)
self.logger.debug(u"Team from file: %s" % release_group)
for html_language in subs.parent.parent.findAll("td", {"class": "language"}):
sub_language = self.getRevertLanguage(html_language.string.strip())
self.logger.debug(u"Subtitle reverted language: %s" % sub_language)
if languages and not sub_language in languages: # On wrong language
continue
html_status = html_language.findNextSibling('td')
sub_status = html_status.find('strong').string.strip()
if not sub_status == 'Completed': # On not completed subtitles
continue
sub_link = html_status.findNext("td").find("a")["href"]
result = {}
result["release"] = "%s.S%.2dE%.2d.%s" % (name.replace(" ", "."), int(season), int(episode), '.'.join(sub_teams))
result["lang"] = sub_language
result["link"] = self.server_url + sub_link
result["page"] = searchurl
result["filename"] = filepath
result["plugin"] = self.getClassName()
result["teams"] = sub_teams # used to sort
sublinks.append(result)
sublinks.sort(self._cmpTeams)
return sublinks
def download(self, subtitle):
"""Main method to call when you want to download a subtitle"""
subtitleFilename = subtitle["filename"].rsplit(".", 1)[0] + self.getExtension(subtitle)
self.downloadFile(subtitle["link"], subtitleFilename)
return subtitleFilename
def listTeams(self, subteams, separators):
teams = []
for sep in separators:
subteams = self.splitTeam(subteams, sep)
return set(subteams)
def splitTeam(self, subteams, sep):
teams = []
for t in subteams:
teams += t.split(sep)
return teams
def downloadFile(self, url, filename):
"""Downloads the given url to the given filename"""
req = urllib2.Request(url, headers={'Referer': url, 'User-Agent': 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3)'})
f = urllib2.urlopen(req)
dump = ek.ek(open, filename, "wb")
dump.write(f.read())
dump.close()
f.close()
def _cmpTeams(self, x, y):
"""Sort based on teams matching"""
return -cmp(len(x['teams'].intersection(self.release_group)), len(y['teams'].intersection(self.release_group)))
-122
View File
@@ -1,122 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import ConfigParser
import PluginBase
import traceback
import urllib
import urllib2
import xml.dom.minidom
class SubtitleSource(PluginBase.PluginBase):
site_url = 'http://www.subtitlesource.org'
site_name = 'SubtitleSource'
server_url = 'http://www.subtitlesource.org/api/%s/3.0/xmlsearch'
multi_languages_queries = True
multi_filename_queries = False
api_based = True
_plugin_languages = {"en": "English",
"sv": "Swedish",
"da": "Danish",
"fi": "Finnish",
"no": "Norwegian",
"fr": "French",
"es": "Spanish",
"is": "Icelandic"}
def __init__(self, config_dict=None):
super(SubtitleSource, self).__init__(self._plugin_languages, config_dict)
if config_dict and "subtitlesource_key" in config_dict:
self.server_url = self.server_url % config_dict["subtitlesource_key"]
else:
self.logger.error(u'SubtitleSource API Key is mandatory for this plugin')
raise Exception('SubtitleSource API Key is mandatory for this plugin')
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles"""
filepath = filenames[0]
fname = self.getFileName(filepath)
subs = self.query(fname, languages)
if not subs and fname.rfind(".[") > 0:
# Try to remove the [VTV] or [EZTV] at the end of the file
teamless_filename = fname[0:fname.rfind(".[")]
subs = self.query(teamless_filename, languages)
return subs
else:
return subs
def query(self, token, languages=None):
"""Makes a query on SubtitlesSource and returns info (link, lang) about found subtitles"""
self.logger.debug(u"Local file is: %s " % token)
sublinks = []
if not languages: # langs is empty of None
languages = ["all"]
else: # parse each lang to generate the equivalent lang
languages = [self._plugin_languages[l] for l in languages if l in self._plugin_languages.keys()]
# Get the CD part of this
metaData = self.guessFileData(token)
multipart = metaData.get('part', None)
part = metaData.get('part')
if not part: # part will return None if not found using the regex
part = 1
for lang in languages:
searchurl = "%s/%s/%s/0" % (self.server_url, urllib.quote(token), lang)
self.logger.debug(u"dl'ing %s" % searchurl)
page = urllib2.urlopen(searchurl, timeout=self.timeout)
xmltree = xml.dom.minidom.parse(page)
subs = xmltree.getElementsByTagName("sub")
for sub in subs:
sublang = self.getRevertLanguage(self.getValue(sub, "language"))
if languages and not sublang in languages:
continue # The language of this sub is not wanted => Skip
if multipart and not int(self.getValue(sub, 'cd')) > 1:
continue # The subtitle is not a multipart
dllink = "http://www.subtitlesource.org/download/text/%s/%s" % (self.getValue(sub, "id"), part)
self.logger.debug(u"Link added: %s (%s)" % (dllink, sublang))
result = {}
result["release"] = self.getValue(sub, "releasename")
result["link"] = dllink
result["page"] = dllink
result["lang"] = sublang
releaseMetaData = self.guessFileData(result['release'])
teams = set(metaData['teams'])
srtTeams = set(releaseMetaData['teams'])
self.logger.debug(u"Analyzing: %s " % result['release'])
self.logger.debug(u"Local file has: %s " % metaData['teams'])
self.logger.debug(u"Remote sub has: %s " % releaseMetaData['teams'])
if result['release'].startswith(token) or (releaseMetaData['name'] == metaData['name'] and releaseMetaData['type'] == metaData['type'] and (teams.issubset(srtTeams) or srtTeams.issubset(teams))):
sublinks.append(result)
return sublinks
def download(self, subtitle):
"""Main method to call when you want to download a subtitle"""
suburl = subtitle["link"]
videofilename = subtitle["filename"]
srtfilename = videofilename.rsplit(".", 1)[0] + self.getExtension(subtitle)
self.downloadFile(suburl, srtfilename)
return srtfilename
def getValue(self, sub, tagName):
for node in sub.childNodes:
if node.nodeType == node.ELEMENT_NODE and node.tagName == tagName:
return node.childNodes[0].nodeValue
-150
View File
@@ -1,150 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from BeautifulSoup import BeautifulSoup
import guessit
import zipfile
import urllib2
import urllib
import logging
import traceback
import httplib
import re
import PluginBase
from subliminal import encodingKludge as ek
class Subtitulos(PluginBase.PluginBase):
site_url = 'http://www.subtitulos.es'
site_name = 'Subtitulos'
server_url = 'http://www.subtitulos.es'
multi_languages_queries = True
multi_filename_queries = False
api_based = False
_plugin_languages = {u"English (US)": "en",
u"English (UK)": "en",
u"English": "en",
u"French": "fr",
u"Brazilian": "pt-br",
u"Portuguese": "pt",
u"Español (Latinoamérica)": "es",
u"Español (España)": "es",
u"Español": "es",
u"Italian": "it",
u"Català": "ca"}
def __init__(self, config_dict=None):
super(Subtitulos, self).__init__(self._plugin_languages, config_dict, True)
self.release_pattern = re.compile("Versi&oacute;n (.+) ([0-9]+).([0-9])+ megabytes")
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles"""
# as self.multi_filename_queries is false, we won't have multiple filenames in the list so pick the only one
# once multi-filename queries are implemented, set multi_filename_queries to true and manage a list of multiple filenames here
if not self.checkLanguages(languages):
return []
filepath = filenames[0]
guess = guessit.guess_file_info(filepath, 'autodetect')
if guess['type'] != 'episode':
return []
# add multiple things to the release group set
release_group = set()
if 'releaseGroup' in guess:
release_group.add(guess['releaseGroup'].lower())
else:
if 'title' in guess:
release_group.add(guess['title'].lower())
if 'screenSize' in guess:
release_group.add(guess['screenSize'].lower())
if len(release_group) == 0:
return []
self.release_group = release_group # used to sort results
return self.query(guess['series'], guess['season'], guess['episodeNumber'], release_group, filepath, languages)
def query(self, name, season, episode, release_group, filepath, languages=None):
"""Make a query and returns info about found subtitles"""
sublinks = []
searchname = name.lower().replace(" ", "-")
searchurl = "%s/%s/%sx%.2d" % (self.server_url, searchname, season, episode)
self.logger.debug(u"Searching in %s" % searchurl)
try:
req = urllib2.Request(searchurl, headers={'User-Agent': self.user_agent})
page = urllib2.urlopen(req, timeout=self.timeout)
except urllib2.HTTPError as inst:
self.logger.info(u"Error: %s - %s" % (searchurl, inst))
return []
except urllib2.URLError as inst:
self.logger.info(u"TimeOut: %s" % inst)
return []
soup = BeautifulSoup(page.read())
for subs in soup("div", {"id": "version"}):
version = subs.find("p", {"class": "title-sub"})
sub_teams = self.listTeams([self.release_pattern.search("%s" % version.contents[1]).group(1).lower()], [".", "_", " ", "/"])
if not release_group.intersection(sub_teams): # On wrong team
continue
self.logger.debug(u"Team from website: %s" % sub_teams)
self.logger.debug(u"Team from file: %s" % release_group)
for html_language in subs.findAllNext("ul", {"class": "sslist"}):
sub_language = self.getRevertLanguage(html_language.findNext("li", {"class": "li-idioma"}).find("strong").contents[0].string.strip())
if languages and not sub_language in languages: # On wrong language
continue
html_status = html_language.findNext("li", {"class": "li-estado green"})
sub_status = html_status.contents[0].string.strip()
if not sub_status == 'Completado': # On not completed subtitles
continue
sub_link = html_status.findNext("span", {"class": "descargar green"}).find("a")["href"]
result = {}
result["release"] = "%s.S%.2dE%.2d.%s" % (name.replace(" ", "."), int(season), int(episode), '.'.join(sub_teams))
result["lang"] = sub_language
result["link"] = sub_link
result["page"] = searchurl
result["filename"] = filepath
result["plugin"] = self.getClassName()
result["teams"] = sub_teams # used to sort
sublinks.append(result)
sublinks.sort(self._cmpTeams)
return sublinks
def download(self, subtitle):
"""
Pass the URL of the sub and the file it matches, will unzip it
and return the path to the created file
"""
suburl = subtitle["link"]
videofilename = subtitle["filename"]
srtbasefilename = videofilename.rsplit(".", 1)[0]
srtfilename = srtbasefilename + ".srt"
self.downloadFile(suburl, srtfilename)
return srtfilename
def downloadFile(self, url, filename):
"""Downloads the given url to the given filename"""
req = urllib2.Request(url, headers={'Referer': url, 'User-Agent': 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3)'})
f = urllib2.urlopen(req)
dump = ek.ek(open, filename, "wb")
dump.write(f.read())
dump.close()
f.close()
def _cmpTeams(self, x, y):
"""Sort based on teams matching"""
return -cmp(len(x['teams'].intersection(self.release_group)), len(y['teams'].intersection(self.release_group)))
-125
View File
@@ -1,125 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import PluginBase
import hashlib
import os
import urllib2
from subliminal import encodingKludge as ek
class TheSubDB(PluginBase.PluginBase):
site_url = 'http://thesubdb.com'
site_name = 'SubDB'
server_url = 'http://api.thesubdb.com' # for testing purpose, use http://sandbox.thesubdb.com instead
multi_languages_queries = True
multi_filename_queries = False
api_based = True
user_agent = 'SubDB/1.0 (Subliminal/0.1; https://github.com/Diaoul/subliminal)' # defined by the API
_plugin_languages = {'cs': 'cs', # the whole list is available with the API: http://sandbox.thesubdb.com/?action=languages
'da': 'da',
'de': 'de',
'en': 'en',
'fi': 'fi',
'fr': 'fr',
'hu': 'hu',
'id': 'id',
'it': 'it',
'nl': 'nl',
'no': 'no',
'pl': 'pl',
'pt': 'pt',
'ro': 'ro',
'ru': 'ru',
'sl': 'sl',
'sr': 'sr',
'sv': 'sv',
'tr': 'tr'}
def __init__(self, config_dict=None):
super(TheSubDB, self).__init__(self._plugin_languages, config_dict)
def list(self, filenames, languages):
"""Main method to call when you want to list subtitles"""
# as self.multi_filename_queries is false, we won't have multiple filenames in the list so pick the only one
# once multi-filename queries are implemented, set multi_filename_queries to true and manage a list of multiple filenames here
filepath = filenames[0]
if not ek.ek(os.path.isfile, filepath):
return []
return self.query(filepath, self.hashFile(filepath), languages)
def query(self, filepath, moviehash, languages=None):
searchurl = "%s/?action=%s&hash=%s" % (self.server_url, "search", moviehash)
self.logger.debug(u'Query URL: %s' % searchurl)
try:
req = urllib2.Request(searchurl, headers={'User-Agent': self.user_agent})
page = urllib2.urlopen(req, timeout=self.timeout)
except urllib2.HTTPError as inst:
if inst.code == 404: # no result found
return []
self.logger.error(u"Error: %s - %s" % (searchurl, inst))
return []
except urllib2.URLError as inst:
self.logger.error(u"TimeOut: %s" % inst)
return []
available_languages = page.readlines()[0].split(',')
self.logger.debug(u'Available languages: %s' % available_languages)
subs = []
for l in available_languages:
if not languages or l in languages:
result = {}
result['release'] = filepath
result['lang'] = l
result['link'] = "%s/?action=download&hash=%s&language=%s" % (self.server_url, moviehash, l)
result['page'] = result['link']
result['filename'] = filepath
result['plugin'] = self.getClassName()
subs.append(result)
return subs
def hashFile(self, name):
"""This hash function receives the filename and returns the hash code"""
readsize = 64 * 1024
with ek.ek(open, name, 'rb') as f:
size = ek.ek(os.path.getsize, name)
data = f.read(readsize)
f.seek(-readsize, os.SEEK_END)
data += f.read(readsize)
return hashlib.md5(data).hexdigest()
def download(self, subtitle):
"""Main method to call when you want to download a subtitle"""
suburl = subtitle["link"]
videofilename = subtitle["filename"]
srtfilename = videofilename.rsplit(".", 1)[0] + self.getExtension(subtitle)
self.downloadFile(suburl, srtfilename)
return srtfilename
def downloadFile(self, url, srtfilename):
"""Downloads the given url to the given filename"""
req = urllib2.Request(url)
req.add_header('User-Agent', self.user_agent)
f = urllib2.urlopen(req)
dump = open(srtfilename, "wb")
dump.write(f.read())
dump.close()
f.close()
-31
View File
@@ -1,31 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from Addic7ed import Addic7ed
from BierDopje import BierDopje
from OpenSubtitles import OpenSubtitles
#from Podnapisi import Podnapisi
#from SubScene import SubScene
from SubsWiki import SubsWiki
#from SubtitleSource import SubtitleSource
from Subtitulos import Subtitulos
from TheSubDB import TheSubDB
+173
View File
@@ -0,0 +1,173 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import logging
from bs4 import BeautifulSoup, FeatureNotFound
from six.moves.xmlrpc_client import SafeTransport
from ..video import Episode, Movie
logger = logging.getLogger(__name__)
def get_version(version):
"""Put the `version` in the major.minor form.
:param str version: the full version.
:return: the major.minor form of the `version`.
:rtype: str
"""
return '.'.join(version.split('.')[:2])
class TimeoutSafeTransport(SafeTransport):
"""Timeout support for ``xmlrpc.client.SafeTransport``."""
def __init__(self, timeout, *args, **kwargs):
SafeTransport.__init__(self, *args, **kwargs)
self.timeout = timeout
def make_connection(self, host):
c = SafeTransport.make_connection(self, host)
c.timeout = self.timeout
return c
class ParserBeautifulSoup(BeautifulSoup):
"""A ``bs4.BeautifulSoup`` that picks the first parser available in `parsers`.
:param markup: markup for the ``bs4.BeautifulSoup``.
:param list parsers: parser names, in order of preference
"""
def __init__(self, markup, parsers, **kwargs):
# reject features
if set(parsers).intersection({'fast', 'permissive', 'strict', 'xml', 'html', 'html5'}):
raise ValueError('Features not allowed, only parser names')
# reject some kwargs
if 'features' in kwargs:
raise ValueError('Cannot use features kwarg')
if 'builder' in kwargs:
raise ValueError('Cannot use builder kwarg')
# pick the first parser available
for parser in parsers:
try:
super(ParserBeautifulSoup, self).__init__(markup, parser, **kwargs)
return
except FeatureNotFound:
pass
raise FeatureNotFound
class Provider(object):
"""Base class for providers.
If any configuration is possible for the provider, like credentials, it must take place during instantiation.
:raise: :class:`~subliminal.exceptions.ConfigurationError` if there is a configuration error
"""
#: Supported set of :class:`~babelfish.language.Language`
languages = set()
#: Supported video types
video_types = (Episode, Movie)
#: Required hash, if any
required_hash = None
def __enter__(self):
self.initialize()
return self
def __exit__(self, exc_type, exc_value, traceback):
self.terminate()
def initialize(self):
"""Initialize the provider.
Must be called when starting to work with the provider. This is the place for network initialization
or login operations.
.. note::
This is called automatically when entering the :keyword:`with` statement
"""
raise NotImplementedError
def terminate(self):
"""Terminate the provider.
Must be called when done with the provider. This is the place for network shutdown or logout operations.
.. note::
This is called automatically when exiting the :keyword:`with` statement
"""
raise NotImplementedError
@classmethod
def check(cls, video):
"""Check if the `video` can be processed.
The `video` is considered invalid if not an instance of :attr:`video_types` or if the :attr:`required_hash` is
not present in :attr:`~subliminal.video.Video.hashes` attribute of the `video`.
:param video: the video to check.
:type video: :class:`~subliminal.video.Video`
:return: `True` if the `video` is valid, `False` otherwise.
:rtype: bool
"""
if not isinstance(video, cls.video_types):
return False
if cls.required_hash is not None and cls.required_hash not in video.hashes:
return False
return True
def query(self, *args, **kwargs):
"""Query the provider for subtitles.
Arguments should match as much as possible the actual parameters for querying the provider
:return: found subtitles.
:rtype: list of :class:`~subliminal.subtitle.Subtitle`
:raise: :class:`~subliminal.exceptions.ProviderError`
"""
raise NotImplementedError
def list_subtitles(self, video, languages):
"""List subtitles for the `video` with the given `languages`.
This will call the :meth:`query` method internally. The parameters passed to the :meth:`query` method may
vary depending on the amount of information available in the `video`.
:param video: video to list subtitles for.
:type video: :class:`~subliminal.video.Video`
:param languages: languages to search for.
:type languages: set of :class:`~babelfish.language.Language`
:return: found subtitles.
:rtype: list of :class:`~subliminal.subtitle.Subtitle`
:raise: :class:`~subliminal.exceptions.ProviderError`
"""
raise NotImplementedError
def download_subtitle(self, subtitle):
"""Download `subtitle`'s :attr:`~subliminal.subtitle.Subtitle.content`.
:param subtitle: subtitle to download.
:type subtitle: :class:`~subliminal.subtitle.Subtitle`
:raise: :class:`~subliminal.exceptions.ProviderError`
"""
raise NotImplementedError
def __repr__(self):
return '<%s [%r]>' % (self.__class__.__name__, self.video_types)
+271
View File
@@ -0,0 +1,271 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import logging
import re
from babelfish import Language
from requests import Session
from . import ParserBeautifulSoup, Provider, get_version
from .. import __version__
from ..cache import SHOW_EXPIRATION_TIME, region
from ..exceptions import AuthenticationError, ConfigurationError, DownloadLimitExceeded
from ..subtitle import Subtitle, fix_line_ending, guess_matches, guess_properties
from ..video import Episode
logger = logging.getLogger(__name__)
series_year_re = re.compile('^(?P<series>[ \w]+)(?: \((?P<year>\d{4})\))?$')
class Addic7edSubtitle(Subtitle):
provider_name = 'addic7ed'
def __init__(self, language, hearing_impaired, page_link, series, season, episode, title, year, version,
download_link):
super(Addic7edSubtitle, self).__init__(language, hearing_impaired, page_link)
self.series = series
self.season = season
self.episode = episode
self.title = title
self.year = year
self.version = version
self.download_link = download_link
@property
def id(self):
return self.download_link
def get_matches(self, video, hearing_impaired=False):
matches = super(Addic7edSubtitle, self).get_matches(video, hearing_impaired=hearing_impaired)
# series
if video.series and self.series.lower() == video.series.lower():
matches.add('series')
# season
if video.season and self.season == video.season:
matches.add('season')
# episode
if video.episode and self.episode == video.episode:
matches.add('episode')
# title
if video.title and self.title.lower() == video.title.lower():
matches.add('title')
# year
if video.year == self.year:
matches.add('year')
# release_group
if video.release_group and self.version and video.release_group.lower() in self.version.lower():
matches.add('release_group')
# resolution
if video.resolution and self.version and video.resolution in self.version.lower():
matches.add('resolution')
# format
if video.format and self.version and video.format.lower() in self.version.lower():
matches.add('format')
# other properties
matches |= guess_matches(video, guess_properties(self.version), partial=True)
return matches
class Addic7edProvider(Provider):
languages = {Language('por', 'BR')} | {Language(l) for l in [
'ara', 'aze', 'ben', 'bos', 'bul', 'cat', 'ces', 'dan', 'deu', 'ell', 'eng', 'eus', 'fas', 'fin', 'fra', 'glg',
'heb', 'hrv', 'hun', 'hye', 'ind', 'ita', 'jpn', 'kor', 'mkd', 'msa', 'nld', 'nor', 'pol', 'por', 'ron', 'rus',
'slk', 'slv', 'spa', 'sqi', 'srp', 'swe', 'tha', 'tur', 'ukr', 'vie', 'zho'
]}
video_types = (Episode,)
server_url = 'http://www.addic7ed.com/'
def __init__(self, username=None, password=None):
if username is not None and password is None or username is None and password is not None:
raise ConfigurationError('Username and password must be specified')
self.username = username
self.password = password
self.logged_in = False
def initialize(self):
self.session = Session()
self.session.headers = {'User-Agent': 'Subliminal/%s' % get_version(__version__)}
# login
if self.username is not None and self.password is not None:
logger.info('Logging in')
data = {'username': self.username, 'password': self.password, 'Submit': 'Log in'}
r = self.session.post(self.server_url + 'dologin.php', data, allow_redirects=False, timeout=10)
if r.status_code != 302:
raise AuthenticationError(self.username)
logger.debug('Logged in')
self.logged_in = True
def terminate(self):
# logout
if self.logged_in:
logger.info('Logging out')
r = self.session.get(self.server_url + 'logout.php', timeout=10)
r.raise_for_status()
logger.debug('Logged out')
self.logged_in = False
self.session.close()
@region.cache_on_arguments(expiration_time=SHOW_EXPIRATION_TIME)
def _get_show_ids(self):
"""Get the ``dict`` of show ids per series by querying the `shows.php` page.
:return: show id per series, lower case and without quotes.
:rtype: dict
"""
# get the show page
logger.info('Getting show ids')
r = self.session.get(self.server_url + 'shows.php', timeout=10)
r.raise_for_status()
soup = ParserBeautifulSoup(r.content, ['lxml', 'html.parser'])
# populate the show ids
show_ids = {}
for show in soup.select('td.version > h3 > a[href^="/show/"]'):
show_ids[show.text.lower().replace('\'', '')] = int(show['href'][6:])
logger.debug('Found %d show ids', len(show_ids))
return show_ids
@region.cache_on_arguments(expiration_time=SHOW_EXPIRATION_TIME)
def _search_show_id(self, series, year=None):
"""Search the show id from the `series` and `year`.
:param string series: series of the episode.
:param year: year of the series, if any.
:type year: int or None
:return: the show id, if found.
:rtype: int or None
"""
# build the params
series_year = '%s (%d)' % (series, year) if year is not None else series
params = {'search': series_year, 'Submit': 'Search'}
# make the search
logger.info('Searching show ids with %r', params)
r = self.session.get(self.server_url + 'search.php', params=params, timeout=10)
r.raise_for_status()
soup = ParserBeautifulSoup(r.content, ['lxml', 'html.parser'])
# get the suggestion
suggestion = soup.select('span.titulo > a[href^="/show/"]')
if not suggestion:
logger.warning('Show id not found: no suggestion')
return None
if not suggestion[0].i.text.lower() == series_year.lower():
logger.warning('Show id not found: suggestion does not match')
return None
show_id = int(suggestion[0]['href'][6:])
logger.debug('Found show id %d', show_id)
return show_id
def get_show_id(self, series, year=None, country_code=None):
"""Get the best matching show id for `series`, `year` and `country_code`.
First search in the result of :meth:`_get_show_ids` and fallback on a search with :meth:`_search_show_id`
:param str series: series of the episode.
:param year: year of the series, if any.
:type year: int or None
:param country_code: country code of the series, if any.
:type country_code: str or None
:return: the show id, if found.
:rtype: int or None
"""
series_clean = series.lower().replace('\'', '')
show_ids = self._get_show_ids()
show_id = None
# attempt with country
if not show_id and country_code:
logger.debug('Getting show id with country')
show_id = show_ids.get('%s (%s)' % (series_clean, country_code.lower()))
# attempt with year
if not show_id and year:
logger.debug('Getting show id with year')
show_id = show_ids.get('%s (%d)' % (series_clean, year))
# attempt clean
if not show_id:
logger.debug('Getting show id')
show_id = show_ids.get(series_clean)
# search as last resort
if not show_id:
logger.warning('Series not found in show ids')
show_id = self._search_show_id(series)
return show_id
def query(self, series, season, year=None, country=None):
# get the show id
show_id = self.get_show_id(series, year, country)
if show_id is None:
logger.error('No show id found for %r (%r)', series, {'year': year, 'country': country})
return []
# get the page of the season of the show
logger.info('Getting the page of show id %d, season %d', show_id, season)
r = self.session.get(self.server_url + 'show/%d' % show_id, params={'season': season}, timeout=10)
r.raise_for_status()
soup = ParserBeautifulSoup(r.content, ['lxml', 'html.parser'])
# loop over subtitle rows
match = series_year_re.match(soup.select('#header font')[0].text.strip()[:-10])
series = match.group('series')
year = int(match.group('year')) if match.group('year') else None
subtitles = []
for row in soup.select('tr.epeven'):
cells = row('td')
# ignore incomplete subtitles
status = cells[5].text
if status != 'Completed':
logger.debug('Ignoring subtitle with status %s', status)
continue
# read the item
language = Language.fromaddic7ed(cells[3].text)
hearing_impaired = bool(cells[6].text)
page_link = self.server_url + cells[2].a['href'][1:]
season = int(cells[0].text)
episode = int(cells[1].text)
title = cells[2].text
version = cells[4].text
download_link = cells[9].a['href'][1:]
subtitle = Addic7edSubtitle(language, hearing_impaired, page_link, series, season, episode, title, year,
version, download_link)
logger.debug('Found subtitle %r', subtitle)
subtitles.append(subtitle)
return subtitles
def list_subtitles(self, video, languages):
return [s for s in self.query(video.series, video.season, video.year)
if s.language in languages and s.episode == video.episode]
def download_subtitle(self, subtitle):
# download the subtitle
logger.info('Downloading subtitle %r', subtitle)
r = self.session.get(self.server_url + subtitle.download_link, headers={'Referer': subtitle.page_link},
timeout=10)
r.raise_for_status()
# detect download limit exceeded
if r.headers['Content-Type'] == 'text/html':
raise DownloadLimitExceeded
subtitle.content = fix_line_ending(r.content)
+255
View File
@@ -0,0 +1,255 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import base64
import logging
import os
import re
import zlib
from babelfish import Language, language_converters
from guessit import guess_episode_info, guess_movie_info
from six.moves.xmlrpc_client import ServerProxy
from . import Provider, TimeoutSafeTransport, get_version
from .. import __version__
from ..exceptions import AuthenticationError, DownloadLimitExceeded, ProviderError
from ..subtitle import Subtitle, fix_line_ending, guess_matches
from ..video import Episode, Movie
logger = logging.getLogger(__name__)
class OpenSubtitlesSubtitle(Subtitle):
provider_name = 'opensubtitles'
series_re = re.compile('^"(?P<series_name>.*)" (?P<series_title>.*)$')
def __init__(self, language, hearing_impaired, page_link, subtitle_id, matched_by, movie_kind, hash, movie_name,
movie_release_name, movie_year, movie_imdb_id, series_season, series_episode):
super(OpenSubtitlesSubtitle, self).__init__(language, hearing_impaired, page_link)
self.subtitle_id = subtitle_id
self.matched_by = matched_by
self.movie_kind = movie_kind
self.hash = hash
self.movie_name = movie_name
self.movie_release_name = movie_release_name
self.movie_year = movie_year
self.movie_imdb_id = movie_imdb_id
self.series_season = series_season
self.series_episode = series_episode
@property
def id(self):
return str(self.subtitle_id)
@property
def series_name(self):
return self.series_re.match(self.movie_name).group('series_name')
@property
def series_title(self):
return self.series_re.match(self.movie_name).group('series_title')
def get_matches(self, video, hearing_impaired=False):
matches = super(OpenSubtitlesSubtitle, self).get_matches(video, hearing_impaired=hearing_impaired)
# episode
if isinstance(video, Episode) and self.movie_kind == 'episode':
# series
if video.series and self.series_name.lower() == video.series.lower():
matches.add('series')
# season
if video.season and self.series_season == video.season:
matches.add('season')
# episode
if video.episode and self.series_episode == video.episode:
matches.add('episode')
# title
if video.title and self.series_title.lower() == video.title.lower():
matches.add('title')
# guess
matches |= guess_matches(video, guess_episode_info(self.movie_release_name + '.mkv'))
# movie
elif isinstance(video, Movie) and self.movie_kind == 'movie':
# title
if video.title and self.movie_name.lower() == video.title.lower():
matches.add('title')
# year
if video.year and self.movie_year == video.year:
matches.add('year')
# guess
matches |= guess_matches(video, guess_movie_info(self.movie_release_name + '.mkv'))
else:
logger.info('%r is not a valid movie_kind', self.movie_kind)
return matches
# hash
if 'opensubtitles' in video.hashes and self.hash == video.hashes['opensubtitles']:
matches.add('hash')
# imdb_id
if video.imdb_id and self.movie_imdb_id == video.imdb_id:
matches.add('imdb_id')
return matches
class OpenSubtitlesProvider(Provider):
languages = {Language.fromopensubtitles(l) for l in language_converters['opensubtitles'].codes}
def __init__(self):
self.server = ServerProxy('https://api.opensubtitles.org/xml-rpc', TimeoutSafeTransport(10))
self.token = None
def initialize(self):
logger.info('Logging in')
response = checked(self.server.LogIn('', '', 'eng', 'subliminal v%s' % get_version(__version__)))
self.token = response['token']
logger.debug('Logged in with token %r', self.token)
def terminate(self):
logger.info('Logging out')
checked(self.server.LogOut(self.token))
self.server.close()
logger.debug('Logged out')
def no_operation(self):
logger.debug('No operation')
checked(self.server.NoOperation(self.token))
def query(self, languages, hash=None, size=None, imdb_id=None, query=None, season=None, episode=None):
# fill the search criteria
criteria = []
if hash and size:
criteria.append({'moviehash': hash, 'moviebytesize': str(size)})
if imdb_id:
criteria.append({'imdbid': imdb_id})
if query and season and episode:
criteria.append({'query': query, 'season': season, 'episode': episode})
elif query:
criteria.append({'query': query})
if not criteria:
raise ValueError('Not enough information')
# add the language
for criterion in criteria:
criterion['sublanguageid'] = ','.join(sorted(l.opensubtitles for l in languages))
# query the server
logger.info('Searching subtitles %r', criteria)
response = checked(self.server.SearchSubtitles(self.token, criteria))
subtitles = []
# exit if no data
if not response['data']:
logger.info('No subtitles found')
return subtitles
# loop over subtitle items
for subtitle_item in response['data']:
# read the item
language = Language.fromopensubtitles(subtitle_item['SubLanguageID'])
hearing_impaired = bool(int(subtitle_item['SubHearingImpaired']))
page_link = subtitle_item['SubtitlesLink']
subtitle_id = int(subtitle_item['IDSubtitleFile'])
matched_by = subtitle_item['MatchedBy']
movie_kind = subtitle_item['MovieKind']
hash = subtitle_item['MovieHash']
movie_name = subtitle_item['MovieName']
movie_release_name = subtitle_item['MovieReleaseName']
movie_year = int(subtitle_item['MovieYear']) if subtitle_item['MovieYear'] else None
movie_imdb_id = int(subtitle_item['IDMovieImdb'])
series_season = int(subtitle_item['SeriesSeason']) if subtitle_item['SeriesSeason'] else None
series_episode = int(subtitle_item['SeriesEpisode']) if subtitle_item['SeriesEpisode'] else None
subtitle = OpenSubtitlesSubtitle(language, hearing_impaired, page_link, subtitle_id, matched_by, movie_kind,
hash, movie_name, movie_release_name, movie_year, movie_imdb_id,
series_season, series_episode)
logger.debug('Found subtitle %r', subtitle)
subtitles.append(subtitle)
return subtitles
def list_subtitles(self, video, languages):
query = season = episode = None
if isinstance(video, Episode):
query = video.series
season = video.season
episode = video.episode
elif ('opensubtitles' not in video.hashes or not video.size) and not video.imdb_id:
query = video.name.split(os.sep)[-1]
return self.query(languages, hash=video.hashes.get('opensubtitles'), size=video.size, imdb_id=video.imdb_id,
query=query, season=season, episode=episode)
def download_subtitle(self, subtitle):
logger.info('Downloading subtitle %r', subtitle)
response = checked(self.server.DownloadSubtitles(self.token, [str(subtitle.subtitle_id)]))
subtitle.content = fix_line_ending(zlib.decompress(base64.b64decode(response['data'][0]['data']), 47))
class OpenSubtitlesError(ProviderError):
"""Base class for non-generic :class:`OpenSubtitlesProvider` exceptions."""
pass
class Unauthorized(OpenSubtitlesError, AuthenticationError):
"""Exception raised when status is '401 Unauthorized'."""
pass
class NoSession(OpenSubtitlesError, AuthenticationError):
"""Exception raised when status is '406 No session'."""
pass
class DownloadLimitReached(OpenSubtitlesError, DownloadLimitExceeded):
"""Exception raised when status is '407 Download limit reached'."""
pass
class InvalidImdbid(OpenSubtitlesError):
"""Exception raised when status is '413 Invalid ImdbID'."""
pass
class UnknownUserAgent(OpenSubtitlesError, AuthenticationError):
"""Exception raised when status is '414 Unknown User Agent'."""
pass
class DisabledUserAgent(OpenSubtitlesError, AuthenticationError):
"""Exception raised when status is '415 Disabled user agent'."""
pass
class ServiceUnavailable(OpenSubtitlesError):
"""Exception raised when status is '503 Service Unavailable'."""
pass
def checked(response):
"""Check a response status before returning it.
:param response: a response from a XMLRPC call to OpenSubtitles.
:return: the response.
:raise: :class:`OpenSubtitlesError`
"""
status_code = int(response['status'][:3])
if status_code == 401:
raise Unauthorized
if status_code == 406:
raise NoSession
if status_code == 407:
raise DownloadLimitReached
if status_code == 413:
raise InvalidImdbid
if status_code == 414:
raise UnknownUserAgent
if status_code == 415:
raise DisabledUserAgent
if status_code == 503:
raise ServiceUnavailable
if status_code != 200:
raise OpenSubtitlesError(response['status'])
return response
+173
View File
@@ -0,0 +1,173 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import io
import logging
import re
from babelfish import Language, language_converters
from guessit import guess_episode_info, guess_movie_info
try:
from lxml import etree
except ImportError:
try:
import xml.etree.cElementTree as etree
except ImportError:
import xml.etree.ElementTree as etree
from requests import Session
from zipfile import ZipFile
from . import Provider, get_version
from .. import __version__
from ..exceptions import ProviderError
from ..subtitle import Subtitle, fix_line_ending, guess_matches
from ..video import Episode, Movie
logger = logging.getLogger(__name__)
class PodnapisiSubtitle(Subtitle):
provider_name = 'podnapisi'
def __init__(self, language, hearing_impaired, page_link, pid, releases, title, season=None, episode=None,
year=None):
super(PodnapisiSubtitle, self).__init__(language, hearing_impaired, page_link)
self.pid = pid
self.releases = releases
self.title = title
self.season = season
self.episode = episode
self.year = year
@property
def id(self):
return self.pid
def get_matches(self, video, hearing_impaired=False):
matches = super(PodnapisiSubtitle, self).get_matches(video, hearing_impaired=hearing_impaired)
# episode
if isinstance(video, Episode):
# series
if video.series and self.title.lower() == video.series.lower():
matches.add('series')
# season
if video.season and self.season == video.season:
matches.add('season')
# episode
if video.episode and self.episode == video.episode:
matches.add('episode')
# guess
for release in self.releases:
matches |= guess_matches(video, guess_episode_info(release + '.mkv'))
# movie
elif isinstance(video, Movie):
# title
if video.title and self.title.lower() == video.title.lower():
matches.add('title')
# guess
for release in self.releases:
matches |= guess_matches(video, guess_movie_info(release + '.mkv'))
# year
if video.year and self.year == video.year:
matches.add('year')
return matches
class PodnapisiProvider(Provider):
languages = ({Language('por', 'BR'), Language('srp', script='Latn')} |
{Language.fromalpha2(l) for l in language_converters['alpha2'].codes})
video_types = (Episode, Movie)
server_url = 'http://podnapisi.net/subtitles/'
def initialize(self):
self.session = Session()
self.session.headers = {'User-Agent': 'Subliminal/%s' % get_version(__version__)}
def terminate(self):
self.session.close()
def query(self, language, keyword, season=None, episode=None, year=None):
# set parameters, see http://www.podnapisi.net/forum/viewtopic.php?f=62&t=26164#p212652
params = {'sXML': 1, 'sL': str(language), 'sK': keyword}
is_episode = False
if season and episode:
is_episode = True
params['sTS'] = season
params['sTE'] = episode
if year:
params['sY'] = year
# loop over paginated results
logger.info('Searching subtitles %r', params)
subtitles = []
pids = set()
while True:
# query the server
xml = etree.fromstring(self.session.get(self.server_url + 'search/old', params=params, timeout=10).content)
# exit if no results
if not int(xml.find('pagination/results').text):
logger.debug('No subtitles found')
break
# loop over subtitles
for subtitle_xml in xml.findall('subtitle'):
# read xml elements
language = Language.fromietf(subtitle_xml.find('language').text)
hearing_impaired = 'n' in (subtitle_xml.find('flags').text or '')
page_link = subtitle_xml.find('url').text
pid = subtitle_xml.find('pid').text
releases = []
if subtitle_xml.find('release').text:
for release in subtitle_xml.find('release').text.split():
releases.append(re.sub(r'\.+$', '', release)) # remove trailing dots
title = subtitle_xml.find('title').text
season = int(subtitle_xml.find('tvSeason').text)
episode = int(subtitle_xml.find('tvEpisode').text)
year = int(subtitle_xml.find('year').text)
if is_episode:
subtitle = PodnapisiSubtitle(language, hearing_impaired, page_link, pid, releases, title,
season=season, episode=episode, year=year)
else:
subtitle = PodnapisiSubtitle(language, hearing_impaired, page_link, pid, releases, title,
year=year)
# ignore duplicates, see http://www.podnapisi.net/forum/viewtopic.php?f=62&t=26164&start=10#p213321
if pid in pids:
continue
logger.debug('Found subtitle %r', subtitle)
subtitles.append(subtitle)
pids.add(pid)
# stop on last page
if int(xml.find('pagination/current').text) >= int(xml.find('pagination/count').text):
break
# increment current page
params['page'] = int(xml.find('pagination/current').text) + 1
logger.debug('Getting page %d', params['page'])
return subtitles
def list_subtitles(self, video, languages):
if isinstance(video, Episode):
return [s for l in languages for s in self.query(l, video.series, season=video.season,
episode=video.episode, year=video.year)]
elif isinstance(video, Movie):
return [s for l in languages for s in self.query(l, video.title, year=video.year)]
def download_subtitle(self, subtitle):
# download as a zip
logger.info('Downloading subtitle %r')
r = self.session.get(self.server_url + subtitle.pid + '/download', params={'container': 'zip'}, timeout=10)
r.raise_for_status()
# open the zip
with ZipFile(io.BytesIO(r.content)) as zf:
if len(zf.namelist()) > 1:
raise ProviderError('More than one file to unzip')
subtitle.content = fix_line_ending(zf.read(zf.namelist()[0]))
+82
View File
@@ -0,0 +1,82 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import logging
from babelfish import Language
from requests import Session
from . import Provider, get_version
from .. import __version__
from ..subtitle import Subtitle, fix_line_ending
logger = logging.getLogger(__name__)
class TheSubDBSubtitle(Subtitle):
provider_name = 'thesubdb'
def __init__(self, language, hash):
super(TheSubDBSubtitle, self).__init__(language)
self.hash = hash
@property
def id(self):
return self.hash
def get_matches(self, video, hearing_impaired=False):
matches = super(TheSubDBSubtitle, self).get_matches(video, hearing_impaired=hearing_impaired)
# hash
if 'thesubdb' in video.hashes and video.hashes['thesubdb'] == self.hash:
matches.add('hash')
return matches
class TheSubDBProvider(Provider):
languages = {Language.fromalpha2(l) for l in ['en', 'es', 'fr', 'it', 'nl', 'pl', 'pt', 'ro', 'sv', 'tr']}
required_hash = 'thesubdb'
server_url = 'http://api.thesubdb.com/'
def initialize(self):
self.session = Session()
self.session.headers = {'User-Agent': 'SubDB/1.0 (subliminal/%s; https://github.com/Diaoul/subliminal)' %
get_version(__version__)}
def terminate(self):
self.session.close()
def query(self, hash):
# make the query
params = {'action': 'search', 'hash': hash}
logger.info('Searching subtitles %r', params)
r = self.session.get(self.server_url, params=params, timeout=10)
# handle subtitles not found and errors
if r.status_code == 404:
logger.debug('No subtitles found')
return []
r.raise_for_status()
# loop over languages
subtitles = []
for language_code in r.text.split(','):
language = Language.fromalpha2(language_code)
subtitle = TheSubDBSubtitle(language, hash)
logger.info('Found subtitle %r', subtitle)
subtitles.append(subtitle)
return subtitles
def list_subtitles(self, video, languages):
return [s for s in self.query(video.hashes['thesubdb']) if s.language in languages]
def download_subtitle(self, subtitle):
logger.info('Downloading subtitle %r')
params = {'action': 'download', 'hash': subtitle.hash, 'language': subtitle.language.alpha2}
r = self.session.get(self.server_url, params=params, timeout=10)
r.raise_for_status()
subtitle.content = fix_line_ending(r.content)
+202
View File
@@ -0,0 +1,202 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import io
import logging
import re
from zipfile import ZipFile
from babelfish import Language
from requests import Session
from . import ParserBeautifulSoup, Provider, get_version
from .. import __version__
from ..cache import EPISODE_EXPIRATION_TIME, SHOW_EXPIRATION_TIME, region
from ..exceptions import ProviderError
from ..subtitle import Subtitle, fix_line_ending, guess_matches, guess_properties
from ..video import Episode
logger = logging.getLogger(__name__)
link_re = re.compile('^(?P<series>.+?)(?: \(?\d{4}\)?| \((?:US|UK)\))? \((?P<first_year>\d{4})-\d{4}\)$')
episode_id_re = re.compile('^episode-\d+\.html$')
class TVsubtitlesSubtitle(Subtitle):
provider_name = 'tvsubtitles'
def __init__(self, language, page_link, subtitle_id, series, season, episode, year, rip, release):
super(TVsubtitlesSubtitle, self).__init__(language, page_link=page_link)
self.subtitle_id = subtitle_id
self.series = series
self.season = season
self.episode = episode
self.year = year
self.rip = rip
self.release = release
@property
def id(self):
return str(self.subtitle_id)
def get_matches(self, video, hearing_impaired=False):
matches = super(TVsubtitlesSubtitle, self).get_matches(video, hearing_impaired=hearing_impaired)
# series
if video.series and self.series.lower() == video.series.lower():
matches.add('series')
# season
if video.season and self.season == video.season:
matches.add('season')
# episode
if video.episode and self.episode == video.episode:
matches.add('episode')
# year
if self.year == video.year:
matches.add('year')
# release_group
if video.release_group and self.release and video.release_group.lower() in self.release.lower():
matches.add('release_group')
# other properties
if self.release:
matches |= guess_matches(video, guess_properties(self.release), partial=True)
if self.rip:
matches |= guess_matches(video, guess_properties(self.rip), partial=True)
return matches
class TVsubtitlesProvider(Provider):
languages = {Language('por', 'BR')} | {Language(l) for l in [
'ara', 'bul', 'ces', 'dan', 'deu', 'ell', 'eng', 'fin', 'fra', 'hun', 'ita', 'jpn', 'kor', 'nld', 'pol', 'por',
'ron', 'rus', 'spa', 'swe', 'tur', 'ukr', 'zho'
]}
video_types = (Episode,)
server_url = 'http://www.tvsubtitles.net/'
def initialize(self):
self.session = Session()
self.session.headers = {'User-Agent': 'Subliminal/%s' % get_version(__version__)}
def terminate(self):
self.session.close()
@region.cache_on_arguments(expiration_time=SHOW_EXPIRATION_TIME)
def search_show_id(self, series, year=None):
"""Search the show id from the `series` and `year`.
:param string series: series of the episode.
:param year: year of the series, if any.
:type year: int or None
:return: the show id, if any.
:rtype: int or None
"""
# make the search
logger.info('Searching show id for %r', series)
r = self.session.post(self.server_url + 'search.php', data={'q': series}, timeout=10)
r.raise_for_status()
# get the series out of the suggestions
soup = ParserBeautifulSoup(r.content, ['lxml', 'html.parser'])
show_id = None
for suggestion in soup.select('div.left li div a[href^="/tvshow-"]'):
match = link_re.match(suggestion.text)
if not match:
logger.error('Failed to match %s', suggestion.text)
continue
if match.group('series').lower() == series.lower():
if year is not None and int(match.group('first_year')) != year:
logger.debug('Year does not match')
continue
show_id = int(suggestion['href'][8:-5])
logger.debug('Found show id %d', show_id)
break
return show_id
@region.cache_on_arguments(expiration_time=EPISODE_EXPIRATION_TIME)
def get_episode_ids(self, show_id, season):
"""Get episode ids from the show id and the season.
:param int show_id: show id.
:param int season: season of the episode.
:return: episode ids per episode number.
:rtype: dict
"""
# get the page of the season of the show
logger.info('Getting the page of show id %d, season %d', show_id, season)
r = self.session.get(self.server_url + 'tvshow-%d-%d.html' % (show_id, season), timeout=10)
soup = ParserBeautifulSoup(r.content, ['lxml', 'html.parser'])
# loop over episode rows
episode_ids = {}
for row in soup.select('table#table5 tr'):
# skip rows that do not have a link to the episode page
if not row('a', href=episode_id_re):
continue
# extract data from the cells
cells = row('td')
episode = int(cells[0].text.split('x')[1])
episode_id = int(cells[1].a['href'][8:-5])
episode_ids[episode] = episode_id
if episode_ids:
logger.debug('Found episode ids %r', episode_ids)
else:
logger.warning('No episode ids found')
return episode_ids
def query(self, series, season, episode, year=None):
# search the show id
show_id = self.search_show_id(series, year)
if show_id is None:
logger.error('No show id found for %r (%r)', series, {'year': year})
return []
# get the episode ids
episode_ids = self.get_episode_ids(show_id, season)
if episode not in episode_ids:
logger.error('Episode %d not found', episode)
return []
# get the episode page
logger.info('Getting the page for episode %d', episode_ids[episode])
r = self.session.get(self.server_url + 'episode-%d.html' % episode_ids[episode], timeout=10)
soup = ParserBeautifulSoup(r.content, ['lxml', 'html.parser'])
# loop over subtitles rows
subtitles = []
for row in soup.select('.subtitlen'):
# read the item
language = Language.fromtvsubtitles(row.h5.img['src'][13:-4])
subtitle_id = int(row.parent['href'][10:-5])
page_link = self.server_url + 'subtitle-%d.html' % subtitle_id
rip = row.find('p', title='rip').text.strip() or None
release = row.find('p', title='release').text.strip() or None
subtitle = TVsubtitlesSubtitle(language, page_link, subtitle_id, series, season, episode, year, rip,
release)
logger.info('Found subtitle %s', subtitle)
subtitles.append(subtitle)
return subtitles
def list_subtitles(self, video, languages):
return [s for s in self.query(video.series, video.season, video.episode, video.year) if s.language in languages]
def download_subtitle(self, subtitle):
# download as a zip
logger.info('Downloading subtitle %r', subtitle)
r = self.session.get(self.server_url + 'download-%d.html' % subtitle.subtitle_id, timeout=10)
r.raise_for_status()
# open the zip
with ZipFile(io.BytesIO(r.content)) as zf:
if len(zf.namelist()) > 1:
raise ProviderError('More than one file to unzip')
subtitle.content = fix_line_ending(zf.read(zf.namelist()[0]))
+125
View File
@@ -0,0 +1,125 @@
# -*- coding: utf-8 -*-
"""
This module is responsible for calculating the :attr:`~subliminal.video.Video.scores` dicts
(:attr:`Episode.scores <subliminal.video.Episode.scores>` and :attr:`Movie.scores <subliminal.video.Movie.scores>`)
by assigning a score to a match.
.. note::
To avoid unnecessary dependency on `sympy <http://www.sympy.org/>`_ and boost subliminal's import time, the
resulting scores are hardcoded in their respective classes and manually updated when the set of equations change.
Available matches:
* hearing_impaired
* format
* release_group
* resolution
* video_codec
* audio_codec
* imdb_id
* hash
* title
* year
* series
* season
* episode
* tvdb_id
The :meth:`Subtitle.get_matches <subliminal.subtitle.Subtitle.get_matches>` method get the matches between the
:class:`~subliminal.subtitle.Subtitle` and the :class:`~subliminal.video.Video` and
:func:`~subliminal.subtitle.compute_score` computes the score.
"""
from __future__ import unicode_literals, print_function
from sympy import Eq, solve, symbols
# Symbols
hearing_impaired, format, release_group, resolution = symbols('hearing_impaired format release_group resolution')
video_codec, audio_codec, imdb_id, hash, title, year = symbols('video_codec audio_codec imdb_id hash title year')
series, season, episode, tvdb_id = symbols('series season episode tvdb_id')
def solve_episode_equations():
"""Solve the score equations for an :class:`~subliminal.video.Episode`.
The equations are the following:
1. hash = resolution + format + video_codec + audio_codec + series + season + episode + year + release_group
2. series = resolution + video_codec + audio_codec + season + episode + release_group + 1
3. year = series
4. tvdb_id = series + year
5. season = resolution + video_codec + audio_codec + 1
6. imdb_id = series + season + episode + year
7. format = video_codec + audio_codec
8. resolution = video_codec
9. video_codec = 2 * audio_codec
10. title = season + episode
11. season = episode
12. release_group = season
13. audio_codec = 2 * hearing_impaired
14. hearing_impaired = 1
:return: the result of the equations.
:rtype: dict
"""
equations = [
Eq(hash, resolution + format + video_codec + audio_codec + series + season + episode + year + release_group),
Eq(series, resolution + video_codec + audio_codec + season + episode + release_group + 1),
Eq(year, series),
Eq(tvdb_id, series + year),
Eq(season, resolution + video_codec + audio_codec + 1),
Eq(imdb_id, series + season + episode + year),
Eq(format, video_codec + audio_codec),
Eq(resolution, video_codec),
Eq(video_codec, 2 * audio_codec),
Eq(title, season + episode),
Eq(season, episode),
Eq(release_group, season),
Eq(audio_codec, 2 * hearing_impaired),
Eq(hearing_impaired, 1)
]
return solve(equations, [hearing_impaired, format, release_group, resolution, video_codec, audio_codec, imdb_id,
hash, series, season, episode, title, year, tvdb_id])
def solve_movie_equations():
"""Solve the score equations for a :class:`~subliminal.video.Movie`.
The equations are the following:
1. hash = resolution + format + video_codec + audio_codec + title + year + release_group
2. imdb_id = hash
3. resolution = video_codec
4. video_codec = 2 * audio_codec
5. format = video_codec + audio_codec
6. title = resolution + video_codec + audio_codec + year + 1
7. release_group = resolution + video_codec + audio_codec + 1
8. year = release_group + 1
9. audio_codec = 2 * hearing_impaired
10. hearing_impaired = 1
:return: the result of the equations.
:rtype: dict
"""
equations = [
Eq(hash, resolution + format + video_codec + audio_codec + title + year + release_group),
Eq(imdb_id, hash),
Eq(resolution, video_codec),
Eq(video_codec, 2 * audio_codec),
Eq(format, video_codec + audio_codec),
Eq(title, resolution + video_codec + audio_codec + year + 1),
Eq(release_group, resolution + video_codec + audio_codec + 1),
Eq(year, release_group + 1),
Eq(audio_codec, 2 * hearing_impaired),
Eq(hearing_impaired, 1)
]
return solve(equations, [hearing_impaired, format, release_group, resolution, video_codec, audio_codec, imdb_id,
hash, title, year])
-425
View File
@@ -1,425 +0,0 @@
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from itertools import groupby
import ConfigParser
import PluginWorker
import Queue
import locale
import logging
import mimetypes
import os
import plugins
import sys
import traceback
import locale
import encodingKludge as ek
SUPPORTED_FORMATS = 'video/x-msvideo', 'video/quicktime', 'video/x-matroska', 'video/mp4'
logger = logging.getLogger('subliminal')
SYS_ENCODING = None
try:
locale.setlocale(locale.LC_ALL, "")
SYS_ENCODING = locale.getpreferredencoding()
except (locale.Error, IOError):
pass
# for OSes that are poorly configured I'll just force UTF-8
if not SYS_ENCODING or SYS_ENCODING in ('ANSI_X3.4-1968', 'US-ASCII', 'ASCII'):
SYS_ENCODING = 'UTF-8'
class Subliminal(object):
"""Main Subliminal class"""
def __init__(self, config=True, cache_dir=True, workers=4, multi=False, force=False, max_depth=3, autostart=False, plugins_config=None):
# set default values
self.multi = multi
self.force = force
self.max_depth = max_depth
self.config = None
self.config_file = None
self.cache_dir = None
self.taskQueue = Queue.Queue()
self.resultQueue = Queue.Queue()
self._languages = None
self._plugins = self.listAPIPlugins()
self.workers = workers
self.plugins_config = plugins_config
if autostart:
self.startWorkers()
# handle configuration file preferences
try:
if config == True: # default configuration file
import xdg.BaseDirectory as bd
self.config = ConfigParser.SafeConfigParser({"languages": "", "plugins": ""})
self.config_file = ek.ek(os.path.join, bd.xdg_config_home, "subliminal", "config.ini")
if not ek.ek(os.path.exists, self.config_file): # configuration file doesn't exist, create it
self._createConfigFile()
else: # configuration file exists, load it
self._loadConfigFile()
elif config: # custom configuration file
self.config = ConfigParser.SafeConfigParser({"languages": "", "plugins": ""})
self.config_file = config
if not ek.ek(os.path.isfile, self.config_file): # custom configuration file doesn't exist, create it
self._createConfigFile()
else:
self._loadConfigFile()
except:
self.config = None
self.config_file = None
logger.error(u"Failed to use the configuration file, continue without it")
raise
# handle cache directory preferences
try:
if cache_dir == True: # default cache directory
import xdg.BaseDirectory as bd
self.cache_dir = ek.ek(os.path.join, bd.xdg_config_home, "subliminal", "cache")
if not ek.ek(os.path.exists, self.cache_dir): # cache directory doesn't exist, create it
ek.ek(os.mkdir, self.cache_dir)
logger.debug(u'Creating cache directory: %s' % self.cache_dir)
elif cache_dir: # custom configuration file
self.cache_dir = cache_dir
if not ek.ek(os.path.isdir, self.cache_dir): # custom v file doesn't exist, create it
ek.ek(os.mkdir, self.cache_dir)
logger.debug(u'Creating cache directory: %s' % self.cache_dir)
except:
self.cache_dir = None
logger.error(u"Failed to use the cache directory, continue without it")
def _loadConfigFile(self):
"""Load a configuration file specified in self.config_file"""
self.config.read(self.config_file)
self._loadLanguagesFromConfig()
self._loadPluginsFromConfig()
def _createConfigFile(self):
"""Create a configuration file specified in self.config_file"""
folder = ek.ek(os.path.dirname, self.config_file)
if not ek.ek(os.path.exists, folder):
logger.info(u"Creating folder: %s" % folder)
ek.ek(os.mkdir, folder)
# try to load a language from system
self._loadLanguageFromSystem()
self.config.set("DEFAULT", "languages", ",".join(self._languages))
self.config.set("DEFAULT", "plugins", ",".join(self._plugins))
self.config.add_section("SubtitleSource")
self.config.set("SubtitleSource", "key", "")
self._writeConfigFile()
logger.info(u"Creating configuration file: %s" % self.config_file)
logger.debug(u"Languages in created configuration file: %s" % self._languages)
logger.debug(u"Plugins in created configuration file: %s" % self._plugins)
@staticmethod
def listExistingPlugins():
"""List all possible plugins"""
return map(lambda x: x.__name__, plugins.PluginBase.PluginBase.__subclasses__())
@staticmethod
def listAPIPlugins():
"""List plugins that use API"""
return filter(Subliminal.isAPIBasedPlugin, Subliminal.listExistingPlugins())
def _writeConfigFile(self):
"""Write the configuration file"""
configfile = open(self.config_file, "w")
self.config.write(configfile)
configfile.close()
def get_languages(self):
"""Get current languages"""
return self._languages
def set_languages(self, value):
"""Set languages and save to configuration file if specified by the constructor"""
logger.debug(u"Setting languages to %s" % value)
self._languages = value
if self.config:
self._saveLanguagesToConfig()
@staticmethod
def isValidLanguage(language):
"""Check if a language is valid"""
if len(language) != 2:
logger.error(u"Language %s is not valid" % language)
return False
return True
def _saveLanguagesToConfig(self):
"""Save languages to configuration file"""
logger.debug(u"Saving languages %s to configuration file" % self._languages)
self.config.set("DEFAULT", "languages", ",".join(self._languages))
self._writeConfigFile()
def _loadLanguagesFromConfig(self):
"""Load languages from configuration file"""
configLanguages = self.config.get("DEFAULT", "languages")
logger.debug(u"Loading languages %s from configuration file" % configLanguages)
if not configLanguages:
self._languages = None
return
self._languages = filter(self.isValidLanguage, map(str.strip, configLanguages.split(",")))
def _loadLanguageFromSystem(self):
"""Load language from system"""
logger.debug(u"Loading language from system")
try:
self._languages = [locale.getdefaultlocale()[0][:2]]
logger.debug(u"Language %s loaded from system" % self._languages)
except:
logger.warning(u"Could not read language from system")
def get_plugins(self):
"""Get current plugins"""
return self._plugins
def set_plugins(self, value):
"""Set plugins and save to configuration file if specified by the constructor"""
logger.debug(u"Setting plugins to %s" % value)
self._plugins = filter(self.isValidPlugin, value)
if self.config:
self._savePluginsToConfig()
@staticmethod
def isValidPlugin(pluginName):
"""Check if a plugin is valid (exists)"""
if pluginName not in Subliminal.listExistingPlugins():
logger.error(u"Plugin %s does not exist" % pluginName)
return False
return True
@staticmethod
def isAPIBasedPlugin(pluginName):
"""Check if a plugin is API-based"""
if not getattr(plugins, pluginName).api_based:
return False
return True
def _savePluginsToConfig(self):
"""Save plugins to configuration file"""
logger.debug(u"Saving plugins %s to configuration file" % self._plugins)
self.config.set("DEFAULT", "plugins", ",".join(self._plugins))
self._writeConfigFile()
def _loadPluginsFromConfig(self):
"""Load plugins from configuration file"""
configPlugins = self.config.get("DEFAULT", "plugins")
logger.debug(u"Loading plugins %s from configuration file" % configPlugins)
self._plugins = filter(self.isValidPlugin, map(str.strip, configPlugins.split(",")))
# getters/setters for the property _languages and _plugins
languages = property(get_languages, set_languages)
plugins = property(get_plugins, set_plugins)
def deactivatePlugin(self, plugin):
"""Deactivate a plugin"""
self._plugins.remove(plugin)
if self.config:
self._savePluginsToConfig()
def activatePlugin(self, plugin):
"""Activate a plugin"""
if self.isValidPlugin(plugin):
self._plugins.append(plugin)
if self.config:
self._savePluginsToConfig()
def listSubtitles(self, entries):
"""
Searches subtitles within the active plugins and returns all found matching subtitles.
entries can be:
- filepaths
- folderpaths (N.B. internal recursive search function will be used)
- filenames
"""
search_results = []
if isinstance(entries, basestring):
entries = [ek.fixStupidEncodings(entries)]
elif not isinstance(entries, list):
raise TypeError('Entries should be a list or a string')
for e in entries:
search_results.extend(self._recursiveSearch(e))
taskCount = 0
for (l, f) in search_results:
taskCount += self.searchSubtitlesThreaded(f, l)
subtitles = []
for i in range(taskCount):
subtitles.extend(self.resultQueue.get(timeout=10))
return subtitles
@staticmethod
def arrangeSubtitles(subtitles):
"""Arrange subtitles in a handy dict by filename, language and plugin"""
arrangedSubtitles = {}
for (filename, subsByFilename) in groupby(sorted(subtitles, key=lambda x: x["filename"]), lambda x: x["filename"]):
arrangedSubtitles[filename] = {}
for (language, subsByFilenameByLanguage) in groupby(sorted(subsByFilename, key=lambda x: x["lang"]), lambda x: x["lang"]):
arrangedSubtitles[filename][language] = {}
for (plugin, subsByFilenameByLanguageByPlugin) in groupby(sorted(subsByFilenameByLanguage, key=lambda x: x["plugin"]), lambda x: x["plugin"]):
arrangedSubtitles[filename][language][plugin] = sorted(list(subsByFilenameByLanguageByPlugin))
return arrangedSubtitles
def sortSubtitlesRaw(self, subtitles):
"""Sort subtitles using user defined languages and plugins"""
return sorted(subtitles, cmp=self._cmpSubtitles)
def _cmpSubtitles(self, x, y):
"""
Compares 2 subtitles elements x and y. Returns -1 if x < y, 0 if =, 1 if >
Use filename, languages and plugin comparison
"""
filenames = sorted([x['filename'], y['filename']])
if x['filename'] != y['filename'] and filenames.index(x['filename']) < filenames(y['filename']):
return - 1
if x['filename'] != y['filename'] and filenames.index(x['filename']) > filenames(y['filename']):
return 1
if self._languages and self._languages.index(x['lang']) < self._languages.index(y['lang']):
return - 1
if self._languages and self._languages.index(x['lang']) > self._languages.index(y['lang']):
return 1
if self._plugins.index(x['plugin']) < self._plugins.index(y['plugin']):
return - 1
if self._plugins.index(x['plugin']) > self._plugins.index(y['plugin']):
return 1
return 0
def searchSubtitlesThreaded(self, filenames, languages):
"""
Makes workers search for subtitles in different languages for multiple filenames and puts the result in the result queue.
Aslo split the work in multiple tasks
When the function returns, all the results may not be available yet!
"""
logger.info(u"Searching subtitles for %s with languages %s" % (filenames, languages))
tasks = []
for pluginName in self._plugins:
try:
plugin = getattr(plugins, pluginName)(self.getConfigDict())
except:
logger.debug(traceback.print_exc())
continue
# split tasks if the plugin can't handle multi-thing queries
tasks.extend(plugin.splitTask({'task': 'list', 'plugin': pluginName, 'languages': languages, 'filenames': filenames, 'config': self.getConfigDict()}))
for t in tasks:
self.taskQueue.put(t)
return len(tasks)
def downloadSubtitlesThreaded(self, subtitles):
"""
Makes workers download subtitles and puts the result in the result queue.
When the function returns, all the results may not be available yet!
"""
# 1 task per file if not multi, 1 task per file and per language if multi
taskCount = 0
for (filename, subsByFilename) in groupby(sorted(subtitles, key=lambda x: x["filename"]), lambda x: x["filename"]):
if not self.multi:
self.taskQueue.put({'task': 'download', 'subtitle': sorted(list(subsByFilename), cmp=self._cmpSubtitles), 'config': self.getConfigDict()})
taskCount += 1
continue
for (language, subsByFilenameByLanguage) in groupby(sorted(subsByFilename, key=lambda x: x["lang"]), lambda x: x["lang"]):
self.taskQueue.put({'task': 'download', 'subtitle': sorted(list(subsByFilenameByLanguage), cmp=self._cmpSubtitles), 'config': self.getConfigDict()})
taskCount += 1
return taskCount
def downloadSubtitles(self, entries):
"""Download subtitles recursivly in entries"""
subtitles = self.listSubtitles(entries)
taskCount = self.downloadSubtitlesThreaded(subtitles)
paths = []
for i in range(taskCount):
paths.append(self.resultQueue.get(timeout=10))
return paths
def _recursiveSearch(self, entry, depth=0):
"""
Searches files in the entry
This will output a list of tuples (filename, languages)
"""
if depth > self.max_depth and self.max_depth != 0: # we do not want to search the whole file system except if max_depth = 0
return []
if ek.ek(os.path.isfile, entry): # a file? scan it
if depth != 0: # only check for valid format if recursing, trust the user
mimetypes.add_type("video/x-matroska", ".mkv")
mimetype = mimetypes.guess_type(entry)[0]
if mimetype not in SUPPORTED_FORMATS:
return []
basepath = ek.fixStupidEncodings(ek.ek(os.path.splitext, entry)[0])
# check for .xx.srt if needed
if self.multi and self.languages:
if self.force:
return [(self.languages, [ek.ek(os.path.normpath, entry)])]
needed_languages = self.languages[:]
for l in self.languages:
if ek.ek(os.path.exists, basepath + '.%s.srt' % l):
logger.info(u"Skipping language %s for file %s as it already exists. Use the --force option to force the download" % (l, entry))
needed_languages.remove(l)
if needed_languages:
return [(needed_languages, [ek.ek(os.path.normpath, entry)])]
return []
# single subtitle download: .srt
if self.force or not ek.ek(os.path.exists, basepath + '.srt'):
return [(self.languages, [ek.ek(os.path.normpath, entry)])]
if ek.ek(os.path.isdir, entry): # a dir? recurse
#TODO if hidden folder, don't keep going (how to handle windows/mac/linux ?)
files = []
for e in ek.ek(os.listdir, entry):
files.extend(self._recursiveSearch(ek.ek(os.path.join, entry, e), depth + 1))
files.sort()
grouped_files = []
for languages, group in groupby(files, lambda t: t[0]):
filenames = []
for t in group:
filenames.extend(t[1])
grouped_files.append((languages, filenames))
return grouped_files
return [] # anything else, nothing.
def startWorkers(self):
"""Create a pool of workers and start them"""
self.pool = []
for i in range(self.workers):
worker = PluginWorker.PluginWorker(self.taskQueue, self.resultQueue)
worker.start()
self.pool.append(worker)
logger.debug(u"Worker %s added to the pool" % worker.name)
def sendStopSignal(self):
"""Send a stop signal the pool of workers (poison pill)"""
logger.debug(u"Sending %d poison pills into the task queue" % self.workers)
for i in range(self.workers):
self.taskQueue.put(None)
def stopWorkers(self):
"""Stop workers using a stop signal and wait for them to terminate properly"""
self.sendStopSignal()
for worker in self.pool:
worker.join()
def getConfigDict(self):
"""Produce a dict with configuration items. Used by plugins to read configuration"""
config = {}
config['multi'] = self.multi
config['cache_dir'] = self.cache_dir
if self.config:
config['subtitlesource_key'] = self.config.get('SubtitleSource', 'key')
if self.plugins_config and 'subtitlesource_key' in self.plugins_config:
config['subtitlesource_key'] = self.plugins_config['subtitlesource_key']
config['force'] = self.force
return config
+302
View File
@@ -0,0 +1,302 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import logging
import os
import chardet
from guessit.matchtree import MatchTree
from guessit.plugins.transformers import get_transformer
import pysrt
from .video import Episode, Movie
logger = logging.getLogger(__name__)
class Subtitle(object):
"""Base class for subtitle.
:param language: language of the subtitle.
:type language: :class:`~babelfish.language.Language`
:param bool hearing_impaired: whether or not the subtitle is hearing impaired.
:param page_link: URL of the web page from which the subtitle can be downloaded.
:type page_link: str
"""
#: Name of the provider that returns that class of subtitle
provider_name = ''
def __init__(self, language, hearing_impaired=False, page_link=None):
#: Language of the subtitle
self.language = language
#: Whether or not the subtitle is hearing impaired
self.hearing_impaired = hearing_impaired
#: URL of the web page from which the subtitle can be downloaded
self.page_link = page_link
#: Content as bytes
self.content = None
#: Encoding to decode with when accessing :attr:`text`
self.encoding = None
@property
def id(self):
"""Unique identifier of the subtitle."""
raise NotImplementedError
@property
def text(self):
"""Content as string.
If :attr:`encoding` is None, the encoding is guessed with :meth:`guess_encoding`
"""
if not self.content:
return
return self.content.decode(self.encoding or self.guess_encoding(), errors='replace')
def is_valid(self):
"""Check if a :attr:`text` is a valid SubRip format.
:return: whether or not the subtitle is valid.
:rtype: bool
"""
if not self.text:
return False
try:
pysrt.from_string(self.text, error_handling=pysrt.ERROR_RAISE)
except pysrt.Error as e:
if e.args[0] < 80:
return False
return True
def guess_encoding(self):
"""Guess encoding using the language, falling back on chardet.
:return: the guessed encoding.
:rtype: str
"""
logger.info('Guessing encoding for language %s', self.language)
# always try utf-8 first
encodings = ['utf-8']
# add language-specific encodings
if self.language.alpha3 == 'zho':
encodings.extend(['gb18030', 'big5'])
elif self.language.alpha3 == 'jpn':
encodings.append('shift-jis')
elif self.language.alpha3 == 'ara':
encodings.append('windows-1256')
elif self.language.alpha3 == 'heb':
encodings.append('windows-1255')
elif self.language.alpha3 == 'tur':
encodings.extend(['iso-8859-9', 'windows-1254'])
elif self.language.alpha3 == 'pol':
# Eastern European Group 1
encodings.extend(['windows-1250'])
elif self.language.alpha3 == 'bul':
# Eastern European Group 2
encodings.extend(['windows-1251'])
else:
# Western European (windows-1252)
encodings.append('latin-1')
# try to decode
logger.debug('Trying encodings %r', encodings)
for encoding in encodings:
try:
self.content.decode(encoding)
except UnicodeDecodeError:
pass
else:
logger.info('Guessed encoding %s', encoding)
return encoding
logger.warning('Could not guess encoding from language')
# fallback on chardet
encoding = chardet.detect(self.content)['encoding']
logger.info('Chardet found encoding %s', encoding)
return encoding
def get_matches(self, video, hearing_impaired=False):
"""Get the matches against the `video`.
:param video: the video to get the matches with.
:type video: :class:`~subliminal.video.Video`
:param bool hearing_impaired: hearing impaired preference.
:return: matches of the subtitle.
:rtype: set
"""
matches = set()
# hearing_impaired
if self.hearing_impaired == hearing_impaired:
matches.add('hearing_impaired')
return matches
def __hash__(self):
return hash(self.provider_name + '-' + self.id)
def __repr__(self):
return '<%s %r [%s]>' % (self.__class__.__name__, self.id, self.language)
def compute_score(matches, video, scores=None):
"""Compute the score of the `matches` against the `video`.
Some matches count as much as a combination of others in order to level the final score:
* `hash` removes everything else
* For :class:`~subliminal.video.Episode`
* `imdb_id` removes `series`, `tvdb_id`, `season`, `episode`, `title` and `year`
* `tvdb_id` removes `series` and `year`
* `title` removes `season` and `episode`
:param video: the video to get the score with.
:type video: :class:`~subliminal.video.Video`
:param dict scores: scores to use, if `None`, the :attr:`~subliminal.video.Video.scores` from the video are used.
:return: score of the subtitle.
:rtype: int
"""
final_matches = matches.copy()
scores = scores or video.scores
logger.info('Computing score for matches %r and %r', matches, video)
# remove equivalent match combinations
if 'hash' in final_matches:
final_matches &= {'hash', 'hearing_impaired'}
elif isinstance(video, Episode):
if 'imdb_id' in final_matches:
final_matches -= {'series', 'tvdb_id', 'season', 'episode', 'title', 'year'}
if 'tvdb_id' in final_matches:
final_matches -= {'series', 'year'}
if 'title' in final_matches:
final_matches -= {'season', 'episode'}
# compute score
logger.debug('Final matches: %r', final_matches)
score = sum((scores[match] for match in final_matches))
logger.info('Computed score %d', score)
# ensure score is capped by the best possible score (hash + preferences)
assert score <= scores['hash'] + scores['hearing_impaired']
return score
def get_subtitle_path(video_path, language=None, extension='.srt'):
"""Get the subtitle path using the `video_path` and `language`.
:param str video_path: path to the video.
:param language: language of the subtitle to put in the path.
:type language: :class:`~babelfish.language.Language`
:param str extension: extension of the subtitle.
:return: path of the subtitle.
:rtype: str
"""
subtitle_root = os.path.splitext(video_path)[0]
if language:
subtitle_root += '.' + str(language)
return subtitle_root + extension
def guess_matches(video, guess, partial=False):
"""Get matches between a `video` and a `guess`.
If a guess is `partial`, the absence information won't be counted as a match.
:param video: the video.
:type video: :class:`~subliminal.video.Video`
:param guess: the guess.
:type guess: dict
:param bool partial: whether or not the guess is partial.
:return: matches between the `video` and the `guess`.
:rtype: set
"""
matches = set()
if isinstance(video, Episode):
# series
if video.series and 'series' in guess and guess['series'].lower() == video.series.lower():
matches.add('series')
# season
if video.season and 'season' in guess and guess['season'] == video.season:
matches.add('season')
# episode
if video.episode and 'episodeNumber' in guess and guess['episodeNumber'] == video.episode:
matches.add('episode')
# year
if video.year and 'year' in guess and guess['year'] == video.year:
matches.add('year')
# count "no year" as an information
if not partial and video.year is None and 'year' not in guess:
matches.add('year')
elif isinstance(video, Movie):
# year
if video.year and 'year' in guess and guess['year'] == video.year:
matches.add('year')
# title
if video.title and 'title' in guess and guess['title'].lower() == video.title.lower():
matches.add('title')
# release_group
if video.release_group and 'releaseGroup' in guess and guess['releaseGroup'].lower() == video.release_group.lower():
matches.add('release_group')
# resolution
if video.resolution and 'screenSize' in guess and guess['screenSize'] == video.resolution:
matches.add('resolution')
# format
if video.format and 'format' in guess and guess['format'].lower() == video.format.lower():
matches.add('format')
# video_codec
if video.video_codec and 'videoCodec' in guess and guess['videoCodec'] == video.video_codec:
matches.add('video_codec')
# audio_codec
if video.audio_codec and 'audioCodec' in guess and guess['audioCodec'] == video.audio_codec:
matches.add('audio_codec')
return matches
def guess_properties(string):
"""Extract properties from `string` using guessit's `guess_properties` transformer.
:param str string: the string potentially containing properties.
:return: the guessed properties.
:rtype: dict
"""
mtree = MatchTree(string)
get_transformer('guess_properties').process(mtree)
return mtree.matched()
def fix_line_ending(content):
"""Fix line ending of `content` by changing it to \n.
:param bytes content: content of the subtitle.
:return: the content with fixed line endings.
:rtype: bytes
"""
return content.replace(b'\r\n', b'\n').replace(b'\r', b'\n')
-206
View File
@@ -1,206 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Subliminal - Subtitles, faster than your thoughts
# Copyright (c) 2008-2011 Patrick Dessalle <patrick@dessalle.be>
# Copyright (c) 2011 Antoine Bertin <diaoulael@gmail.com>
#
# This file is part of Subliminal.
#
# Subliminal is free software; you can redistribute it and/or modify it under
# the terms of the Lesser GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Subliminal is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# Lesser GNU General Public License for more details.
#
# You should have received a copy of the Lesser GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import unittest
import logging
import os
logging.basicConfig(level=logging.DEBUG, format='%(name)-24s %(levelname)-8s %(message)s')
if not os.path.exists('/tmp/subliminal/cache'):
os.mkdir('/tmp/subliminal/cache')
config = {'multi': True, 'cache_dir': '/tmp/subliminal/cache', 'subtitlesource_key': '', 'force': False}
class Addic7edListTestCase1(unittest.TestCase):
def runTest(self):
from subliminal.plugins import Addic7ed
plugin = Addic7ed(config)
results = plugin.list(["The.Big.Bang.Theory.S03E13.HDTV.XviD-2HD.mkv"], ["en", "fr"])
print results
assert len(results) > 0
class Addic7edListTestCase2(unittest.TestCase):
def runTest(self):
from subliminal.plugins import Addic7ed
plugin = Addic7ed(config)
results = plugin.list(["Dexter.S05E02.720p.HDTV.x264-IMMERSE.mkv"], ["en", "fr"])
print results
assert len(results) > 0
class Addic7edDownloadTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import Addic7ed
plugin = Addic7ed(config)
results = plugin.download(plugin.list(["/tmp/The.Big.Bang.Theory.S03E13.HDTV.XviD-2HD.mkv"], ["en", "fr"])[0])
print results
assert len(results) > 0
class BierDopjeListTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import BierDopje
plugin = BierDopje(config)
results = plugin.list(["The.Big.Bang.Theory.S03E13.HDTV.XviD-2HD.mkv"], ["en", "fr"])
print results
assert len(results) > 0
class BierDopjeListExceptionTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import BierDopje
plugin = BierDopje(config)
results = plugin.list(["The.Office.US.S07E08.Viewing.Party.HDTV.XviD-FQM.[VTV].avi"], ["en", "fr"])
print results
assert len(results) > 0
class BierDopjeListTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import BierDopje
plugin = BierDopje(config)
results = plugin.list(["The.Big.Bang.Theory.S03E13.HDTV.XviD-2HD.mkv"], ["en", "fr"])
print results
assert len(results) > 0
class OpenSubtitlesQueryTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import OpenSubtitles
plugin = OpenSubtitles()
results = plugin.query('Night.Watch.2004.CD1.DVDRiP.XViD-FiCO.avi', moviehash="09a2c497663259cb", bytesize="733589504") # http://trac.opensubtitles.org/projects/opensubtitles/wiki/XMLRPC
print results
assert len(results) > 0
class OpenSubtitlesQueryNoHashTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import OpenSubtitles
plugin = OpenSubtitles()
results = plugin.query('Night.Watch.2004.CD1.DVDRiP.XViD-FiCO.avi', languages=['en', 'fr']) # http://trac.opensubtitles.org/projects/opensubtitles/wiki/XMLRPC
print results
assert len(results) > 0
class OpenSubtitlesListTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import OpenSubtitles
plugin = OpenSubtitles()
results = plugin.download(plugin.query('/tmp/Night.Watch.2004.CD1.DVDRiP.XViD-FiCO.avi', moviehash="09a2c497663259cb", bytesize="733589504")[0]) # http://trac.opensubtitles.org/projects/opensubtitles/wiki/XMLRPC
assert len(results) > 0
class SubtitulosListTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import Subtitulos
plugin = Subtitulos()
results = plugin.list(["The.Big.Bang.Theory.S03E13.HDTV.XviD-2HD.mkv"], ['en', 'fr'])
print results
assert len(results) > 0
class SubtitulosDownloadTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import Subtitulos
plugin = Subtitulos()
results = plugin.download(plugin.list(["/tmp/The.Big.Bang.Theory.S03E13.HDTV.XviD-2HD.mkv"], ['en', 'fr'])[0])
print results
assert len(results) > 0
class TheSubDBQueryTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import TheSubDB
plugin = TheSubDB()
results = plugin.query("test.mkv", "edc1981d6459c6111fe36205b4aff6c2")
print results
assert len(results) > 0
class TheSubDBDownloadTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import TheSubDB
plugin = TheSubDB()
results = plugin.download(plugin.query("/tmp/test.mkv", "edc1981d6459c6111fe36205b4aff6c2")[0])
print results
assert len(results) > 0
class SubsWikiListTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import SubsWiki
plugin = SubsWiki()
results = plugin.list(["The.Big.Bang.Theory.S03E13.HDTV.XviD-2HD.mkv"], ['en', 'es'])
print results
assert len(results) > 0
class SubsWikiDownloadTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import SubsWiki
plugin = SubsWiki()
results = plugin.download(plugin.list(["/tmp/The.Big.Bang.Theory.S03E13.HDTV.XviD-2HD.mkv"], ['en', 'es'])[0])
print results
assert len(results) > 0
'''
class PodnapisiQueryTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import Podnapisi
plugin = Podnapisi()
results = plugin.query('09a2c497663259cb', ["en", "fr"])
print results
assert len(results) > 5
class SubSceneListTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import SubScene
plugin = SubScene()
results = plugin.list(["Dexter.S04E01.HDTV.XviD-NoTV.avi"], ['en', 'fr'])
print results
assert len(results) > 0, "No result could be found for Dexter.S04E01.HDTV.XviD-NoTV.avi and no languages"
class SubSceneDownloadTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import SubScene
plugin = SubScene()
results = plugin.download(plugin.list(["Dexter.S04E01.HDTV.XviD-NoTV.avi"], ['en', 'fr'])[0])
print results
assert len(results) > 0, "No result could be found for Dexter.S04E01.HDTV.XviD-NoTV.avi and no languages"
class SubtitleSourceListTestCase(unittest.TestCase):
def runTest(self):
from subliminal.plugins import SubtitleSource
plugin = SubtitleSource()
results = plugin.list(["PrisM-Inception.2010"], ['en', 'fr'])
print results
assert len(results) > 0, "No result could be found for PrisM-Inception.2010"
'''
if __name__ == "__main__":
unittest.main()
+517
View File
@@ -0,0 +1,517 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, division
from datetime import datetime, timedelta
import hashlib
import logging
import os
import struct
from babelfish import Error as BabelfishError, Language
from enzyme import Error as EnzymeError, MKV
from guessit import guess_episode_info, guess_file_info, guess_movie_info
logger = logging.getLogger(__name__)
#: Video extensions
VIDEO_EXTENSIONS = ('.3g2', '.3gp', '.3gp2', '.3gpp', '.60d', '.ajp', '.asf', '.asx', '.avchd', '.avi', '.bik',
'.bix', '.box', '.cam', '.dat', '.divx', '.dmf', '.dv', '.dvr-ms', '.evo', '.flc', '.fli',
'.flic', '.flv', '.flx', '.gvi', '.gvp', '.h264', '.m1v', '.m2p', '.m2ts', '.m2v', '.m4e',
'.m4v', '.mjp', '.mjpeg', '.mjpg', '.mkv', '.moov', '.mov', '.movhd', '.movie', '.movx', '.mp4',
'.mpe', '.mpeg', '.mpg', '.mpv', '.mpv2', '.mxf', '.nsv', '.nut', '.ogg', '.ogm', '.omf', '.ps',
'.qt', '.ram', '.rm', '.rmvb', '.swf', '.ts', '.vfw', '.vid', '.video', '.viv', '.vivo', '.vob',
'.vro', '.wm', '.wmv', '.wmx', '.wrap', '.wvx', '.wx', '.x264', '.xvid')
#: Subtitle extensions
SUBTITLE_EXTENSIONS = ('.srt', '.sub', '.smi', '.txt', '.ssa', '.ass', '.mpl')
class Video(object):
"""Base class for videos.
Represent a video, existing or not. Attributes have an associated score based on equations defined in
:mod:`~subliminal.score`.
:param str name: name or path of the video.
:param str format: format of the video (HDTV, WEB-DL, BluRay, ...).
:param str release_group: release group of the video.
:param str resolution: resolution of the video stream (480p, 720p, 1080p or 1080i).
:param str video_codec: codec of the video stream.
:param str audio_codec: codec of the main audio stream.
:param int imdb_id: IMDb id of the video.
:param dict hashes: hashes of the video file by provider names.
:param int size: size of the video file in bytes.
:param set subtitle_languages: existing subtitle languages
"""
#: Score by match property
scores = {}
def __init__(self, name, format=None, release_group=None, resolution=None, video_codec=None, audio_codec=None,
imdb_id=None, hashes=None, size=None, subtitle_languages=None):
#: Name or path of the video
self.name = name
#: Format of the video (HDTV, WEB-DL, BluRay, ...)
self.format = format
#: Release group of the video
self.release_group = release_group
#: Resolution of the video stream (480p, 720p, 1080p or 1080i)
self.resolution = resolution
#: Codec of the video stream
self.video_codec = video_codec
#: Codec of the main audio stream
self.audio_codec = audio_codec
#: IMDb id of the video
self.imdb_id = imdb_id
#: Hashes of the video file by provider names
self.hashes = hashes or {}
#: Size of the video file in bytes
self.size = size
#: Existing subtitle languages
self.subtitle_languages = subtitle_languages or set()
@property
def exists(self):
"""Test whether the video exists."""
return os.path.exists(self.name)
@property
def age(self):
"""Age of the video."""
if self.exists:
return datetime.utcnow() - datetime.utcfromtimestamp(os.path.getmtime(self.name))
return timedelta()
@classmethod
def fromguess(cls, name, guess):
"""Create an :class:`Episode` or a :class:`Movie` with the given `name` based on the `guess`.
:param str name: name of the video.
:param dict guess: guessed data, like a :class:`~guessit.guess.Guess` instance.
:raise: :class:`ValueError` if the `type` of the `guess` is invalid
"""
if guess['type'] == 'episode':
return Episode.fromguess(name, guess)
if guess['type'] == 'movie':
return Movie.fromguess(name, guess)
raise ValueError('The guess must be an episode or a movie guess')
@classmethod
def fromname(cls, name):
"""Shortcut for :meth:`fromguess` with a `guess` guessed from the `name`.
:param str name: name of the video.
"""
return cls.fromguess(name, guess_file_info(name))
def __repr__(self):
return '<%s [%r]>' % (self.__class__.__name__, self.name)
def __hash__(self):
return hash(self.name)
class Episode(Video):
"""Episode :class:`Video`.
Scores are defined by a set of equations, see :func:`~subliminal.score.solve_episode_equations`
:param str series: series of the episode.
:param int season: season number of the episode.
:param int episode: episode number of the episode.
:param str title: title of the episode.
:param int year: year of series.
:param int tvdb_id: TVDB id of the episode
"""
#: Score by match property
scores = {'hash': 137, 'imdb_id': 110, 'tvdb_id': 88, 'series': 44, 'year': 44, 'title': 22, 'season': 11,
'episode': 11, 'release_group': 11, 'format': 6, 'video_codec': 4, 'resolution': 4, 'audio_codec': 2,
'hearing_impaired': 1}
def __init__(self, name, series, season, episode, format=None, release_group=None, resolution=None,
video_codec=None, audio_codec=None, imdb_id=None, hashes=None, size=None, subtitle_languages=None,
title=None, year=None, tvdb_id=None):
super(Episode, self).__init__(name, format, release_group, resolution, video_codec, audio_codec, imdb_id,
hashes, size, subtitle_languages)
#: Series of the episode
self.series = series
#: Season number of the episode
self.season = season
#: Episode number of the episode
self.episode = episode
#: Title of the episode
self.title = title
#: Year of series
self.year = year
#: TVDB id of the episode
self.tvdb_id = tvdb_id
@classmethod
def fromguess(cls, name, guess):
if guess['type'] != 'episode':
raise ValueError('The guess must be an episode guess')
if 'series' not in guess or 'season' not in guess or 'episodeNumber' not in guess:
raise ValueError('Insufficient data to process the guess')
return cls(name, guess['series'], guess['season'], guess['episodeNumber'], format=guess.get('format'),
release_group=guess.get('releaseGroup'), resolution=guess.get('screenSize'),
video_codec=guess.get('videoCodec'), audio_codec=guess.get('audioCodec'),
title=guess.get('title'), year=guess.get('year'))
@classmethod
def fromname(cls, name):
return cls.fromguess(name, guess_episode_info(name))
def __repr__(self):
if self.year is None:
return '<%s [%r, %dx%d]>' % (self.__class__.__name__, self.series, self.season, self.episode)
return '<%s [%r, %d, %dx%d]>' % (self.__class__.__name__, self.series, self.year, self.season, self.episode)
class Movie(Video):
"""Movie :class:`Video`.
Scores are defined by a set of equations, see :func:`~subliminal.score.solve_movie_equations`
:param str title: title of the movie.
:param int year: year of the movie
"""
#: Score by match property
scores = {'hash': 62, 'imdb_id': 62, 'title': 23, 'year': 12, 'release_group': 11, 'format': 6, 'video_codec': 4,
'resolution': 4, 'audio_codec': 2, 'hearing_impaired': 1}
def __init__(self, name, title, format=None, release_group=None, resolution=None, video_codec=None,
audio_codec=None, imdb_id=None, hashes=None, size=None, subtitle_languages=None, year=None):
super(Movie, self).__init__(name, format, release_group, resolution, video_codec, audio_codec, imdb_id, hashes,
size, subtitle_languages)
#: Title of the movie
self.title = title
#: Year of the movie
self.year = year
@classmethod
def fromguess(cls, name, guess):
if guess['type'] != 'movie':
raise ValueError('The guess must be a movie guess')
if 'title' not in guess:
raise ValueError('Insufficient data to process the guess')
return cls(name, guess['title'], format=guess.get('format'), release_group=guess.get('releaseGroup'),
resolution=guess.get('screenSize'), video_codec=guess.get('videoCodec'),
audio_codec=guess.get('audioCodec'), year=guess.get('year'))
@classmethod
def fromname(cls, name):
return cls.fromguess(name, guess_movie_info(name))
def __repr__(self):
if self.year is None:
return '<%s [%r]>' % (self.__class__.__name__, self.title)
return '<%s [%r, %d]>' % (self.__class__.__name__, self.title, self.year)
def search_external_subtitles(path):
"""Search for external subtitles from a video `path` and their associated language.
:param str path: path to the video.
:return: found subtitles with their languages.
:rtype: dict
"""
dirpath, filename = os.path.split(path)
dirpath = dirpath or '.'
fileroot, fileext = os.path.splitext(filename)
subtitles = {}
for p in os.listdir(dirpath):
# skip badly encoded filenames
if isinstance(p, bytes): # pragma: no cover
logger.error('Skipping badly encoded filename %r in %r', p.decode('utf-8', errors='replace'), dirpath)
continue
# keep only valid subtitle filenames
if not p.startswith(fileroot) or not p.endswith(SUBTITLE_EXTENSIONS):
continue
# extract the potential language code
language_code = p[len(fileroot):-len(os.path.splitext(p)[1])].replace(fileext, '').replace('_', '-')[1:]
# default language is undefined
language = Language('und')
# attempt to parse
if language_code:
try:
language = Language.fromietf(language_code)
except ValueError:
logger.error('Cannot parse language code %r', language_code)
subtitles[p] = language
logger.debug('Found subtitles %r', subtitles)
return subtitles
def scan_video(path, subtitles=True, embedded_subtitles=True):
"""Scan a video and its subtitle languages from a video `path`.
:param str path: existing path to the video.
:param bool subtitles: scan for subtitles with the same name.
:param bool embedded_subtitles: scan for embedded subtitles.
:return: the scanned video.
:rtype: :class:`Video`
"""
# check for non-existing path
if not os.path.exists(path):
raise ValueError('Path does not exist')
# check video extension
if not path.endswith(VIDEO_EXTENSIONS):
raise ValueError('%s is not a valid video extension' % os.path.splitext(path)[1])
dirpath, filename = os.path.split(path)
logger.info('Scanning video %r in %r', filename, dirpath)
# guess
video = Video.fromguess(path, guess_file_info(path))
# size and hashes
video.size = os.path.getsize(path)
if video.size > 10485760:
logger.debug('Size is %d', video.size)
video.hashes['opensubtitles'] = hash_opensubtitles(path)
video.hashes['thesubdb'] = hash_thesubdb(path)
logger.debug('Computed hashes %r', video.hashes)
else:
logger.warning('Size is lower than 10MB: hashes not computed')
# external subtitles
if subtitles:
video.subtitle_languages |= set(search_external_subtitles(path).values())
# video metadata with enzyme
try:
if filename.endswith('.mkv'):
with open(path, 'rb') as f:
mkv = MKV(f)
# main video track
if mkv.video_tracks:
video_track = mkv.video_tracks[0]
# resolution
if video_track.height in (480, 720, 1080):
if video_track.interlaced:
video.resolution = '%di' % video_track.height
else:
video.resolution = '%dp' % video_track.height
logger.debug('Found resolution %s with enzyme', video.resolution)
# video codec
if video_track.codec_id == 'V_MPEG4/ISO/AVC':
video.video_codec = 'h264'
logger.debug('Found video_codec %s with enzyme', video.video_codec)
elif video_track.codec_id == 'V_MPEG4/ISO/SP':
video.video_codec = 'DivX'
logger.debug('Found video_codec %s with enzyme', video.video_codec)
elif video_track.codec_id == 'V_MPEG4/ISO/ASP':
video.video_codec = 'XviD'
logger.debug('Found video_codec %s with enzyme', video.video_codec)
else:
logger.warning('MKV has no video track')
# main audio track
if mkv.audio_tracks:
audio_track = mkv.audio_tracks[0]
# audio codec
if audio_track.codec_id == 'A_AC3':
video.audio_codec = 'AC3'
logger.debug('Found audio_codec %s with enzyme', video.audio_codec)
elif audio_track.codec_id == 'A_DTS':
video.audio_codec = 'DTS'
logger.debug('Found audio_codec %s with enzyme', video.audio_codec)
elif audio_track.codec_id == 'A_AAC':
video.audio_codec = 'AAC'
logger.debug('Found audio_codec %s with enzyme', video.audio_codec)
else:
logger.warning('MKV has no audio track')
# subtitle tracks
if mkv.subtitle_tracks:
if embedded_subtitles:
embedded_subtitle_languages = set()
for st in mkv.subtitle_tracks:
if st.language:
try:
embedded_subtitle_languages.add(Language.fromalpha3b(st.language))
except BabelfishError:
logger.error('Embedded subtitle track language %r is not a valid language', st.language)
embedded_subtitle_languages.add(Language('und'))
elif st.name:
try:
embedded_subtitle_languages.add(Language.fromname(st.name))
except BabelfishError:
logger.debug('Embedded subtitle track name %r is not a valid language', st.name)
embedded_subtitle_languages.add(Language('und'))
else:
embedded_subtitle_languages.add(Language('und'))
logger.debug('Found embedded subtitle %r with enzyme', embedded_subtitle_languages)
video.subtitle_languages |= embedded_subtitle_languages
else:
logger.debug('MKV has no subtitle track')
except EnzymeError:
logger.exception('Parsing video metadata with enzyme failed')
return video
def scan_videos(path, subtitles=True, embedded_subtitles=True):
"""Scan `path` for videos and their subtitles.
:params path: existing directory path to scan.
:type path: str
:param bool subtitles: scan for subtitles with the same name.
:param bool embedded_subtitles: scan for embedded subtitles.
:return: the scanned videos.
:rtype: list of :class:`Video`
"""
# check for non-existing path
if not os.path.exists(path):
raise ValueError('Path does not exist')
# check for non-directory path
if not os.path.isdir(path):
raise ValueError('Path is not a directory')
# walk the path
videos = []
for dirpath, dirnames, filenames in os.walk(path):
# skip badly encoded directory names
if isinstance(dirpath, bytes): # pragma: no cover
logger.error('Skipping badly encoded directory %r', dirpath.decode('utf-8', errors='replace'))
continue
logger.debug('Walking directory %s', dirpath)
# remove badly encoded and hidden dirnames
for dirname in list(dirnames):
if isinstance(dirname, bytes): # pragma: no cover
logger.error('Skipping badly encoded dirname %r in %r', dirname.decode('utf-8', errors='replace'),
dirpath)
dirnames.remove(dirname)
elif dirname.startswith('.'):
logger.debug('Skipping hidden dirname %r in %r', dirname, dirpath)
dirnames.remove(dirname)
# scan for videos
for filename in filenames:
# skip badly encoded filenames
if isinstance(filename, bytes): # pragma: no cover
logger.error('Skipping badly encoded filename %r in %r', filename.decode('utf-8', errors='replace'),
dirpath)
continue
# filter on videos
if not filename.endswith(VIDEO_EXTENSIONS):
continue
# skip hidden files
if filename.startswith('.'):
logger.debug('Skipping hidden filename %r in %r', filename, dirpath)
continue
# reconstruct the file path
filepath = os.path.join(dirpath, filename)
# skip links
if os.path.islink(filepath):
logger.debug('Skipping link %r in %r', filename, dirpath)
continue
# scan video
try:
video = scan_video(filepath, subtitles=subtitles, embedded_subtitles=embedded_subtitles)
except ValueError: # pragma: no cover
logger.exception('Error scanning video')
continue
videos.append(video)
return videos
def hash_opensubtitles(video_path):
"""Compute a hash using OpenSubtitles' algorithm.
:param str video_path: path of the video.
:return: the hash.
:rtype: str
"""
bytesize = struct.calcsize(b'<q')
with open(video_path, 'rb') as f:
filesize = os.path.getsize(video_path)
filehash = filesize
if filesize < 65536 * 2:
return
for _ in range(65536 // bytesize):
filebuffer = f.read(bytesize)
(l_value,) = struct.unpack(b'<q', filebuffer)
filehash += l_value
filehash &= 0xFFFFFFFFFFFFFFFF # to remain as 64bit number
f.seek(max(0, filesize - 65536), 0)
for _ in range(65536 // bytesize):
filebuffer = f.read(bytesize)
(l_value,) = struct.unpack(b'<q', filebuffer)
filehash += l_value
filehash &= 0xFFFFFFFFFFFFFFFF
returnedhash = '%016x' % filehash
return returnedhash
def hash_thesubdb(video_path):
"""Compute a hash using TheSubDB's algorithm.
:param str video_path: path of the video.
:return: the hash.
:rtype: str
"""
readsize = 64 * 1024
if os.path.getsize(video_path) < readsize:
return
with open(video_path, 'rb') as f:
data = f.read(readsize)
f.seek(-readsize, os.SEEK_END)
data += f.read(readsize)
return hashlib.md5(data).hexdigest()
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+333
View File
@@ -0,0 +1,333 @@
interactions:
- request:
body: password=subliminal&username=subliminal&Submit=Log+in
headers:
Content-Length: ['53']
Content-Type: [application/x-www-form-urlencoded]
User-Agent: [Subliminal/0.8.0]
method: POST
uri: http://www.addic7ed.com/dologin.php
response:
body: {string: "\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta
http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>Addic7ed.com
- For all those TV Series Addic7s: Subtitles, Tv Series and Movies Talk, Forum
and more -</title>\n<link href=\"css/wikisubtitles.css\" rel=\"stylesheet\"
title=\"default\" type=\"text/css\" media=\"screen\"/>\n</head>\n\n<body>\n<center><br
/>\n<table border=\"0\">\n<tr>\n <td rowspan=\"9\"><a href=\"/\"><img height=\"200\"
width=\"350\" src=\"http://www.addic7ed.com/images/addic7edheader.jpg\" border=\"0\"
\ title=\"Addic7ed.com - Quality Subtitles for TV Shows and movies\" alt=\"Addic7ed.com
- Quality Subtitles for TV Shows and movies\" /></a></td>\n</tr>\n<tr><td
align=\"center\" colspan=\"2\">\n<h1><small>Download free subtitles for TV
Shows and Movies.</small>&nbsp; \n<select name=\"applang\" class=\"inputCool\"
onchange=\"changeAppLang();\" id=\"comboLang\"><option value=\"ar\">Arabic</option><option
value=\"ca\">Catala</option><option selected=\"selected\" value=\"en\">English</option><option
value=\"eu\">Euskera</option><option value=\"fr\">French</option><option value=\"ga\">Galician</option><option
value=\"de\">German</option><option value=\"gr\">Greek</option><option value=\"hu\">Hungarian</option><option
value=\"it\">Italian</option><option value=\"fa\">Persian</option><option
value=\"pl\">Polish</option><option value=\"pt\">Portuguese</option><option
value=\"br\">Portuguese (Brazilian)</option><option value=\"ro\">Romanian</option><option
value=\"ru\">Russian</option><option value=\"es\">Spanish</option><option
value=\"se\">Swedish</option></select></h1>\n</td></tr>\n<tr><td align=\"center\"
colspan=\"2\">\n\n<script language=\"javascript\">\nvar url=\"/msgspopup.php?count=1\";\t\teditwin
= window.open(url, \"msgswin\", 'height=200,width=350,toolbar=0,location=0,statusbar=0,menubar=0');
\n\t\tif (editwin.focus) {editwin.focus()}\n</script>\n<div id=\"hBar\">\n\t\t\t
\ <ul>\n\t\t\t\t<li><a class=\"button white\" href=\"/panel.php\">My Panel</a></li><li><a
class=\"button white\" href=\"/newsub.php\">Upload</a></li>\t\t\t<li><a class=\"button
white\" href=\"/shows.php\">Shows</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/allshows/a\">Air dates</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"http://www.sub-talk.net\">Forum</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/logout.php\">Logout</a></li>\n\t\t\t </ul>\n\t\t\t </div>\n</td></tr>
\n<tr>\n <td>\n</td><td>\n\t<g:plusone size=\"medium\"></g:plusone>\n <a
href=\"http://twitter.com/addic7ed\" target=\"_blank\"><img width=\"32\" height=\"32\"
src=\"http://www.addic7ed.com/images/twitter_right.png\" alt=\"Twitter\" border=\"0\"
/></a>\n\t<a href=\"irc://irc.efnet.net:6667/addic7ed\"><img width=\"32\"
height=\"32\" src=\"http://www.addic7ed.com/images/irc-right.png\" alt=\"IRC\"
border=\"0\" /></a>\n<div style=\"float: right; padding-right:10%;\">\n\n
\ </td>\n </tr>\n <tr>\n <td colspan=2><iframe src=\"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FAddic7ed&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=tahoma&amp;height=21&amp;appId=121322186712\"
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px;
height:21px;\" allowTransparency=\"true\"></iframe>\n </td>\n </tr>\n</table>\n</center>\n\n<center>\n\n<!--[if
lt IE 7]>\n <style type=\"text/css\">\n div, img { behavior: url(http://www.addic7ed.com/js/iepngfix.htc)
}\n </style>\n<![endif]-->\n\n<center><table border=\"0\" width=\"90%\">\n<tr>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Addic7ed</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Popular Shows</td>\n<td class=\"NewsTitle\"><img width=\"20\"
height=\"20\" src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\"
/><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\" \" />Useful</td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Forums</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/shows.php\">Browse
By Shows</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/4906\">12
Monkeys</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/shows-schedule\">TV
Shows Schedule</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/1031-changelog/\">Site
Changelog</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/movie-subtitles\">Browse
By Movies</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1812\">Homeland</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/2784-frequently-asked-questions/\">Frequently
Asked Questions</a></div></td>\n<td><div id=\"footermenu\">Support Us</div></td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/top-uploaders\">Top Uploaders</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/620\">Modern Family</a></div></td>\n<td><div
id=\"footermenu\">RSS Feeds</div></td>\n<td><div id=\"footermenu\">Premium
Accounts</div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=downloaded\">Top
Downloads</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/466\">Glee</a></div></td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\"/>Tutorials</td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/thread-6-1-1.html\">Video
Formats</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=news\">All
News</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/450\">Parks
and Recreation</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/338-guide-to-syncing-with-subtitleedit/page__p__1485__hl__%2B+%2Bsync__fromsearch__1#entry1485\">How
to Synchronize Subtitles</a></div></td>\n<td><div id=\"footermenu\">Frequently
Asked Questions</div></td>\n</tr> \n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net\">Sub-Talk
Forums</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1277\">Shameless
(US)</a></div></td>\n<td><div id=\"footermenu\">What Are Subtitles</div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=7\">TV Shows
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/latest_comments.php\">Latest
Comments</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/126\">The
Big Bang Theory</a></div></td>\n<td><div id=\"footermenu\">New Translation
Tutorial</div></td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=22\">Movies
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.vreaubagaj.ro/troler/\"
title=\"Trolere ieftine\" alt=\"Trolere ieftine\">Troler ieftin</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/130\">Family Guy</a></div></td>\n<td><div
id=\"footermenu\">Upload a New Subtitle Tutorial</div></td>\n<td class=\"NewsTitle\"><img
width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Stats</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\">Terms of Service</div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/1799\">American Horror Story</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/viewthread.php?tid=294\">How
to have an Avatar</a></div></td>\n<td align=\"left\">.\n\t\t\t\t</td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/contact.php\">Contact</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/15\">House</a></div></td>\n<td><div id=\"footermenu\"><a
href=\"http://www.vreaubagaj.ro/\" alt=\"Trolere\" title=\"Trolere\">Trolere</a></div></td>\n<td>\n</td>\n</tr>\n</table></center>\n</center>\n\n<script
type=\"text/javascript\">\nvar gaJsHost = ((\"https:\" == document.location.protocol)
? \"https://ssl.\" : \"http://www.\");\ndocument.write(unescape(\"%3Cscript
src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n</script>\n<script
type=\"text/javascript\">\ntry {\nvar pageTracker = _gat._getTracker(\"UA-10775680-1\");\npageTracker._trackPageview();\n}
catch(err) {}</script>\n\n\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\n
\ \n</body>\n</html>\n"}
headers:
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Connection: [keep-alive]
Content-Type: [text/html]
Date: ['Sat, 04 Jul 2015 17:11:36 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Location: [/]
Pragma: [no-cache]
Server: [nginx]
Set-Cookie: [PHPSESSID=sji8d1inpflpb64eg1ahge4f74; path=/]
X-Powered-By: [PHP/5.3.3]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
Cookie: [PHPSESSID=sji8d1inpflpb64eg1ahge4f74]
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.addic7ed.com/panel.php
response:
body: {string: " \n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n\n<meta
http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>Addic7ed.com
- For all those TV Series Addic7s: Subtitles, Tv Series and Movies Talk, Forum
and more -</title>\n<link href=\"css/wikisubtitles.css\" rel=\"stylesheet\"
title=\"default\" type=\"text/css\" />\n<link rel=\"SHORTCUT ICON\" href=\"favicon.ico\"
/> \n<link rel=\"stylesheet\" type=\"text/css\" href=\"css/panel.css\" >\n</head>\n<body>\n\n<center><br
/>\n<table border=\"0\">\n<tr>\n <td rowspan=\"9\"><a href=\"/\"><img height=\"200\"
width=\"350\" src=\"http://www.addic7ed.com/images/addic7edheader.jpg\" border=\"0\"
\ title=\"Addic7ed.com - Quality Subtitles for TV Shows and movies\" alt=\"Addic7ed.com
- Quality Subtitles for TV Shows and movies\" /></a></td>\n</tr>\n<tr><td
align=\"center\" colspan=\"2\">\n<h1><small>Download free subtitles for TV
Shows and Movies.</small>&nbsp; \n<select name=\"applang\" class=\"inputCool\"
onchange=\"changeAppLang();\" id=\"comboLang\"><option value=\"ar\">Arabic</option><option
value=\"ca\">Catala</option><option selected=\"selected\" value=\"en\">English</option><option
value=\"eu\">Euskera</option><option value=\"fr\">French</option><option value=\"ga\">Galician</option><option
value=\"de\">German</option><option value=\"gr\">Greek</option><option value=\"hu\">Hungarian</option><option
value=\"it\">Italian</option><option value=\"fa\">Persian</option><option
value=\"pl\">Polish</option><option value=\"pt\">Portuguese</option><option
value=\"br\">Portuguese (Brazilian)</option><option value=\"ro\">Romanian</option><option
value=\"ru\">Russian</option><option value=\"es\">Spanish</option><option
value=\"se\">Swedish</option></select></h1>\n</td></tr>\n<tr><td align=\"center\"
colspan=\"2\">\n\n<script language=\"javascript\">\nvar url=\"/msgspopup.php?count=1\";\t\teditwin
= window.open(url, \"msgswin\", 'height=200,width=350,toolbar=0,location=0,statusbar=0,menubar=0');
\n\t\tif (editwin.focus) {editwin.focus()}\n</script>\n<div id=\"hBar\">\n\t\t\t
\ <ul>\n\t\t\t\t<li><a class=\"button white\" href=\"/panel.php\">My Panel</a></li><li><a
class=\"button white\" href=\"/newsub.php\">Upload</a></li>\t\t\t<li><a class=\"button
white\" href=\"/shows.php\">Shows</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/allshows/a\">Air dates</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"http://www.sub-talk.net\">Forum</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/logout.php\">Logout</a></li>\n\t\t\t </ul>\n\t\t\t </div>\n</td></tr>
\n<tr>\n <td>\n</td><td>\n\t<g:plusone size=\"medium\"></g:plusone>\n <a
href=\"http://twitter.com/addic7ed\" target=\"_blank\"><img width=\"32\" height=\"32\"
src=\"http://www.addic7ed.com/images/twitter_right.png\" alt=\"Twitter\" border=\"0\"
/></a>\n\t<a href=\"irc://irc.efnet.net:6667/addic7ed\"><img width=\"32\"
height=\"32\" src=\"http://www.addic7ed.com/images/irc-right.png\" alt=\"IRC\"
border=\"0\" /></a>\n<div style=\"float: right; padding-right:10%;\">\n\n
\ </td>\n </tr>\n <tr>\n <td colspan=2><iframe src=\"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FAddic7ed&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=tahoma&amp;height=21&amp;appId=121322186712\"
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px;
height:21px;\" allowTransparency=\"true\"></iframe>\n </td>\n </tr>\n</table>\n</center>\n\n<center>\n\n<!--[if
lt IE 7]>\n <style type=\"text/css\">\n div, img { behavior: url(http://www.addic7ed.com/js/iepngfix.htc)
}\n </style>\n<![endif]-->\n\n\n<table width=\"94%\" border=\"0\" cellpadding=\"0\"
cellspacing=\"0\">\n <tr bgcolor=\"#FFFFFF\">\n <th width=\"14%\" height=\"37\"
bgcolor=\"#009BCA\" scope=\"row\"></th>\n \n <td width=\"83%\" height=\"37\"><center>\n<div
id=\"container\"> \n \t<table class=\"tabel\" border=\"0\">\n \t<tr>
<!-- table header -->\n \t<td class=\"tablecorner\"><img src=\"images/tl.gif\"
/></td>\n <td></td>\n <td class=\"tablecorner\"><img
src=\"images/tr.gif\" /></td>\n </tr>\n <tr>\n \t<td></td>\n
\ <td><div class=\"subItem\"><big><center>subliminal - </center></div>\n</td>\n
\ <td></td>\n </tr>\n <tr> <!-- table
footer -->\n \t<td class=\"tablecorner\"><img src=\"images/bl.gif\"
/></td>\n <td></td>\n <td class=\"tablecorner\"><img
src=\"images/br.gif\" /></td>\n </tr>\n </table>\n </div></td>\n
\ </tr>\n<tr><td><img src=\"images/invisible.gif\"></td></tr>\n <tr>\n<th
height=\"58\" bgcolor=\"#009BCA\" scope=\"row\"><div class=\"navbar\">\r\n<!--
*********************************Start Menu******************************
-->\r\n<div class=\"mainDiv\" >\r\n<div class=\"topItem\" >Personal</div>\r\n<div
class=\"dropMenu\" ><!-- -->\r\n <div class=\"subMenu\" style=\"display:inline;\">\r\n
\ <div class=\"subItem\"><a href=\"/panel_edit_profile.php\">Edit
Profile</a></div>\r\n <div class=\"subItem\"><a href=\"/mydownloads.php\">My
Downloads</a></div>\r\n <div class=\"subItem\"><a href=\"/following.php\">I'm
Following</a></div>\r\n <div class=\"subItem\"><a href=\"/myviews.php\">I've
Viewed</a></div>\r\n </div>\r\n</div>\r\n</div>\r\n<!-- *********************************End
Menu****************************** --></th>\r\n <td bgcolor=\"#009BCA\"
align=\"center\">\n<div id=\"container\"> \n \t<table class=\"tabel70\"
border=0\">\n \t<tr> <!-- table header -->\n \t<td class=\"tablecorner\"><img
src=\"/images/tl.gif\" /></td>\n <td></td>\n <td
class=\"tablecorner\"><img src=\"/images/tr.gif\" /></td>\n </tr>\n
\ <tr>\n \t<td></td>\n <td>\n<table class=\"tabel\"
border=\"0\" align=\"center\">\n <tr>\n <td align=\"center\" rowspan=\"10\"><img
src=\"http://www.gravatar.com/avatar.php?gravatar_id=db74435d70e361342a19ce6de59db4ff&size=100&rating=X&border=FF0000\"
width=\"100\" height=\"100\" /></td>\n <td></td>\n </tr>\n <tr>\n
\ <td class=\"topItem\">Addict Since</td>\n <td>2015-06-30 16:35:35</td>\n
\ <td></td>\n </tr>\n <tr>\n <td class=\"topItem\">Web
site</td>\n <td></td>\n <td></td>\n </tr>\n <tr>\n
\ <td class=\"topItem\">Signature</td>\n <td></td>\n <td></td>\n
\ </tr>\n <tr>\n <td class=\"topItem\">Gender</td>\n <td>Male</td>\n
\ <td></td>\n </tr>\n <tr>\n <td class=\"topItem\">Downloads
by User Today</td>\n <td><a href='mydownloads.php'>0 of 40</a></td>\n
\ <td></td>\n </tr>\n <tr>\n <td class=\"topItem\">Downloads
from IP Today</td>\n <td><a href='log.php?mode=ip&ip=5.51.3.145'>5</a></td>\n
\ <td></td>\n </tr>\n <tr>\n <td class=\"topItem\">Class</td>\n
\ \t<td>Regular</td>\n <td></td>\n </tr>\n <tr>\n <td
class=\"topItem\">Last Seen</td>\n <td>2015-07-04 19:11:36</td>\n <td></td>\n
\ </tr>\n <tr>\n <td class=\"topItem\">Last IP</td>\n <td><a
href='log.php?mode=ip&ip=5.51.3.145'>5.51.3.145</a></td>\n <td></td>\n
\ </tr>\n <tr>\n <td class=\"topItem\">Episodes created</td>\n
\ <td>0</td>\n <td></td>\n </tr>\n </table>\n</td>\n
\ <td></td>\n </tr>\n <tr> <!-- table
footer -->\n \t<td class=\"tablecorner\"><img src=\"/images/bl.gif\"
/></td>\n <td></td>\n <td class=\"tablecorner\"><img
src=\"/images/br.gif\" /></td>\n </tr>\n </table>\n </div>\n</td>\n
\ \n<tr bgcolor=\"#009BCA\">\n <th height=\"80\" scope=\"row\"><div
class=\"navbar\">\n<!-- *********************************Start Menu******************************
-->\n<div class=\"mainDiv\" >\n<div class=\"topItem\" >Messages</div> \n<div
class=\"dropMenu\" ><!-- -->\n\t<div class=\"subMenu\" style=\"display:inline;\">\n\t\t<div
class=\"subItem\"><a href=\"msginbox.php\">Inbox</a></div>\n\t <div
class=\"subItem\"><a href=\"msgoutbox.php\">Outbox</a></div>\n\t\t<div class=\"subItem\"><a
href=\"msgcreate.php\">Compose</a></div>\n\t</div>\n</div>\n</div>\n<!-- *********************************End
Menu****************************** --></th>\n <td colspan=\"2\" bgcolor=\"#009BCA\"></td>\n
\ </tr>\n <tr bgcolor=\"#009BCA\">\n <th height=\"74\" bgcolor=\"#009BCA\"
scope=\"row\"><div class=\"navbar\">\n<!-- *********************************Start
Menu****************************** -->\n<div class=\"mainDiv\" >\n<div class=\"topItem\"
>RSS Feeds</div> \n<div class=\"dropMenu\" ><!-- -->\n\t<div class=\"subMenu\"
style=\"display:inline;\">\n\t\t<div class=\"subItem\"><a href=\"/log.php?mode=news\">Latest
News</a></div>\n\t\t<div class=\"subItem\"><a href=\"/rss.php?mode=hotspot\">New
Releases</a></div>\n\t <div class=\"subItem\"><a href=\"/rss.php?mode=completed\">Latest
Files</a></div>\n\t\t<div class=\"subItem\"><a href=\"/rss.php?mode=edited\">Latest
Edited Files</a></div>\n\t\t<div class=\"subItem\"><a href=\"/rss.php?mode=translated\">Latest
Started Translations</a></div>\n\t\t<div class=\"subItem\"><a href=\"/rss.php?mode=versions\">Latest
New Versions</a></div>\n\t</div>\n</div>\n</div>\n<!-- *********************************End
Menu****************************** --></th>\n <td colspan=\"2\" rowspan=\"5\"></td>\n
\ </tr>\n <tr bgcolor=\"#FFFFFF\">\n <th height=\"75\" bgcolor=\"#009BCA\"
scope=\"row\"><div class=\"navbar\">\n <!-- *********************************Start
Menu****************************** -->\n <div class=\"mainDiv\" >\n <div
class=\"topItem\" >Support Addic7ed</div> \n <div class=\"dropMenu\"
><!-- -->\n <div class=\"subMenu\" style=\"display:inline;\">\n <div
class=\"subItem\"><a href=\"/contact.php\">Donations</a></div>\n </div>\n
\ </div>\n </div>\n <!-- *********************************End Menu******************************
--></th>\n </tr>\n <tr bgcolor=\"#009BCA\">\n <th height=\"70\" scope=\"row\"><div
class=\"navbar\">\n <!-- *********************************Start Menu******************************
-->\n <div class=\"mainDiv\" >\n <div class=\"topItem\" >Help & Contact</div>
\ \n <div class=\"dropMenu\" ><!-- -->\n <div class=\"subMenu\"
style=\"display:inline;\">\n <div class=\"subItem\"><a href=\"http://www.sub-talk.net/\">Forums</a></div>\n
\ <div class=\"subItem\"><a href=\"/contact.php\">Contact</a></div> \n
\ </div>\n </div>\n </div>\n <!-- *********************************End
Menu****************************** --></th>\n </tr>\n <tr bgcolor=\"#009BCA\">\n
\ <th height=\"98\" scope=\"row\"><div class=\"navbar\">\n <!-- *********************************Start
Menu****************************** -->\n <div class=\"mainDiv\" >\n <div
class=\"topItem\" >Miscellaneous</div> \n <div class=\"dropMenu\"
><!-- -->\n <div class=\"subMenu\" style=\"display:inline;\">\n <div
class=\"subItem\"><a href=\"/shows-schedule\">Shows Schedule</a></div>\n <div
class=\"subItem\"><a href=\"http://www.twitter.com/addic7ed\">Addic7ed@Twitter</a></div>\n
\ <div class=\"subItem\"><a href=\"irc://irc.efnet.net/addic7ed\">Addic7ed
on IRC</a></div>\n <div class=\"subItem\"><a href=\"http://chat.mibbit.com/?server=irc.umich.edu&channel=%23addic7ed\">Addic7ed
- IRC (WebChat)</a></div>\n <div class=\"subItem\"><a href=\"http://www.facebook.com/pages/Addic7ed-Subtitles/103460216722?ref=nf\">Addic7ed
on Facebook</a></div>\n </div>\n </div>\n </div>\n <!-- *********************************End
Menu****************************** --></th>\n </tr>\n \n\n</table>\n<script
type=\"text/javascript\" src=\"/xpmenuv21.js\"></script>\n</div>\n\n<center><table
border=\"0\" width=\"90%\">\n<tr>\n<td class=\"NewsTitle\"><img width=\"20\"
height=\"20\" src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\"
/><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\" \" />Addic7ed</td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Popular Shows</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Useful</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Forums</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/shows.php\">Browse
By Shows</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/4906\">12
Monkeys</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/shows-schedule\">TV
Shows Schedule</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/1031-changelog/\">Site
Changelog</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/movie-subtitles\">Browse
By Movies</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1812\">Homeland</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/2784-frequently-asked-questions/\">Frequently
Asked Questions</a></div></td>\n<td><div id=\"footermenu\">Support Us</div></td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/top-uploaders\">Top Uploaders</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/620\">Modern Family</a></div></td>\n<td><div
id=\"footermenu\">RSS Feeds</div></td>\n<td><div id=\"footermenu\">Premium
Accounts</div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=downloaded\">Top
Downloads</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/466\">Glee</a></div></td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\"/>Tutorials</td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/thread-6-1-1.html\">Video
Formats</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=news\">All
News</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/450\">Parks
and Recreation</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/338-guide-to-syncing-with-subtitleedit/page__p__1485__hl__%2B+%2Bsync__fromsearch__1#entry1485\">How
to Synchronize Subtitles</a></div></td>\n<td><div id=\"footermenu\">Frequently
Asked Questions</div></td>\n</tr> \n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net\">Sub-Talk
Forums</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1277\">Shameless
(US)</a></div></td>\n<td><div id=\"footermenu\">What Are Subtitles</div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=7\">TV Shows
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/latest_comments.php\">Latest
Comments</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/126\">The
Big Bang Theory</a></div></td>\n<td><div id=\"footermenu\">New Translation
Tutorial</div></td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=22\">Movies
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.vreaubagaj.ro/troler/\"
title=\"Trolere ieftine\" alt=\"Trolere ieftine\">Troler ieftin</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/130\">Family Guy</a></div></td>\n<td><div
id=\"footermenu\">Upload a New Subtitle Tutorial</div></td>\n<td class=\"NewsTitle\"><img
width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Stats</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\">Terms of Service</div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/1799\">American Horror Story</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/viewthread.php?tid=294\">How
to have an Avatar</a></div></td>\n<td align=\"left\">.\n\t\t\t\t</td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/contact.php\">Contact</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/15\">House</a></div></td>\n<td><div id=\"footermenu\"><a
href=\"http://www.vreaubagaj.ro/\" alt=\"Trolere\" title=\"Trolere\">Trolere</a></div></td>\n<td>\n</td>\n</tr>\n</table></center>\n</center>\n\n<script
type=\"text/javascript\">\nvar gaJsHost = ((\"https:\" == document.location.protocol)
? \"https://ssl.\" : \"http://www.\");\ndocument.write(unescape(\"%3Cscript
src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n</script>\n<script
type=\"text/javascript\">\ntry {\nvar pageTracker = _gat._getTracker(\"UA-10775680-1\");\npageTracker._trackPageview();\n}
catch(err) {}</script>\n\n\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\n
\ \n</body>\n</html>\n"}
headers:
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Connection: [keep-alive]
Content-Type: [text/html]
Date: ['Sat, 04 Jul 2015 17:11:36 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [nginx]
X-Powered-By: [PHP/5.3.3]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,116 @@
interactions:
- request:
body: password=lanimilbus&username=subliminal&Submit=Log+in
headers:
Content-Length: ['53']
Content-Type: [application/x-www-form-urlencoded]
User-Agent: [Subliminal/0.8.0]
method: POST
uri: http://www.addic7ed.com/dologin.php
response:
body: {string: "\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta
http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>Addic7ed.com
- For all those TV Series Addic7s: Subtitles, Tv Series and Movies Talk, Forum
and more -</title>\n<link href=\"css/wikisubtitles.css\" rel=\"stylesheet\"
title=\"default\" type=\"text/css\" media=\"screen\"/>\n</head>\n\n<body>\n<center><br
/>\n<table border=\"0\">\n<tr>\n <td rowspan=\"9\"><a href=\"/\"><img height=\"200\"
width=\"350\" src=\"http://www.addic7ed.com/images/addic7edheader.jpg\" border=\"0\"
\ title=\"Addic7ed.com - Quality Subtitles for TV Shows and movies\" alt=\"Addic7ed.com
- Quality Subtitles for TV Shows and movies\" /></a></td>\n</tr>\n<tr><td
align=\"center\" colspan=\"2\">\n<h1><small>Download free subtitles for TV
Shows and Movies.</small>&nbsp; \n<select name=\"applang\" class=\"inputCool\"
onchange=\"changeAppLang();\" id=\"comboLang\"><option value=\"ar\">Arabic</option><option
value=\"ca\">Catala</option><option selected=\"selected\" value=\"en\">English</option><option
value=\"eu\">Euskera</option><option value=\"fr\">French</option><option value=\"ga\">Galician</option><option
value=\"de\">German</option><option value=\"gr\">Greek</option><option value=\"hu\">Hungarian</option><option
value=\"it\">Italian</option><option value=\"fa\">Persian</option><option
value=\"pl\">Polish</option><option value=\"pt\">Portuguese</option><option
value=\"br\">Portuguese (Brazilian)</option><option value=\"ro\">Romanian</option><option
value=\"ru\">Russian</option><option value=\"es\">Spanish</option><option
value=\"se\">Swedish</option></select></h1>\n</td></tr>\n<tr><td align=\"center\"
colspan=\"2\">\n<div id=\"hBar\">\n\t\t\t <ul>\n\t\t\t\t<li><a class=\"button
white\" href=\"/newaccount.php\">Signup</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/login.php\">Login</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/shows.php\">Shows</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/allshows/a\">Air dates</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"http://www.sub-talk.net\">Forum</a></li>\n\t\t\t </ul>\n\t\t\t
\ </div>\n</td></tr> \n<tr>\n <td>\n</td><td>\n\t<g:plusone size=\"medium\"></g:plusone>\n
\ <a href=\"http://twitter.com/addic7ed\" target=\"_blank\"><img width=\"32\"
height=\"32\" src=\"http://www.addic7ed.com/images/twitter_right.png\" alt=\"Twitter\"
border=\"0\" /></a>\n\t<a href=\"irc://irc.efnet.net:6667/addic7ed\"><img
width=\"32\" height=\"32\" src=\"http://www.addic7ed.com/images/irc-right.png\"
alt=\"IRC\" border=\"0\" /></a>\n<div style=\"float: right; padding-right:10%;\">\n\n
\ </td>\n </tr>\n <tr>\n <td colspan=2><iframe src=\"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FAddic7ed&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=tahoma&amp;height=21&amp;appId=121322186712\"
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px;
height:21px;\" allowTransparency=\"true\"></iframe>\n </td>\n </tr>\n</table>\n</center>\n\n<center>\n\n<!--[if
lt IE 7]>\n <style type=\"text/css\">\n div, img { behavior: url(http://www.addic7ed.com/js/iepngfix.htc)
}\n </style>\n<![endif]-->\n<p align=\"center\">Wrong password </p>\n<center><table
border=\"0\" width=\"90%\">\n<tr>\n<td class=\"NewsTitle\"><img width=\"20\"
height=\"20\" src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\"
/><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\" \" />Addic7ed</td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Popular Shows</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Useful</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Forums</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/shows.php\">Browse
By Shows</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/4906\">12
Monkeys</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/shows-schedule\">TV
Shows Schedule</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/1031-changelog/\">Site
Changelog</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/movie-subtitles\">Browse
By Movies</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1812\">Homeland</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/2784-frequently-asked-questions/\">Frequently
Asked Questions</a></div></td>\n<td><div id=\"footermenu\">Support Us</div></td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/top-uploaders\">Top Uploaders</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/620\">Modern Family</a></div></td>\n<td><div
id=\"footermenu\">RSS Feeds</div></td>\n<td><div id=\"footermenu\">Premium
Accounts</div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=downloaded\">Top
Downloads</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/466\">Glee</a></div></td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\"/>Tutorials</td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/thread-6-1-1.html\">Video
Formats</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=news\">All
News</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/450\">Parks
and Recreation</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/338-guide-to-syncing-with-subtitleedit/page__p__1485__hl__%2B+%2Bsync__fromsearch__1#entry1485\">How
to Synchronize Subtitles</a></div></td>\n<td><div id=\"footermenu\">Frequently
Asked Questions</div></td>\n</tr> \n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net\">Sub-Talk
Forums</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1277\">Shameless
(US)</a></div></td>\n<td><div id=\"footermenu\">What Are Subtitles</div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=7\">TV Shows
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/latest_comments.php\">Latest
Comments</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/126\">The
Big Bang Theory</a></div></td>\n<td><div id=\"footermenu\">New Translation
Tutorial</div></td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=22\">Movies
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.vreaubagaj.ro/troler/\"
title=\"Trolere ieftine\" alt=\"Trolere ieftine\">Troler ieftin</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/130\">Family Guy</a></div></td>\n<td><div
id=\"footermenu\">Upload a New Subtitle Tutorial</div></td>\n<td class=\"NewsTitle\"><img
width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Stats</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\">Terms of Service</div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/1799\">American Horror Story</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/viewthread.php?tid=294\">How
to have an Avatar</a></div></td>\n<td align=\"left\">.\n\t\t\t\t</td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/contact.php\">Contact</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/15\">House</a></div></td>\n<td><div id=\"footermenu\"><a
href=\"http://www.vreaubagaj.ro/\" alt=\"Trolere\" title=\"Trolere\">Trolere</a></div></td>\n<td>\n</td>\n</tr>\n</table></center>\n</center>\n\n<script
type=\"text/javascript\">\nvar gaJsHost = ((\"https:\" == document.location.protocol)
? \"https://ssl.\" : \"http://www.\");\ndocument.write(unescape(\"%3Cscript
src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n</script>\n<script
type=\"text/javascript\">\ntry {\nvar pageTracker = _gat._getTracker(\"UA-10775680-1\");\npageTracker._trackPageview();\n}
catch(err) {}</script>\n\n\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\n
\ \n</body>\n</html>\n"}
headers:
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Connection: [keep-alive]
Content-Type: [text/html]
Date: ['Sat, 04 Jul 2015 17:11:36 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [nginx]
Set-Cookie: [PHPSESSID=d3o4eeisg08alu7niut1m3oh04; path=/]
X-Powered-By: [PHP/5.3.3]
status: {code: 200, message: OK}
version: 1
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,527 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.addic7ed.com/search.php?Submit=Search&search=The+Big+Bang+Theory
response:
body: {string: "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta
http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>\nSearch
\"The Big Bang Theory\" Subtitle Download - Addic7ed.com - For all those TV
Series Addic7s: Subtitles, Tv Series and Movies Talk, Forum and more -</title>\n<link
href=\"http://www.addic7ed.com/css/wikisubtitles.css\" rel=\"stylesheet\"
title=\"default\" type=\"text/css\" />\n<link rel=\"SHORTCUT ICON\" href=\"favicon.ico\"
/> \n<script type=\"text/javascript\" src=\"http://www.addic7ed.com/js/mootools.v1.11.js\"></script>\n\n</head>\n<body>\n<center><br
/>\n<table border=\"0\">\n<tr>\n <td rowspan=\"9\"><a href=\"/\"><img height=\"200\"
width=\"350\" src=\"http://www.addic7ed.com/images/addic7edheader.jpg\" border=\"0\"
\ title=\"Addic7ed.com - Quality Subtitles for TV Shows and movies\" alt=\"Addic7ed.com
- Quality Subtitles for TV Shows and movies\" /></a></td>\n</tr>\n<tr><td
align=\"center\" colspan=\"2\">\n<h1><small>Download free subtitles for TV
Shows and Movies.</small>&nbsp; \n<select name=\"applang\" class=\"inputCool\"
onchange=\"changeAppLang();\" id=\"comboLang\"><option value=\"ar\">Arabic</option><option
value=\"ca\">Catala</option><option selected=\"selected\" value=\"en\">English</option><option
value=\"eu\">Euskera</option><option value=\"fr\">French</option><option value=\"ga\">Galician</option><option
value=\"de\">German</option><option value=\"gr\">Greek</option><option value=\"hu\">Hungarian</option><option
value=\"it\">Italian</option><option value=\"fa\">Persian</option><option
value=\"pl\">Polish</option><option value=\"pt\">Portuguese</option><option
value=\"br\">Portuguese (Brazilian)</option><option value=\"ro\">Romanian</option><option
value=\"ru\">Russian</option><option value=\"es\">Spanish</option><option
value=\"se\">Swedish</option></select></h1>\n</td></tr>\n<tr><td align=\"center\"
colspan=\"2\">\n<div id=\"hBar\">\n\t\t\t <ul>\n\t\t\t\t<li><a class=\"button
white\" href=\"/newaccount.php\">Signup</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/login.php\">Login</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/shows.php\">Shows</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/allshows/a\">Air dates</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"http://www.sub-talk.net\">Forum</a></li>\n\t\t\t </ul>\n\t\t\t
\ </div>\n</td></tr> \n<tr>\n <td>\n</td><td>\n\t<g:plusone size=\"medium\"></g:plusone>\n
\ <a href=\"http://twitter.com/addic7ed\" target=\"_blank\"><img width=\"32\"
height=\"32\" src=\"http://www.addic7ed.com/images/twitter_right.png\" alt=\"Twitter\"
border=\"0\" /></a>\n\t<a href=\"irc://irc.efnet.net:6667/addic7ed\"><img
width=\"32\" height=\"32\" src=\"http://www.addic7ed.com/images/irc-right.png\"
alt=\"IRC\" border=\"0\" /></a>\n<div style=\"float: right; padding-right:10%;\">\n\n
\ </td>\n </tr>\n <tr>\n <td colspan=2><iframe src=\"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FAddic7ed&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=tahoma&amp;height=21&amp;appId=121322186712\"
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px;
height:21px;\" allowTransparency=\"true\"></iframe>\n </td>\n </tr>\n</table>\n</center>\n\n<center>\n\n<!--[if
lt IE 7]>\n <style type=\"text/css\">\n div, img { behavior: url(http://www.addic7ed.com/js/iepngfix.htc)
}\n </style>\n<![endif]-->\n<br />\n<center>\n<!-- MarketGidComposite Start
-->\n<div id=\"MarketGidScriptRootC13385\">\n <div id=\"MarketGidPreloadC13385\">\n
\ <a id=\"mg_add13385\" href=\"http://mgid.com/advertisers/?utm_source=widget&utm_medium=text&utm_campaign=add\"
target=\"_blank\">Place your ad here</a><br> <a href=\"http://mgid.com/\"
target=\"_blank\">Loading...</a> \n </div>\n <script>\n
\ window.MGWidgetTitle13385 = \"Promoted
Content\"; (function(){\n var
D=new Date(),d=document,b='body',ce='createElement',ac='appendChild',st='style',ds='display',n='none',gi='getElementById';\n
\ var i=d[ce]('iframe');i[st][ds]=n;d[gi](\"MarketGidScriptRootC13385\")[ac](i);try{var
iw=i.contentWindow.document;iw.open();iw.writeln(\"<ht\"+\"ml><bo\"+\"dy></bo\"+\"dy></ht\"+\"ml>\");iw.close();var
c=iw[b];}\n catch(e){var
iw=d;var c=d[gi](\"MarketGidScriptRootC13385\");}var dv=iw[ce]('div');dv.id=\"MG_ID\";dv[st][ds]=n;dv.innerHTML=13385;c[ac](dv);\n
\ var
s=iw[ce]('script');s.async='async';s.defer='defer';s.charset='utf-8';s.src=\"//jsc.mgid.com/a/d/addic7ed.com.13385.js?t=\"+D.getYear()+D.getMonth()+D.getDate()+D.getHours();c[ac](s);})();\n
\ </script>\n
\ </div>\n
\ <!--
MarketGidComposite End -->\n<script type=\"text/javascript\" src=\"//eclkspsa.com/adServe/banners?tid=ADTPOP&tagid=2\"></script>\n</center><br
/>\n\n<div id=\"container\"> \n \t<table class=\"tabel70\" border=\"0\">\n
\ \t<tr> <!-- table header -->\n \t<td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/tl.gif\" /></td>\n <td></td>\n
\ <td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/tr.gif\"
/></td>\n </tr>\n <tr>\n \t<td></td>\n <td>\n<form
action=\"/search.php\" method=\"get\">\n<div align=\"center\">\n<input name=\"search\"
type=\"text\" id=\"search\" size=\"50\" value=\"The Big Bang Theory\" class=\"inputCool\"/>&nbsp;\n
<input name=\"Submit\" type=\"submit\" class=\"coolBoton\" value=\"Search\"
/></form><br />\n\n<b>187 results found</b> </div><br />\n\n<br />\n\t<center>\n\n</center>\n<br
/>\n<center>&nbsp;&nbsp;<img src=\"http://www.addic7ed.com/images/database.png\"
/> <span class=\"titulo\">\nAre you looking for <a href=\"/show/126\" >Show
<i>The Big Bang Theory</i></a>&nbsp;?</span></center><br /><br />\n\n<table
class=\"tabel\" align=\"center\" width=\"80%\" border=\"0\">\n<tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/0/Unaired_Pilot\"
debug=\"27979\">The Big Bang Theory - 01x00 - Unaired Pilot</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/1/Pilot\"
debug=\"2354\">The Big Bang Theory - 01x01 - Pilot</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/2/The_big_bran_hypothesis\"
debug=\"2420\">The Big Bang Theory - 01x02 - The big bran hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/3/The_fuzzy_boots_collorary\"
debug=\"2563\">The Big Bang Theory - 01x03 - The fuzzy boots collorary</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/4/The_luminous_fish_effect\"
debug=\"2795\">The Big Bang Theory - 01x04 - The luminous fish effect</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/5/The_hamburger_postulate\"
debug=\"2937\">The Big Bang Theory - 01x05 - The hamburger postulate</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/6/The_middle_earth_paradigm\"
debug=\"3025\">The Big Bang Theory - 01x06 - The middle earth paradigm</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/7/The_dumpling_paradox\"
debug=\"3161\">The Big Bang Theory - 01x07 - The dumpling paradox</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/8/The_grasshopper_experiment\"
debug=\"3365\">The Big Bang Theory - 01x08 - The grasshopper experiment</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/9/The_Cooper_Hofstadter_polarization\"
debug=\"7863\">The Big Bang Theory - 01x09 - The Cooper Hofstadter polarization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/10/The_Loobenfeld_decay\"
debug=\"7943\">The Big Bang Theory - 01x10 - The Loobenfeld decay</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/11/The_pancake_batter_anomaly\"
debug=\"8069\">The Big Bang Theory - 01x11 - The pancake batter anomaly</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/12/The_Jerusalem_duality\"
debug=\"8415\">The Big Bang Theory - 01x12 - The Jerusalem duality</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/13/The_Bat_Jar_Conjceture\"
debug=\"8561\">The Big Bang Theory - 01x13 - The Bat Jar Conjceture</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/14/The_Nerdvana_Annihilation\"
debug=\"8672\">The Big Bang Theory - 01x14 - The Nerdvana Annihilation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/15/The_Shiksa_Indeterminacy\"
debug=\"8792\">The Big Bang Theory - 01x15 - The Shiksa Indeterminacy</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/16/The_Peanut_Reaction\"
debug=\"8979\">The Big Bang Theory - 01x16 - The Peanut Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/17/The_Tangerine_Factor\"
debug=\"11375\">The Big Bang Theory - 01x17 - The Tangerine Factor</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/1/The_Bad_Fish_Paradigm\"
debug=\"9593\">The Big Bang Theory - 02x01 - The Bad Fish Paradigm</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/2/The_Codpiece_Topology\"
debug=\"9596\">The Big Bang Theory - 02x02 - The Codpiece Topology</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/3/The_Barbarian_Sublimation\"
debug=\"10093\">The Big Bang Theory - 02x03 - The Barbarian Sublimation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/4/The_Griffin_Equivalency\"
debug=\"10094\">The Big Bang Theory - 02x04 - The Griffin Equivalency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/5/The_Euclid_Alternative\"
debug=\"10095\">The Big Bang Theory - 02x05 - The Euclid Alternative</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/6/The_Cooper-Nowitzki_Theorem\"
debug=\"10096\">The Big Bang Theory - 02x06 - The Cooper-Nowitzki Theorem</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/7/The_Panty_Pi%C3%B1ata_Polarization\"
debug=\"9600\">The Big Bang Theory - 02x07 - The Panty Pi\xF1ata Polarization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/8/The_Lizard-Spock_Expansion\"
debug=\"10099\">The Big Bang Theory - 02x08 - The Lizard-Spock Expansion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/9/The_White_Asparagus_Triangulation\"
debug=\"9602\">The Big Bang Theory - 02x09 - The White Asparagus Triangulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/10/The_Vartabedian_Conundrum\"
debug=\"9605\">The Big Bang Theory - 02x10 - The Vartabedian Conundrum</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/11/The_Bath_Item_Gift_Hypothesis\"
debug=\"9608\">The Big Bang Theory - 02x11 - The Bath Item Gift Hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/12/The_Killer_Robot_Instability\"
debug=\"10100\">The Big Bang Theory - 02x12 - The Killer Robot Instability</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/13/The_Friendship_Algorithm\"
debug=\"10102\">The Big Bang Theory - 02x13 - The Friendship Algorithm</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/14/The_Financial_Permeability\"
debug=\"10552\">The Big Bang Theory - 02x14 - The Financial Permeability</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/15/The_Maternal_Capacitance\"
debug=\"10631\">The Big Bang Theory - 02x15 - The Maternal Capacitance</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/16/The_Cushion_Saturation\"
debug=\"11144\">The Big Bang Theory - 02x16 - The Cushion Saturation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/17/The_Terminator_Decoupling\"
debug=\"11339\">The Big Bang Theory - 02x17 - The Terminator Decoupling</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/18/The_Work_Song_Nanocluster\"
debug=\"11418\">The Big Bang Theory - 02x18 - The Work Song Nanocluster</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/19/The_Dead_Hooker_Juxtaposition\"
debug=\"11809\">The Big Bang Theory - 02x19 - The Dead Hooker Juxtaposition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/20/The_Hofstadter_Isotope\"
debug=\"11989\">The Big Bang Theory - 02x20 - The Hofstadter Isotope</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/21/The_Vegas_Renormalization\"
debug=\"12156\">The Big Bang Theory - 02x21 - The Vegas Renormalization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/22/The_Classified_Materials_Turbulence\"
debug=\"12320\">The Big Bang Theory - 02x22 - The Classified Materials Turbulence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/23/The_Monopolar_Expedition\"
debug=\"12769\">The Big Bang Theory - 02x23 - The Monopolar Expedition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/1/The_Electric_Can_Opener_Fluctuation\"
debug=\"20679\">The Big Bang Theory - 03x01 - The Electric Can Opener Fluctuation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/2/The_Jiminy_Conjecture\"
debug=\"20792\">The Big Bang Theory - 03x02 - The Jiminy Conjecture</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/3/The_Gothowitz_Deviation\"
debug=\"21229\">The Big Bang Theory - 03x03 - The Gothowitz Deviation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/4/The_Pirate_Solution\"
debug=\"21404\">The Big Bang Theory - 03x04 - The Pirate Solution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/5/The_Creepy_Candy_Coating_Corollary\"
debug=\"22031\">The Big Bang Theory - 03x05 - The Creepy Candy Coating Corollary</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/6/The_Cornhusker_Vortex\"
debug=\"22315\">The Big Bang Theory - 03x06 - The Cornhusker Vortex</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/7/The_Guitarist_Amplification\"
debug=\"22479\">The Big Bang Theory - 03x07 - The Guitarist Amplification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/8/The_Adhesive_Duck_Deficiency\"
debug=\"22733\">The Big Bang Theory - 03x08 - The Adhesive Duck Deficiency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/9/The_Vengeance_Formulation\"
debug=\"23240\">The Big Bang Theory - 03x09 - The Vengeance Formulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/10/The_Gorilla_Experiment\"
debug=\"23507\">The Big Bang Theory - 03x10 - The Gorilla Experiment</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/11/The_Maternal_Congruence\"
debug=\"23645\">The Big Bang Theory - 03x11 - The Maternal Congruence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/12/The_Psychic_Vortex\"
debug=\"23974\">The Big Bang Theory - 03x12 - The Psychic Vortex</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/13/The_Bozeman_Reaction\"
debug=\"24082\">The Big Bang Theory - 03x13 - The Bozeman Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/14/The_Einstein_Approximation\"
debug=\"24334\">The Big Bang Theory - 03x14 - The Einstein Approximation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/15/The_Large_Hadron_Collision\"
debug=\"24335\">The Big Bang Theory - 03x15 - The Large Hadron Collision</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/16/The_Excelsior_Acquisition\"
debug=\"24337\">The Big Bang Theory - 03x16 - The Excelsior Acquisition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/17/The_Precious_Fragmentation\"
debug=\"24352\">The Big Bang Theory - 03x17 - The Precious Fragmentation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/18/The_Pants_Alternative\"
debug=\"24339\">The Big Bang Theory - 03x18 - The Pants Alternative</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/19/The_Wheaton_Recurrence\"
debug=\"25230\">The Big Bang Theory - 03x19 - The Wheaton Recurrence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/20/The_Spaghetti_Catalyst\"
debug=\"26996\">The Big Bang Theory - 03x20 - The Spaghetti Catalyst</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/21/The_Plimpton_Stimulation\"
debug=\"27303\">The Big Bang Theory - 03x21 - The Plimpton Stimulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/22/The_Staircase_Implementation\"
debug=\"27531\">The Big Bang Theory - 03x22 - The Staircase Implementation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/23/The_Lunar_Excitation\"
debug=\"27712\">The Big Bang Theory - 03x23 - The Lunar Excitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/1/The_Robotic_Manipulation\"
debug=\"32678\">The Big Bang Theory - 04x01 - The Robotic Manipulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/2/The_Cruciferous_Vegetable_Amplification\"
debug=\"33395\">The Big Bang Theory - 04x02 - The Cruciferous Vegetable Amplification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/3/The_Zazzy_Substitution\"
debug=\"33712\">The Big Bang Theory - 04x03 - The Zazzy Substitution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/4/The_Hot_Troll_Deviation\"
debug=\"33944\">The Big Bang Theory - 04x04 - The Hot Troll Deviation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/5/The_Desperation_Emanation\"
debug=\"34325\">The Big Bang Theory - 04x05 - The Desperation Emanation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/6/The_Irish_Pub_Formulation\"
debug=\"34542\">The Big Bang Theory - 04x06 - The Irish Pub Formulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/7/The_Apology_Insufficiency\"
debug=\"34799\">The Big Bang Theory - 04x07 - The Apology Insufficiency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/8/The_21_Second_Excitation\"
debug=\"35076\">The Big Bang Theory - 04x08 - The 21 Second Excitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/9/The_Boyfriend_Complexity\"
debug=\"35418\">The Big Bang Theory - 04x09 - The Boyfriend Complexity</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/10/The_Alien_Parasite_Hypothesis\"
debug=\"36421\">The Big Bang Theory - 04x10 - The Alien Parasite Hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/11/The_Justice_League_Recombination\"
debug=\"36591\">The Big Bang Theory - 04x11 - The Justice League Recombination</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/12/The_Bus_Pants_Utilization\"
debug=\"37789\">The Big Bang Theory - 04x12 - The Bus Pants Utilization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/13/The_Love_Car_Displacement\"
debug=\"38686\">The Big Bang Theory - 04x13 - The Love Car Displacement</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/14/The_Thespian_Catalyst\"
debug=\"39279\">The Big Bang Theory - 04x14 - The Thespian Catalyst</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/15/The_Benefactor_Factor\"
debug=\"39696\">The Big Bang Theory - 04x15 - The Benefactor Factor</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/16/The_Cohabitation_Formulation\"
debug=\"40060\">The Big Bang Theory - 04x16 - The Cohabitation Formulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/17/The_Toast_Derivation\"
debug=\"40369\">The Big Bang Theory - 04x17 - The Toast Derivation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/17/The_toast_derivation\"
debug=\"70619\">The Big Bang Theory - 04x17 - The toast derivation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/18/The_Prestidigitation_Approximation\"
debug=\"41307\">The Big Bang Theory - 04x18 - The Prestidigitation Approximation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/19/The_Zarnecki_Incursion\"
debug=\"42144\">The Big Bang Theory - 04x19 - The Zarnecki Incursion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/20/The_Herb_Garden_Germination\"
debug=\"42506\">The Big Bang Theory - 04x20 - The Herb Garden Germination</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/21/The_Agreement_Dissection\"
debug=\"43453\">The Big Bang Theory - 04x21 - The Agreement Dissection</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/22/The_Wildebeest_Implementation\"
debug=\"43963\">The Big Bang Theory - 04x22 - The Wildebeest Implementation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/23/The_Engagement_Reaction\"
debug=\"44298\">The Big Bang Theory - 04x23 - The Engagement Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/24/The_Roommate_Transmogrification\"
debug=\"45211\">The Big Bang Theory - 04x24 - The Roommate Transmogrification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/99/It_All_Started_With_A_Big_Bang\"
debug=\"61471\">The Big Bang Theory - 04x99 - It All Started With A Big Bang</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/0/Access_All_Areas\"
debug=\"61470\">The Big Bang Theory - 05x00 - Access All Areas</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/1/The_Skank_Reflex_Analysis\"
debug=\"50098\">The Big Bang Theory - 05x01 - The Skank Reflex Analysis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/2/The_Infestation_Hypothesis\"
debug=\"50100\">The Big Bang Theory - 05x02 - The Infestation Hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/3/The_Pulled_Groin_Extrapolation\"
debug=\"50464\">The Big Bang Theory - 05x03 - The Pulled Groin Extrapolation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/4/The_Wiggly_Finger_Catalyst\"
debug=\"50787\">The Big Bang Theory - 05x04 - The Wiggly Finger Catalyst</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/5/The_Russian_Rocket_Reaction\"
debug=\"51286\">The Big Bang Theory - 05x05 - The Russian Rocket Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/6/The_Rhinitis_Revelation\"
debug=\"52502\">The Big Bang Theory - 05x06 - The Rhinitis Revelation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/7/The_Good_Guy_Fluctuation\"
debug=\"53602\">The Big Bang Theory - 05x07 - The Good Guy Fluctuation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/8/The_Isolation_Permutation\"
debug=\"54479\">The Big Bang Theory - 05x08 - The Isolation Permutation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/9/The_Ornithophobia_Diffusion\"
debug=\"54953\">The Big Bang Theory - 05x09 - The Ornithophobia Diffusion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/10/The_Flaming_Spittoon_Acquisition\"
debug=\"55214\">The Big Bang Theory - 05x10 - The Flaming Spittoon Acquisition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/11/The_Speckerman_Recurrence\"
debug=\"56382\">The Big Bang Theory - 05x11 - The Speckerman Recurrence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/12/The_Shiny_Trinket_Maneuver\"
debug=\"58784\">The Big Bang Theory - 05x12 - The Shiny Trinket Maneuver</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/13/The_Recombination_Hypothesis\"
debug=\"59003\">The Big Bang Theory - 05x13 - The Recombination Hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/14/The_Beta_Test_Initiation\"
debug=\"59196\">The Big Bang Theory - 05x14 - The Beta Test Initiation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/15/The_Friendship_Contraction\"
debug=\"59388\">The Big Bang Theory - 05x15 - The Friendship Contraction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/16/The_Vacation_Solution\"
debug=\"59650\">The Big Bang Theory - 05x16 - The Vacation Solution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/17/The_Rothman_Disintegration\"
debug=\"59867\">The Big Bang Theory - 05x17 - The Rothman Disintegration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/18/The_Werewolf_Transformation\"
debug=\"60147\">The Big Bang Theory - 05x18 - The Werewolf Transformation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/19/The_Weekend_Vortex\"
debug=\"60580\">The Big Bang Theory - 05x19 - The Weekend Vortex</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/20/The_Transporter_Malfunction\"
debug=\"61153\">The Big Bang Theory - 05x20 - The Transporter Malfunction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/21/The_Hawking_Excitation\"
debug=\"61378\">The Big Bang Theory - 05x21 - The Hawking Excitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/22/The_Stag_Convergence\"
debug=\"61967\">The Big Bang Theory - 05x22 - The Stag Convergence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/23/The_Launch_Acceleration\"
debug=\"62208\">The Big Bang Theory - 05x23 - The Launch Acceleration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/24/The_Countdown_Reflection\"
debug=\"62389\">The Big Bang Theory - 05x24 - The Countdown Reflection</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/1/The_Date_Night_Variable\"
debug=\"67050\">The Big Bang Theory - 06x01 - The Date Night Variable</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/2/The_Decoupling_Fluctuation\"
debug=\"67274\">The Big Bang Theory - 06x02 - The Decoupling Fluctuation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/3/The_Higgs_Boson_Observation\"
debug=\"67718\">The Big Bang Theory - 06x03 - The Higgs Boson Observation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/4/The_Re_Entry_Minimization\"
debug=\"67942\">The Big Bang Theory - 06x04 - The Re Entry Minimization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/5/The_Holographic_Excitation\"
debug=\"68166\">The Big Bang Theory - 06x05 - The Holographic Excitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/6/The_Extract_Obliteration\"
debug=\"68409\">The Big Bang Theory - 06x06 - The Extract Obliteration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/7/The_Habitation_Configuration\"
debug=\"68645\">The Big Bang Theory - 06x07 - The Habitation Configuration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/8/The_43_Peculiarity\"
debug=\"68891\">The Big Bang Theory - 06x08 - The 43 Peculiarity</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/9/The_Parking_Spot_Escalation\"
debug=\"69291\">The Big Bang Theory - 06x09 - The Parking Spot Escalation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/10/The_Fish_Guts_Displacement\"
debug=\"69486\">The Big Bang Theory - 06x10 - The Fish Guts Displacement</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/11/The_Santa_Simulation\"
debug=\"69725\">The Big Bang Theory - 06x11 - The Santa Simulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/12/The_Egg_Salad_Equivalency\"
debug=\"70156\">The Big Bang Theory - 06x12 - The Egg Salad Equivalency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/13/The_Bakersfield_Expedition\"
debug=\"70438\">The Big Bang Theory - 06x13 - The Bakersfield Expedition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/14/The_Cooper_Kripke_Inversion\"
debug=\"71175\">The Big Bang Theory - 06x14 - The Cooper Kripke Inversion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/15/The_Spoiler_Alert_Segmentation\"
debug=\"71445\">The Big Bang Theory - 06x15 - The Spoiler Alert Segmentation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/16/The_Tangible_Affection_Proof\"
debug=\"71783\">The Big Bang Theory - 06x16 - The Tangible Affection Proof</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/17/The_Monster_Isolation\"
debug=\"72089\">The Big Bang Theory - 06x17 - The Monster Isolation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/18/The_Contractual_Obligation_Implementation\"
debug=\"72726\">The Big Bang Theory - 06x18 - The Contractual Obligation Implementation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/19/The_Closet_Reconfiguration\"
debug=\"73084\">The Big Bang Theory - 06x19 - The Closet Reconfiguration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/20/The_Tenure_Turbulence\"
debug=\"73969\">The Big Bang Theory - 06x20 - The Tenure Turbulence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/21/The_Closure_Alternative\"
debug=\"74818\">The Big Bang Theory - 06x21 - The Closure Alternative</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/22/The_Proton_Resurgence\"
debug=\"75066\">The Big Bang Theory - 06x22 - The Proton Resurgence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/23/The_Love_Spell_Potential\"
debug=\"75335\">The Big Bang Theory - 06x23 - The Love Spell Potential</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/24/The_Bon_Voyage_Reaction\"
debug=\"75567\">The Big Bang Theory - 06x24 - The Bon Voyage Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/1/The_Hofstadter_Insufficiency\"
debug=\"79523\">The Big Bang Theory - 07x01 - The Hofstadter Insufficiency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/2/The_Deception_Verification\"
debug=\"79524\">The Big Bang Theory - 07x02 - The Deception Verification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/3/The_Scavenger_Vortex\"
debug=\"79722\">The Big Bang Theory - 07x03 - The Scavenger Vortex</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/4/The_Raiders_Minimization\"
debug=\"80031\">The Big Bang Theory - 07x04 - The Raiders Minimization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/5/The_Workplace_Proximity\"
debug=\"80254\">The Big Bang Theory - 07x05 - The Workplace Proximity</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/6/The_Romance_Resonance\"
debug=\"80518\">The Big Bang Theory - 07x06 - The Romance Resonance</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/7/The_Proton_Displacement\"
debug=\"81067\">The Big Bang Theory - 07x07 - The Proton Displacement</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/8/The_Itchy_Brain_Simulation\"
debug=\"81272\">The Big Bang Theory - 07x08 - The Itchy Brain Simulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/9/The_Thanksgiving_Decoupling\"
debug=\"81525\">The Big Bang Theory - 07x09 - The Thanksgiving Decoupling</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/10/The_Discovery_Dissipation\"
debug=\"82096\">The Big Bang Theory - 07x10 - The Discovery Dissipation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/11/The_Cooper_Extraction\"
debug=\"82274\">The Big Bang Theory - 07x11 - The Cooper Extraction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/12/The_Hesitation_Ramification\"
debug=\"82674\">The Big Bang Theory - 07x12 - The Hesitation Ramification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/13/The_Occupation_Recalibration\"
debug=\"82916\">The Big Bang Theory - 07x13 - The Occupation Recalibration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/14/The_Convention_Conundrum\"
debug=\"83752\">The Big Bang Theory - 07x14 - The Convention Conundrum</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/15/The_Locomotive_Manipulation\"
debug=\"83978\">The Big Bang Theory - 07x15 - The Locomotive Manipulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/16/The_Table_Polarization\"
debug=\"84736\">The Big Bang Theory - 07x16 - The Table Polarization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/17/The_Friendship_Turbulence\"
debug=\"85106\">The Big Bang Theory - 07x17 - The Friendship Turbulence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/18/The_Mommy_Observation\"
debug=\"85542\">The Big Bang Theory - 07x18 - The Mommy Observation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/19/The_Indecision_Amalgamation\"
debug=\"86494\">The Big Bang Theory - 07x19 - The Indecision Amalgamation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/20/The_Relationship_Diremption\"
debug=\"86744\">The Big Bang Theory - 07x20 - The Relationship Diremption</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/21/The_Anything_Can_Happen_Recurrence\"
debug=\"87403\">The Big Bang Theory - 07x21 - The Anything Can Happen Recurrence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/22/The_Proton_Transmogrification\"
debug=\"87725\">The Big Bang Theory - 07x22 - The Proton Transmogrification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/23/The_Gorilla_Dissolution\"
debug=\"87935\">The Big Bang Theory - 07x23 - The Gorilla Dissolution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/24/The_Status_Quo_Combustion\"
debug=\"88184\">The Big Bang Theory - 07x24 - The Status Quo Combustion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/1/The_Locomotion_Interruption\"
debug=\"92140\">The Big Bang Theory - 08x01 - The Locomotion Interruption</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/2/The_Junior_Professor_Solution\"
debug=\"92142\">The Big Bang Theory - 08x02 - The Junior Professor Solution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/3/The_First_Pitch_Insufficiency\"
debug=\"92307\">The Big Bang Theory - 08x03 - The First Pitch Insufficiency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/4/The_Hook-up_Reverberation\"
debug=\"92545\">The Big Bang Theory - 08x04 - The Hook-up Reverberation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/5/The_Focus_Attenuation\"
debug=\"92757\">The Big Bang Theory - 08x05 - The Focus Attenuation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/6/The_Expedition_Approximation\"
debug=\"93043\">The Big Bang Theory - 08x06 - The Expedition Approximation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/7/The_Misinterpretation_Agitation\"
debug=\"93361\">The Big Bang Theory - 08x07 - The Misinterpretation Agitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/8/The_Prom_Equivalency\"
debug=\"93612\">The Big Bang Theory - 08x08 - The Prom Equivalency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/9/The_Septum_Deviation\"
debug=\"93873\">The Big Bang Theory - 08x09 - The Septum Deviation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/10/The_Champagne_Reflection\"
debug=\"94116\">The Big Bang Theory - 08x10 - The Champagne Reflection</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/11/The_Clean_Room_Infiltration\"
debug=\"94911\">The Big Bang Theory - 08x11 - The Clean Room Infiltration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/12/The_Space_Probe_Disintegration\"
debug=\"95594\">The Big Bang Theory - 08x12 - The Space Probe Disintegration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/13/The_Anxiety_Optimization\"
debug=\"96388\">The Big Bang Theory - 08x13 - The Anxiety Optimization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/14/The_Troll_Manifestation\"
debug=\"96654\">The Big Bang Theory - 08x14 - The Troll Manifestation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/15/The_Comic_Book_Store_Regeneration\"
debug=\"97289\">The Big Bang Theory - 08x15 - The Comic Book Store Regeneration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/16/The_Intimacy_Acceleration\"
debug=\"97610\">The Big Bang Theory - 08x16 - The Intimacy Acceleration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/17/The_Colonization_Application\"
debug=\"97863\">The Big Bang Theory - 08x17 - The Colonization Application</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/18/The_Leftover_Thermalization\"
debug=\"98196\">The Big Bang Theory - 08x18 - The Leftover Thermalization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/19/The_Skywalker_Incursion\"
debug=\"99011\">The Big Bang Theory - 08x19 - The Skywalker Incursion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/20/The_Fortification_Implementation\"
debug=\"99310\">The Big Bang Theory - 08x20 - The Fortification Implementation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/21/The_Communication_Deterioration\"
debug=\"99595\">The Big Bang Theory - 08x21 - The Communication Deterioration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/22/The_Graduation_Transmission\"
debug=\"99816\">The Big Bang Theory - 08x22 - The Graduation Transmission</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/23/The_Maternal_Combustion\"
debug=\"100083\">The Big Bang Theory - 08x23 - The Maternal Combustion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/24/The_Commitment_Determination\"
debug=\"100419\">The Big Bang Theory - 08x24 - The Commitment Determination</a></td></tr><tr><p>\n<p>\n</table>\n</td>\n
\ <td></td>\n </tr>\n <tr> <!-- table
footer -->\n \t<td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/bl.gif\"
/></td>\n <td></td>\n <td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/br.gif\" /></td>\n </tr>\n
\ </table>\n </div>\n<iframe src=\"//s.ato.mx/p.html#id=7869&size=728x90\"
width=\"728\" height=\"90\" frameborder=\"0\" scrolling=\"no\" marginwidth=\"0\"
marginheight=\"0\"></iframe>\n\n\n<center><table border=\"0\" width=\"90%\">\n<tr>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Addic7ed</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Popular Shows</td>\n<td class=\"NewsTitle\"><img width=\"20\"
height=\"20\" src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\"
/><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\" \" />Useful</td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Forums</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/shows.php\">Browse
By Shows</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/4906\">12
Monkeys</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/shows-schedule\">TV
Shows Schedule</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/1031-changelog/\">Site
Changelog</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/movie-subtitles\">Browse
By Movies</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1812\">Homeland</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/2784-frequently-asked-questions/\">Frequently
Asked Questions</a></div></td>\n<td><div id=\"footermenu\">Support Us</div></td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/top-uploaders\">Top Uploaders</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/620\">Modern Family</a></div></td>\n<td><div
id=\"footermenu\">RSS Feeds</div></td>\n<td><div id=\"footermenu\">Premium
Accounts</div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=downloaded\">Top
Downloads</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/466\">Glee</a></div></td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\"/>Tutorials</td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/thread-6-1-1.html\">Video
Formats</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=news\">All
News</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/450\">Parks
and Recreation</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/338-guide-to-syncing-with-subtitleedit/page__p__1485__hl__%2B+%2Bsync__fromsearch__1#entry1485\">How
to Synchronize Subtitles</a></div></td>\n<td><div id=\"footermenu\">Frequently
Asked Questions</div></td>\n</tr> \n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net\">Sub-Talk
Forums</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1277\">Shameless
(US)</a></div></td>\n<td><div id=\"footermenu\">What Are Subtitles</div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=7\">TV Shows
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/latest_comments.php\">Latest
Comments</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/126\">The
Big Bang Theory</a></div></td>\n<td><div id=\"footermenu\">New Translation
Tutorial</div></td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=22\">Movies
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.vreaubagaj.ro/troler/\"
title=\"Trolere ieftine\" alt=\"Trolere ieftine\">Troler ieftin</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/130\">Family Guy</a></div></td>\n<td><div
id=\"footermenu\">Upload a New Subtitle Tutorial</div></td>\n<td class=\"NewsTitle\"><img
width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Stats</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\">Terms of Service</div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/1799\">American Horror Story</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/viewthread.php?tid=294\">How
to have an Avatar</a></div></td>\n<td align=\"left\">.\n\t\t\t\t</td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/contact.php\">Contact</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/15\">House</a></div></td>\n<td><div id=\"footermenu\"><a
href=\"http://www.vreaubagaj.ro/\" alt=\"Trolere\" title=\"Trolere\">Trolere</a></div></td>\n<td>\n</td>\n</tr>\n</table></center>\n</center>\n\n<script
type=\"text/javascript\">\nvar gaJsHost = ((\"https:\" == document.location.protocol)
? \"https://ssl.\" : \"http://www.\");\ndocument.write(unescape(\"%3Cscript
src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n</script>\n<script
type=\"text/javascript\">\ntry {\nvar pageTracker = _gat._getTracker(\"UA-10775680-1\");\npageTracker._trackPageview();\n}
catch(err) {}</script>\n\n\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\n
\ \n</body></html>\n"}
headers:
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Connection: [keep-alive]
Content-Type: [text/html]
Date: ['Sat, 04 Jul 2015 17:11:36 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [nginx]
Set-Cookie: [PHPSESSID=j0e42neln9hhc3oi0um9k4mkr6; path=/]
X-Powered-By: [PHP/5.3.3]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,153 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.addic7ed.com/search.php?Submit=Search&search=The+Big+How+I+Met+Your+Mother
response:
body: {string: "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta
http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>\nSearch
\"The Big How I Met Your Mother\" Subtitle Download - Addic7ed.com - For all
those TV Series Addic7s: Subtitles, Tv Series and Movies Talk, Forum and more
-</title>\n<link href=\"http://www.addic7ed.com/css/wikisubtitles.css\" rel=\"stylesheet\"
title=\"default\" type=\"text/css\" />\n<link rel=\"SHORTCUT ICON\" href=\"favicon.ico\"
/> \n<script type=\"text/javascript\" src=\"http://www.addic7ed.com/js/mootools.v1.11.js\"></script>\n\n</head>\n<body>\n<center><br
/>\n<table border=\"0\">\n<tr>\n <td rowspan=\"9\"><a href=\"/\"><img height=\"200\"
width=\"350\" src=\"http://www.addic7ed.com/images/addic7edheader.jpg\" border=\"0\"
\ title=\"Addic7ed.com - Quality Subtitles for TV Shows and movies\" alt=\"Addic7ed.com
- Quality Subtitles for TV Shows and movies\" /></a></td>\n</tr>\n<tr><td
align=\"center\" colspan=\"2\">\n<h1><small>Download free subtitles for TV
Shows and Movies.</small>&nbsp; \n<select name=\"applang\" class=\"inputCool\"
onchange=\"changeAppLang();\" id=\"comboLang\"><option value=\"ar\">Arabic</option><option
value=\"ca\">Catala</option><option selected=\"selected\" value=\"en\">English</option><option
value=\"eu\">Euskera</option><option value=\"fr\">French</option><option value=\"ga\">Galician</option><option
value=\"de\">German</option><option value=\"gr\">Greek</option><option value=\"hu\">Hungarian</option><option
value=\"it\">Italian</option><option value=\"fa\">Persian</option><option
value=\"pl\">Polish</option><option value=\"pt\">Portuguese</option><option
value=\"br\">Portuguese (Brazilian)</option><option value=\"ro\">Romanian</option><option
value=\"ru\">Russian</option><option value=\"es\">Spanish</option><option
value=\"se\">Swedish</option></select></h1>\n</td></tr>\n<tr><td align=\"center\"
colspan=\"2\">\n<div id=\"hBar\">\n\t\t\t <ul>\n\t\t\t\t<li><a class=\"button
white\" href=\"/newaccount.php\">Signup</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/login.php\">Login</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/shows.php\">Shows</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/allshows/a\">Air dates</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"http://www.sub-talk.net\">Forum</a></li>\n\t\t\t </ul>\n\t\t\t
\ </div>\n</td></tr> \n<tr>\n <td>\n</td><td>\n\t<g:plusone size=\"medium\"></g:plusone>\n
\ <a href=\"http://twitter.com/addic7ed\" target=\"_blank\"><img width=\"32\"
height=\"32\" src=\"http://www.addic7ed.com/images/twitter_right.png\" alt=\"Twitter\"
border=\"0\" /></a>\n\t<a href=\"irc://irc.efnet.net:6667/addic7ed\"><img
width=\"32\" height=\"32\" src=\"http://www.addic7ed.com/images/irc-right.png\"
alt=\"IRC\" border=\"0\" /></a>\n<div style=\"float: right; padding-right:10%;\">\n\n
\ </td>\n </tr>\n <tr>\n <td colspan=2><iframe src=\"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FAddic7ed&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=tahoma&amp;height=21&amp;appId=121322186712\"
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px;
height:21px;\" allowTransparency=\"true\"></iframe>\n </td>\n </tr>\n</table>\n</center>\n\n<center>\n\n<!--[if
lt IE 7]>\n <style type=\"text/css\">\n div, img { behavior: url(http://www.addic7ed.com/js/iepngfix.htc)
}\n </style>\n<![endif]-->\n<br />\n<center>\n<!-- MarketGidComposite Start
-->\n<div id=\"MarketGidScriptRootC13385\">\n <div id=\"MarketGidPreloadC13385\">\n
\ <a id=\"mg_add13385\" href=\"http://mgid.com/advertisers/?utm_source=widget&utm_medium=text&utm_campaign=add\"
target=\"_blank\">Place your ad here</a><br> <a href=\"http://mgid.com/\"
target=\"_blank\">Loading...</a> \n </div>\n <script>\n
\ window.MGWidgetTitle13385 = \"Promoted
Content\"; (function(){\n var
D=new Date(),d=document,b='body',ce='createElement',ac='appendChild',st='style',ds='display',n='none',gi='getElementById';\n
\ var i=d[ce]('iframe');i[st][ds]=n;d[gi](\"MarketGidScriptRootC13385\")[ac](i);try{var
iw=i.contentWindow.document;iw.open();iw.writeln(\"<ht\"+\"ml><bo\"+\"dy></bo\"+\"dy></ht\"+\"ml>\");iw.close();var
c=iw[b];}\n catch(e){var
iw=d;var c=d[gi](\"MarketGidScriptRootC13385\");}var dv=iw[ce]('div');dv.id=\"MG_ID\";dv[st][ds]=n;dv.innerHTML=13385;c[ac](dv);\n
\ var
s=iw[ce]('script');s.async='async';s.defer='defer';s.charset='utf-8';s.src=\"//jsc.mgid.com/a/d/addic7ed.com.13385.js?t=\"+D.getYear()+D.getMonth()+D.getDate()+D.getHours();c[ac](s);})();\n
\ </script>\n
\ </div>\n
\ <!--
MarketGidComposite End -->\n<script type=\"text/javascript\" src=\"//eclkspsa.com/adServe/banners?tid=ADTPOP&tagid=2\"></script>\n</center><br
/>\n\n<div id=\"container\"> \n \t<table class=\"tabel70\" border=\"0\">\n
\ \t<tr> <!-- table header -->\n \t<td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/tl.gif\" /></td>\n <td></td>\n
\ <td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/tr.gif\"
/></td>\n </tr>\n <tr>\n \t<td></td>\n <td>\n<form
action=\"/search.php\" method=\"get\">\n<div align=\"center\">\n<input name=\"search\"
type=\"text\" id=\"search\" size=\"50\" value=\"The Big How I Met Your Mother\"
class=\"inputCool\"/>&nbsp;\n <input name=\"Submit\" type=\"submit\" class=\"coolBoton\"
value=\"Search\" /></form><br />\n\n<b>1 results found</b> </div><br />\n\n<br
/>\n\t<center>\n\n</center>\n<br />\n\n<table class=\"tabel\" align=\"center\"
width=\"80%\" border=\"0\">\n<tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/The_Big_Bang_Theory/3/3/The_Gothowitz_Deviation\"
debug=\"21229\">The Big Bang Theory - 03x03 - The Gothowitz Deviation</a></td></tr><tr><p>\n<p>\n</table>\n</td>\n
\ <td></td>\n </tr>\n <tr> <!-- table
footer -->\n \t<td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/bl.gif\"
/></td>\n <td></td>\n <td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/br.gif\" /></td>\n </tr>\n
\ </table>\n </div>\n<iframe src=\"//s.ato.mx/p.html#id=7869&size=728x90\"
width=\"728\" height=\"90\" frameborder=\"0\" scrolling=\"no\" marginwidth=\"0\"
marginheight=\"0\"></iframe>\n\n\n<center><table border=\"0\" width=\"90%\">\n<tr>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Addic7ed</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Popular Shows</td>\n<td class=\"NewsTitle\"><img width=\"20\"
height=\"20\" src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\"
/><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\" \" />Useful</td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Forums</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/shows.php\">Browse
By Shows</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/4906\">12
Monkeys</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/shows-schedule\">TV
Shows Schedule</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/1031-changelog/\">Site
Changelog</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/movie-subtitles\">Browse
By Movies</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1812\">Homeland</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/2784-frequently-asked-questions/\">Frequently
Asked Questions</a></div></td>\n<td><div id=\"footermenu\">Support Us</div></td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/top-uploaders\">Top Uploaders</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/620\">Modern Family</a></div></td>\n<td><div
id=\"footermenu\">RSS Feeds</div></td>\n<td><div id=\"footermenu\">Premium
Accounts</div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=downloaded\">Top
Downloads</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/466\">Glee</a></div></td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\"/>Tutorials</td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/thread-6-1-1.html\">Video
Formats</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=news\">All
News</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/450\">Parks
and Recreation</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/338-guide-to-syncing-with-subtitleedit/page__p__1485__hl__%2B+%2Bsync__fromsearch__1#entry1485\">How
to Synchronize Subtitles</a></div></td>\n<td><div id=\"footermenu\">Frequently
Asked Questions</div></td>\n</tr> \n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net\">Sub-Talk
Forums</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1277\">Shameless
(US)</a></div></td>\n<td><div id=\"footermenu\">What Are Subtitles</div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=7\">TV Shows
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/latest_comments.php\">Latest
Comments</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/126\">The
Big Bang Theory</a></div></td>\n<td><div id=\"footermenu\">New Translation
Tutorial</div></td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=22\">Movies
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.vreaubagaj.ro/troler/\"
title=\"Trolere ieftine\" alt=\"Trolere ieftine\">Troler ieftin</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/130\">Family Guy</a></div></td>\n<td><div
id=\"footermenu\">Upload a New Subtitle Tutorial</div></td>\n<td class=\"NewsTitle\"><img
width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Stats</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\">Terms of Service</div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/1799\">American Horror Story</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/viewthread.php?tid=294\">How
to have an Avatar</a></div></td>\n<td align=\"left\">.\n\t\t\t\t</td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/contact.php\">Contact</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/15\">House</a></div></td>\n<td><div id=\"footermenu\"><a
href=\"http://www.vreaubagaj.ro/\" alt=\"Trolere\" title=\"Trolere\">Trolere</a></div></td>\n<td>\n</td>\n</tr>\n</table></center>\n</center>\n\n<script
type=\"text/javascript\">\nvar gaJsHost = ((\"https:\" == document.location.protocol)
? \"https://ssl.\" : \"http://www.\");\ndocument.write(unescape(\"%3Cscript
src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n</script>\n<script
type=\"text/javascript\">\ntry {\nvar pageTracker = _gat._getTracker(\"UA-10775680-1\");\npageTracker._trackPageview();\n}
catch(err) {}</script>\n\n\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\n
\ \n</body></html>\n"}
headers:
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Connection: [keep-alive]
Content-Type: [text/html]
Date: ['Sat, 04 Jul 2015 17:11:40 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [nginx]
Set-Cookie: [PHPSESSID=2mcc47dmkf0qb4ffmvushb3pl0; path=/]
X-Powered-By: [PHP/5.3.3]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,533 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.addic7ed.com/search.php?Submit=Search&search=The+Big+Bang
response:
body: {string: "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta
http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>\nSearch
\"The Big Bang\" Subtitle Download - Addic7ed.com - For all those TV Series
Addic7s: Subtitles, Tv Series and Movies Talk, Forum and more -</title>\n<link
href=\"http://www.addic7ed.com/css/wikisubtitles.css\" rel=\"stylesheet\"
title=\"default\" type=\"text/css\" />\n<link rel=\"SHORTCUT ICON\" href=\"favicon.ico\"
/> \n<script type=\"text/javascript\" src=\"http://www.addic7ed.com/js/mootools.v1.11.js\"></script>\n\n</head>\n<body>\n<center><br
/>\n<table border=\"0\">\n<tr>\n <td rowspan=\"9\"><a href=\"/\"><img height=\"200\"
width=\"350\" src=\"http://www.addic7ed.com/images/addic7edheader.jpg\" border=\"0\"
\ title=\"Addic7ed.com - Quality Subtitles for TV Shows and movies\" alt=\"Addic7ed.com
- Quality Subtitles for TV Shows and movies\" /></a></td>\n</tr>\n<tr><td
align=\"center\" colspan=\"2\">\n<h1><small>Download free subtitles for TV
Shows and Movies.</small>&nbsp; \n<select name=\"applang\" class=\"inputCool\"
onchange=\"changeAppLang();\" id=\"comboLang\"><option value=\"ar\">Arabic</option><option
value=\"ca\">Catala</option><option selected=\"selected\" value=\"en\">English</option><option
value=\"eu\">Euskera</option><option value=\"fr\">French</option><option value=\"ga\">Galician</option><option
value=\"de\">German</option><option value=\"gr\">Greek</option><option value=\"hu\">Hungarian</option><option
value=\"it\">Italian</option><option value=\"fa\">Persian</option><option
value=\"pl\">Polish</option><option value=\"pt\">Portuguese</option><option
value=\"br\">Portuguese (Brazilian)</option><option value=\"ro\">Romanian</option><option
value=\"ru\">Russian</option><option value=\"es\">Spanish</option><option
value=\"se\">Swedish</option></select></h1>\n</td></tr>\n<tr><td align=\"center\"
colspan=\"2\">\n<div id=\"hBar\">\n\t\t\t <ul>\n\t\t\t\t<li><a class=\"button
white\" href=\"/newaccount.php\">Signup</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/login.php\">Login</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/shows.php\">Shows</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/allshows/a\">Air dates</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"http://www.sub-talk.net\">Forum</a></li>\n\t\t\t </ul>\n\t\t\t
\ </div>\n</td></tr> \n<tr>\n <td>\n</td><td>\n\t<g:plusone size=\"medium\"></g:plusone>\n
\ <a href=\"http://twitter.com/addic7ed\" target=\"_blank\"><img width=\"32\"
height=\"32\" src=\"http://www.addic7ed.com/images/twitter_right.png\" alt=\"Twitter\"
border=\"0\" /></a>\n\t<a href=\"irc://irc.efnet.net:6667/addic7ed\"><img
width=\"32\" height=\"32\" src=\"http://www.addic7ed.com/images/irc-right.png\"
alt=\"IRC\" border=\"0\" /></a>\n<div style=\"float: right; padding-right:10%;\">\n\n
\ </td>\n </tr>\n <tr>\n <td colspan=2><iframe src=\"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FAddic7ed&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=tahoma&amp;height=21&amp;appId=121322186712\"
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px;
height:21px;\" allowTransparency=\"true\"></iframe>\n </td>\n </tr>\n</table>\n</center>\n\n<center>\n\n<!--[if
lt IE 7]>\n <style type=\"text/css\">\n div, img { behavior: url(http://www.addic7ed.com/js/iepngfix.htc)
}\n </style>\n<![endif]-->\n<br />\n<center>\n<!-- MarketGidComposite Start
-->\n<div id=\"MarketGidScriptRootC13385\">\n <div id=\"MarketGidPreloadC13385\">\n
\ <a id=\"mg_add13385\" href=\"http://mgid.com/advertisers/?utm_source=widget&utm_medium=text&utm_campaign=add\"
target=\"_blank\">Place your ad here</a><br> <a href=\"http://mgid.com/\"
target=\"_blank\">Loading...</a> \n </div>\n <script>\n
\ window.MGWidgetTitle13385 = \"Promoted
Content\"; (function(){\n var
D=new Date(),d=document,b='body',ce='createElement',ac='appendChild',st='style',ds='display',n='none',gi='getElementById';\n
\ var i=d[ce]('iframe');i[st][ds]=n;d[gi](\"MarketGidScriptRootC13385\")[ac](i);try{var
iw=i.contentWindow.document;iw.open();iw.writeln(\"<ht\"+\"ml><bo\"+\"dy></bo\"+\"dy></ht\"+\"ml>\");iw.close();var
c=iw[b];}\n catch(e){var
iw=d;var c=d[gi](\"MarketGidScriptRootC13385\");}var dv=iw[ce]('div');dv.id=\"MG_ID\";dv[st][ds]=n;dv.innerHTML=13385;c[ac](dv);\n
\ var
s=iw[ce]('script');s.async='async';s.defer='defer';s.charset='utf-8';s.src=\"//jsc.mgid.com/a/d/addic7ed.com.13385.js?t=\"+D.getYear()+D.getMonth()+D.getDate()+D.getHours();c[ac](s);})();\n
\ </script>\n
\ </div>\n
\ <!--
MarketGidComposite End -->\n<script type=\"text/javascript\" src=\"//eclkspsa.com/adServe/banners?tid=ADTPOP&tagid=2\"></script>\n</center><br
/>\n\n<div id=\"container\"> \n \t<table class=\"tabel70\" border=\"0\">\n
\ \t<tr> <!-- table header -->\n \t<td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/tl.gif\" /></td>\n <td></td>\n
\ <td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/tr.gif\"
/></td>\n </tr>\n <tr>\n \t<td></td>\n <td>\n<form
action=\"/search.php\" method=\"get\">\n<div align=\"center\">\n<input name=\"search\"
type=\"text\" id=\"search\" size=\"50\" value=\"The Big Bang\" class=\"inputCool\"/>&nbsp;\n
<input name=\"Submit\" type=\"submit\" class=\"coolBoton\" value=\"Search\"
/></form><br />\n\n<b>190 results found</b> </div><br />\n\n<br />\n\t<center>\n\n</center>\n<br
/>\n<center>&nbsp;&nbsp;<img src=\"http://www.addic7ed.com/images/database.png\"
/> <span class=\"titulo\">\nAre you looking for <a href=\"/show/126\" >Show
<i>The Big Bang Theory</i></a>&nbsp;?</span></center><br /><br />\n\n<table
class=\"tabel\" align=\"center\" width=\"80%\" border=\"0\">\n<tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/0/Unaired_Pilot\"
debug=\"27979\">The Big Bang Theory - 01x00 - Unaired Pilot</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/1/Pilot\"
debug=\"2354\">The Big Bang Theory - 01x01 - Pilot</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/2/The_big_bran_hypothesis\"
debug=\"2420\">The Big Bang Theory - 01x02 - The big bran hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/3/The_fuzzy_boots_collorary\"
debug=\"2563\">The Big Bang Theory - 01x03 - The fuzzy boots collorary</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/4/The_luminous_fish_effect\"
debug=\"2795\">The Big Bang Theory - 01x04 - The luminous fish effect</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/5/The_hamburger_postulate\"
debug=\"2937\">The Big Bang Theory - 01x05 - The hamburger postulate</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/6/The_middle_earth_paradigm\"
debug=\"3025\">The Big Bang Theory - 01x06 - The middle earth paradigm</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/7/The_dumpling_paradox\"
debug=\"3161\">The Big Bang Theory - 01x07 - The dumpling paradox</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/8/The_grasshopper_experiment\"
debug=\"3365\">The Big Bang Theory - 01x08 - The grasshopper experiment</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/9/The_Cooper_Hofstadter_polarization\"
debug=\"7863\">The Big Bang Theory - 01x09 - The Cooper Hofstadter polarization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/10/The_Loobenfeld_decay\"
debug=\"7943\">The Big Bang Theory - 01x10 - The Loobenfeld decay</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/11/The_pancake_batter_anomaly\"
debug=\"8069\">The Big Bang Theory - 01x11 - The pancake batter anomaly</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/12/The_Jerusalem_duality\"
debug=\"8415\">The Big Bang Theory - 01x12 - The Jerusalem duality</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/13/The_Bat_Jar_Conjceture\"
debug=\"8561\">The Big Bang Theory - 01x13 - The Bat Jar Conjceture</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/14/The_Nerdvana_Annihilation\"
debug=\"8672\">The Big Bang Theory - 01x14 - The Nerdvana Annihilation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/15/The_Shiksa_Indeterminacy\"
debug=\"8792\">The Big Bang Theory - 01x15 - The Shiksa Indeterminacy</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/16/The_Peanut_Reaction\"
debug=\"8979\">The Big Bang Theory - 01x16 - The Peanut Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/1/17/The_Tangerine_Factor\"
debug=\"11375\">The Big Bang Theory - 01x17 - The Tangerine Factor</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/1/The_Bad_Fish_Paradigm\"
debug=\"9593\">The Big Bang Theory - 02x01 - The Bad Fish Paradigm</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/2/The_Codpiece_Topology\"
debug=\"9596\">The Big Bang Theory - 02x02 - The Codpiece Topology</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/3/The_Barbarian_Sublimation\"
debug=\"10093\">The Big Bang Theory - 02x03 - The Barbarian Sublimation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/4/The_Griffin_Equivalency\"
debug=\"10094\">The Big Bang Theory - 02x04 - The Griffin Equivalency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/5/The_Euclid_Alternative\"
debug=\"10095\">The Big Bang Theory - 02x05 - The Euclid Alternative</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/6/The_Cooper-Nowitzki_Theorem\"
debug=\"10096\">The Big Bang Theory - 02x06 - The Cooper-Nowitzki Theorem</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/7/The_Panty_Pi%C3%B1ata_Polarization\"
debug=\"9600\">The Big Bang Theory - 02x07 - The Panty Pi\xF1ata Polarization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/8/The_Lizard-Spock_Expansion\"
debug=\"10099\">The Big Bang Theory - 02x08 - The Lizard-Spock Expansion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/9/The_White_Asparagus_Triangulation\"
debug=\"9602\">The Big Bang Theory - 02x09 - The White Asparagus Triangulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/10/The_Vartabedian_Conundrum\"
debug=\"9605\">The Big Bang Theory - 02x10 - The Vartabedian Conundrum</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/11/The_Bath_Item_Gift_Hypothesis\"
debug=\"9608\">The Big Bang Theory - 02x11 - The Bath Item Gift Hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/12/The_Killer_Robot_Instability\"
debug=\"10100\">The Big Bang Theory - 02x12 - The Killer Robot Instability</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/13/The_Friendship_Algorithm\"
debug=\"10102\">The Big Bang Theory - 02x13 - The Friendship Algorithm</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/14/The_Financial_Permeability\"
debug=\"10552\">The Big Bang Theory - 02x14 - The Financial Permeability</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/15/The_Maternal_Capacitance\"
debug=\"10631\">The Big Bang Theory - 02x15 - The Maternal Capacitance</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/16/The_Cushion_Saturation\"
debug=\"11144\">The Big Bang Theory - 02x16 - The Cushion Saturation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/17/The_Terminator_Decoupling\"
debug=\"11339\">The Big Bang Theory - 02x17 - The Terminator Decoupling</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/18/The_Work_Song_Nanocluster\"
debug=\"11418\">The Big Bang Theory - 02x18 - The Work Song Nanocluster</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/19/The_Dead_Hooker_Juxtaposition\"
debug=\"11809\">The Big Bang Theory - 02x19 - The Dead Hooker Juxtaposition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/20/The_Hofstadter_Isotope\"
debug=\"11989\">The Big Bang Theory - 02x20 - The Hofstadter Isotope</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/21/The_Vegas_Renormalization\"
debug=\"12156\">The Big Bang Theory - 02x21 - The Vegas Renormalization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/22/The_Classified_Materials_Turbulence\"
debug=\"12320\">The Big Bang Theory - 02x22 - The Classified Materials Turbulence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/2/23/The_Monopolar_Expedition\"
debug=\"12769\">The Big Bang Theory - 02x23 - The Monopolar Expedition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/1/The_Electric_Can_Opener_Fluctuation\"
debug=\"20679\">The Big Bang Theory - 03x01 - The Electric Can Opener Fluctuation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/2/The_Jiminy_Conjecture\"
debug=\"20792\">The Big Bang Theory - 03x02 - The Jiminy Conjecture</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/3/The_Gothowitz_Deviation\"
debug=\"21229\">The Big Bang Theory - 03x03 - The Gothowitz Deviation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/4/The_Pirate_Solution\"
debug=\"21404\">The Big Bang Theory - 03x04 - The Pirate Solution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/5/The_Creepy_Candy_Coating_Corollary\"
debug=\"22031\">The Big Bang Theory - 03x05 - The Creepy Candy Coating Corollary</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/6/The_Cornhusker_Vortex\"
debug=\"22315\">The Big Bang Theory - 03x06 - The Cornhusker Vortex</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/7/The_Guitarist_Amplification\"
debug=\"22479\">The Big Bang Theory - 03x07 - The Guitarist Amplification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/8/The_Adhesive_Duck_Deficiency\"
debug=\"22733\">The Big Bang Theory - 03x08 - The Adhesive Duck Deficiency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/9/The_Vengeance_Formulation\"
debug=\"23240\">The Big Bang Theory - 03x09 - The Vengeance Formulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/10/The_Gorilla_Experiment\"
debug=\"23507\">The Big Bang Theory - 03x10 - The Gorilla Experiment</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/11/The_Maternal_Congruence\"
debug=\"23645\">The Big Bang Theory - 03x11 - The Maternal Congruence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/12/The_Psychic_Vortex\"
debug=\"23974\">The Big Bang Theory - 03x12 - The Psychic Vortex</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/13/The_Bozeman_Reaction\"
debug=\"24082\">The Big Bang Theory - 03x13 - The Bozeman Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/14/The_Einstein_Approximation\"
debug=\"24334\">The Big Bang Theory - 03x14 - The Einstein Approximation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/15/The_Large_Hadron_Collision\"
debug=\"24335\">The Big Bang Theory - 03x15 - The Large Hadron Collision</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/16/The_Excelsior_Acquisition\"
debug=\"24337\">The Big Bang Theory - 03x16 - The Excelsior Acquisition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/17/The_Precious_Fragmentation\"
debug=\"24352\">The Big Bang Theory - 03x17 - The Precious Fragmentation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/18/The_Pants_Alternative\"
debug=\"24339\">The Big Bang Theory - 03x18 - The Pants Alternative</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/19/The_Wheaton_Recurrence\"
debug=\"25230\">The Big Bang Theory - 03x19 - The Wheaton Recurrence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/20/The_Spaghetti_Catalyst\"
debug=\"26996\">The Big Bang Theory - 03x20 - The Spaghetti Catalyst</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/21/The_Plimpton_Stimulation\"
debug=\"27303\">The Big Bang Theory - 03x21 - The Plimpton Stimulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/22/The_Staircase_Implementation\"
debug=\"27531\">The Big Bang Theory - 03x22 - The Staircase Implementation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/3/23/The_Lunar_Excitation\"
debug=\"27712\">The Big Bang Theory - 03x23 - The Lunar Excitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/1/The_Robotic_Manipulation\"
debug=\"32678\">The Big Bang Theory - 04x01 - The Robotic Manipulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/2/The_Cruciferous_Vegetable_Amplification\"
debug=\"33395\">The Big Bang Theory - 04x02 - The Cruciferous Vegetable Amplification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/3/The_Zazzy_Substitution\"
debug=\"33712\">The Big Bang Theory - 04x03 - The Zazzy Substitution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/4/The_Hot_Troll_Deviation\"
debug=\"33944\">The Big Bang Theory - 04x04 - The Hot Troll Deviation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/5/The_Desperation_Emanation\"
debug=\"34325\">The Big Bang Theory - 04x05 - The Desperation Emanation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/6/The_Irish_Pub_Formulation\"
debug=\"34542\">The Big Bang Theory - 04x06 - The Irish Pub Formulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/7/The_Apology_Insufficiency\"
debug=\"34799\">The Big Bang Theory - 04x07 - The Apology Insufficiency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/8/The_21_Second_Excitation\"
debug=\"35076\">The Big Bang Theory - 04x08 - The 21 Second Excitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/9/The_Boyfriend_Complexity\"
debug=\"35418\">The Big Bang Theory - 04x09 - The Boyfriend Complexity</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/10/The_Alien_Parasite_Hypothesis\"
debug=\"36421\">The Big Bang Theory - 04x10 - The Alien Parasite Hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/11/The_Justice_League_Recombination\"
debug=\"36591\">The Big Bang Theory - 04x11 - The Justice League Recombination</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/12/The_Bus_Pants_Utilization\"
debug=\"37789\">The Big Bang Theory - 04x12 - The Bus Pants Utilization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/13/The_Love_Car_Displacement\"
debug=\"38686\">The Big Bang Theory - 04x13 - The Love Car Displacement</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/14/The_Thespian_Catalyst\"
debug=\"39279\">The Big Bang Theory - 04x14 - The Thespian Catalyst</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/15/The_Benefactor_Factor\"
debug=\"39696\">The Big Bang Theory - 04x15 - The Benefactor Factor</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/16/The_Cohabitation_Formulation\"
debug=\"40060\">The Big Bang Theory - 04x16 - The Cohabitation Formulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/17/The_Toast_Derivation\"
debug=\"40369\">The Big Bang Theory - 04x17 - The Toast Derivation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/17/The_toast_derivation\"
debug=\"70619\">The Big Bang Theory - 04x17 - The toast derivation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/18/The_Prestidigitation_Approximation\"
debug=\"41307\">The Big Bang Theory - 04x18 - The Prestidigitation Approximation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/19/The_Zarnecki_Incursion\"
debug=\"42144\">The Big Bang Theory - 04x19 - The Zarnecki Incursion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/20/The_Herb_Garden_Germination\"
debug=\"42506\">The Big Bang Theory - 04x20 - The Herb Garden Germination</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/21/The_Agreement_Dissection\"
debug=\"43453\">The Big Bang Theory - 04x21 - The Agreement Dissection</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/22/The_Wildebeest_Implementation\"
debug=\"43963\">The Big Bang Theory - 04x22 - The Wildebeest Implementation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/23/The_Engagement_Reaction\"
debug=\"44298\">The Big Bang Theory - 04x23 - The Engagement Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/24/The_Roommate_Transmogrification\"
debug=\"45211\">The Big Bang Theory - 04x24 - The Roommate Transmogrification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/4/99/It_All_Started_With_A_Big_Bang\"
debug=\"61471\">The Big Bang Theory - 04x99 - It All Started With A Big Bang</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/0/Access_All_Areas\"
debug=\"61470\">The Big Bang Theory - 05x00 - Access All Areas</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/1/The_Skank_Reflex_Analysis\"
debug=\"50098\">The Big Bang Theory - 05x01 - The Skank Reflex Analysis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/2/The_Infestation_Hypothesis\"
debug=\"50100\">The Big Bang Theory - 05x02 - The Infestation Hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/3/The_Pulled_Groin_Extrapolation\"
debug=\"50464\">The Big Bang Theory - 05x03 - The Pulled Groin Extrapolation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/4/The_Wiggly_Finger_Catalyst\"
debug=\"50787\">The Big Bang Theory - 05x04 - The Wiggly Finger Catalyst</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/5/The_Russian_Rocket_Reaction\"
debug=\"51286\">The Big Bang Theory - 05x05 - The Russian Rocket Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/6/The_Rhinitis_Revelation\"
debug=\"52502\">The Big Bang Theory - 05x06 - The Rhinitis Revelation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/7/The_Good_Guy_Fluctuation\"
debug=\"53602\">The Big Bang Theory - 05x07 - The Good Guy Fluctuation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/8/The_Isolation_Permutation\"
debug=\"54479\">The Big Bang Theory - 05x08 - The Isolation Permutation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/9/The_Ornithophobia_Diffusion\"
debug=\"54953\">The Big Bang Theory - 05x09 - The Ornithophobia Diffusion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/10/The_Flaming_Spittoon_Acquisition\"
debug=\"55214\">The Big Bang Theory - 05x10 - The Flaming Spittoon Acquisition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/11/The_Speckerman_Recurrence\"
debug=\"56382\">The Big Bang Theory - 05x11 - The Speckerman Recurrence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/12/The_Shiny_Trinket_Maneuver\"
debug=\"58784\">The Big Bang Theory - 05x12 - The Shiny Trinket Maneuver</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/13/The_Recombination_Hypothesis\"
debug=\"59003\">The Big Bang Theory - 05x13 - The Recombination Hypothesis</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/14/The_Beta_Test_Initiation\"
debug=\"59196\">The Big Bang Theory - 05x14 - The Beta Test Initiation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/15/The_Friendship_Contraction\"
debug=\"59388\">The Big Bang Theory - 05x15 - The Friendship Contraction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/16/The_Vacation_Solution\"
debug=\"59650\">The Big Bang Theory - 05x16 - The Vacation Solution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/17/The_Rothman_Disintegration\"
debug=\"59867\">The Big Bang Theory - 05x17 - The Rothman Disintegration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/18/The_Werewolf_Transformation\"
debug=\"60147\">The Big Bang Theory - 05x18 - The Werewolf Transformation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/19/The_Weekend_Vortex\"
debug=\"60580\">The Big Bang Theory - 05x19 - The Weekend Vortex</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/20/The_Transporter_Malfunction\"
debug=\"61153\">The Big Bang Theory - 05x20 - The Transporter Malfunction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/21/The_Hawking_Excitation\"
debug=\"61378\">The Big Bang Theory - 05x21 - The Hawking Excitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/22/The_Stag_Convergence\"
debug=\"61967\">The Big Bang Theory - 05x22 - The Stag Convergence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/23/The_Launch_Acceleration\"
debug=\"62208\">The Big Bang Theory - 05x23 - The Launch Acceleration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/5/24/The_Countdown_Reflection\"
debug=\"62389\">The Big Bang Theory - 05x24 - The Countdown Reflection</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/1/The_Date_Night_Variable\"
debug=\"67050\">The Big Bang Theory - 06x01 - The Date Night Variable</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/2/The_Decoupling_Fluctuation\"
debug=\"67274\">The Big Bang Theory - 06x02 - The Decoupling Fluctuation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/3/The_Higgs_Boson_Observation\"
debug=\"67718\">The Big Bang Theory - 06x03 - The Higgs Boson Observation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/4/The_Re_Entry_Minimization\"
debug=\"67942\">The Big Bang Theory - 06x04 - The Re Entry Minimization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/5/The_Holographic_Excitation\"
debug=\"68166\">The Big Bang Theory - 06x05 - The Holographic Excitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/6/The_Extract_Obliteration\"
debug=\"68409\">The Big Bang Theory - 06x06 - The Extract Obliteration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/7/The_Habitation_Configuration\"
debug=\"68645\">The Big Bang Theory - 06x07 - The Habitation Configuration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/8/The_43_Peculiarity\"
debug=\"68891\">The Big Bang Theory - 06x08 - The 43 Peculiarity</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/9/The_Parking_Spot_Escalation\"
debug=\"69291\">The Big Bang Theory - 06x09 - The Parking Spot Escalation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/10/The_Fish_Guts_Displacement\"
debug=\"69486\">The Big Bang Theory - 06x10 - The Fish Guts Displacement</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/11/The_Santa_Simulation\"
debug=\"69725\">The Big Bang Theory - 06x11 - The Santa Simulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/12/The_Egg_Salad_Equivalency\"
debug=\"70156\">The Big Bang Theory - 06x12 - The Egg Salad Equivalency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/13/The_Bakersfield_Expedition\"
debug=\"70438\">The Big Bang Theory - 06x13 - The Bakersfield Expedition</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/14/The_Cooper_Kripke_Inversion\"
debug=\"71175\">The Big Bang Theory - 06x14 - The Cooper Kripke Inversion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/15/The_Spoiler_Alert_Segmentation\"
debug=\"71445\">The Big Bang Theory - 06x15 - The Spoiler Alert Segmentation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/16/The_Tangible_Affection_Proof\"
debug=\"71783\">The Big Bang Theory - 06x16 - The Tangible Affection Proof</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/17/The_Monster_Isolation\"
debug=\"72089\">The Big Bang Theory - 06x17 - The Monster Isolation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/18/The_Contractual_Obligation_Implementation\"
debug=\"72726\">The Big Bang Theory - 06x18 - The Contractual Obligation Implementation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/19/The_Closet_Reconfiguration\"
debug=\"73084\">The Big Bang Theory - 06x19 - The Closet Reconfiguration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/20/The_Tenure_Turbulence\"
debug=\"73969\">The Big Bang Theory - 06x20 - The Tenure Turbulence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/21/The_Closure_Alternative\"
debug=\"74818\">The Big Bang Theory - 06x21 - The Closure Alternative</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/22/The_Proton_Resurgence\"
debug=\"75066\">The Big Bang Theory - 06x22 - The Proton Resurgence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/23/The_Love_Spell_Potential\"
debug=\"75335\">The Big Bang Theory - 06x23 - The Love Spell Potential</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/6/24/The_Bon_Voyage_Reaction\"
debug=\"75567\">The Big Bang Theory - 06x24 - The Bon Voyage Reaction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/1/The_Hofstadter_Insufficiency\"
debug=\"79523\">The Big Bang Theory - 07x01 - The Hofstadter Insufficiency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/2/The_Deception_Verification\"
debug=\"79524\">The Big Bang Theory - 07x02 - The Deception Verification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/3/The_Scavenger_Vortex\"
debug=\"79722\">The Big Bang Theory - 07x03 - The Scavenger Vortex</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/4/The_Raiders_Minimization\"
debug=\"80031\">The Big Bang Theory - 07x04 - The Raiders Minimization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/5/The_Workplace_Proximity\"
debug=\"80254\">The Big Bang Theory - 07x05 - The Workplace Proximity</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/6/The_Romance_Resonance\"
debug=\"80518\">The Big Bang Theory - 07x06 - The Romance Resonance</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/7/The_Proton_Displacement\"
debug=\"81067\">The Big Bang Theory - 07x07 - The Proton Displacement</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/8/The_Itchy_Brain_Simulation\"
debug=\"81272\">The Big Bang Theory - 07x08 - The Itchy Brain Simulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/9/The_Thanksgiving_Decoupling\"
debug=\"81525\">The Big Bang Theory - 07x09 - The Thanksgiving Decoupling</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/10/The_Discovery_Dissipation\"
debug=\"82096\">The Big Bang Theory - 07x10 - The Discovery Dissipation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/11/The_Cooper_Extraction\"
debug=\"82274\">The Big Bang Theory - 07x11 - The Cooper Extraction</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/12/The_Hesitation_Ramification\"
debug=\"82674\">The Big Bang Theory - 07x12 - The Hesitation Ramification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/13/The_Occupation_Recalibration\"
debug=\"82916\">The Big Bang Theory - 07x13 - The Occupation Recalibration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/14/The_Convention_Conundrum\"
debug=\"83752\">The Big Bang Theory - 07x14 - The Convention Conundrum</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/15/The_Locomotive_Manipulation\"
debug=\"83978\">The Big Bang Theory - 07x15 - The Locomotive Manipulation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/16/The_Table_Polarization\"
debug=\"84736\">The Big Bang Theory - 07x16 - The Table Polarization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/17/The_Friendship_Turbulence\"
debug=\"85106\">The Big Bang Theory - 07x17 - The Friendship Turbulence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/18/The_Mommy_Observation\"
debug=\"85542\">The Big Bang Theory - 07x18 - The Mommy Observation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/19/The_Indecision_Amalgamation\"
debug=\"86494\">The Big Bang Theory - 07x19 - The Indecision Amalgamation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/20/The_Relationship_Diremption\"
debug=\"86744\">The Big Bang Theory - 07x20 - The Relationship Diremption</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/21/The_Anything_Can_Happen_Recurrence\"
debug=\"87403\">The Big Bang Theory - 07x21 - The Anything Can Happen Recurrence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/22/The_Proton_Transmogrification\"
debug=\"87725\">The Big Bang Theory - 07x22 - The Proton Transmogrification</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/23/The_Gorilla_Dissolution\"
debug=\"87935\">The Big Bang Theory - 07x23 - The Gorilla Dissolution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/7/24/The_Status_Quo_Combustion\"
debug=\"88184\">The Big Bang Theory - 07x24 - The Status Quo Combustion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/1/The_Locomotion_Interruption\"
debug=\"92140\">The Big Bang Theory - 08x01 - The Locomotion Interruption</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/2/The_Junior_Professor_Solution\"
debug=\"92142\">The Big Bang Theory - 08x02 - The Junior Professor Solution</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/3/The_First_Pitch_Insufficiency\"
debug=\"92307\">The Big Bang Theory - 08x03 - The First Pitch Insufficiency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/4/The_Hook-up_Reverberation\"
debug=\"92545\">The Big Bang Theory - 08x04 - The Hook-up Reverberation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/5/The_Focus_Attenuation\"
debug=\"92757\">The Big Bang Theory - 08x05 - The Focus Attenuation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/6/The_Expedition_Approximation\"
debug=\"93043\">The Big Bang Theory - 08x06 - The Expedition Approximation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/7/The_Misinterpretation_Agitation\"
debug=\"93361\">The Big Bang Theory - 08x07 - The Misinterpretation Agitation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/8/The_Prom_Equivalency\"
debug=\"93612\">The Big Bang Theory - 08x08 - The Prom Equivalency</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/9/The_Septum_Deviation\"
debug=\"93873\">The Big Bang Theory - 08x09 - The Septum Deviation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/10/The_Champagne_Reflection\"
debug=\"94116\">The Big Bang Theory - 08x10 - The Champagne Reflection</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/11/The_Clean_Room_Infiltration\"
debug=\"94911\">The Big Bang Theory - 08x11 - The Clean Room Infiltration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/12/The_Space_Probe_Disintegration\"
debug=\"95594\">The Big Bang Theory - 08x12 - The Space Probe Disintegration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/13/The_Anxiety_Optimization\"
debug=\"96388\">The Big Bang Theory - 08x13 - The Anxiety Optimization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/14/The_Troll_Manifestation\"
debug=\"96654\">The Big Bang Theory - 08x14 - The Troll Manifestation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/15/The_Comic_Book_Store_Regeneration\"
debug=\"97289\">The Big Bang Theory - 08x15 - The Comic Book Store Regeneration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/16/The_Intimacy_Acceleration\"
debug=\"97610\">The Big Bang Theory - 08x16 - The Intimacy Acceleration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/17/The_Colonization_Application\"
debug=\"97863\">The Big Bang Theory - 08x17 - The Colonization Application</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/18/The_Leftover_Thermalization\"
debug=\"98196\">The Big Bang Theory - 08x18 - The Leftover Thermalization</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/19/The_Skywalker_Incursion\"
debug=\"99011\">The Big Bang Theory - 08x19 - The Skywalker Incursion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/20/The_Fortification_Implementation\"
debug=\"99310\">The Big Bang Theory - 08x20 - The Fortification Implementation</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/21/The_Communication_Deterioration\"
debug=\"99595\">The Big Bang Theory - 08x21 - The Communication Deterioration</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/22/The_Graduation_Transmission\"
debug=\"99816\">The Big Bang Theory - 08x22 - The Graduation Transmission</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/23/The_Maternal_Combustion\"
debug=\"100083\">The Big Bang Theory - 08x23 - The Maternal Combustion</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Big_Bang_Theory/8/24/The_Commitment_Determination\"
debug=\"100419\">The Big Bang Theory - 08x24 - The Commitment Determination</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Closer/6/1/The_Big_Bang\"
debug=\"28952\">The Closer - 06x01 - The Big Bang</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_New_Adventures_of_Old_Christine/3/1/The_big_bang\"
debug=\"6773\">The New Adventures of Old Christine - 03x01 - The big bang</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/The_Universe/1/14/Beyond_the_Big_Bang\"
debug=\"19618\">The Universe - 01x14 - Beyond the Big Bang</a></td></tr><tr><p>\n<p>\n</table>\n</td>\n
\ <td></td>\n </tr>\n <tr> <!-- table
footer -->\n \t<td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/bl.gif\"
/></td>\n <td></td>\n <td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/br.gif\" /></td>\n </tr>\n
\ </table>\n </div>\n<iframe src=\"//s.ato.mx/p.html#id=7869&size=728x90\"
width=\"728\" height=\"90\" frameborder=\"0\" scrolling=\"no\" marginwidth=\"0\"
marginheight=\"0\"></iframe>\n\n\n<center><table border=\"0\" width=\"90%\">\n<tr>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Addic7ed</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Popular Shows</td>\n<td class=\"NewsTitle\"><img width=\"20\"
height=\"20\" src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\"
/><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\" \" />Useful</td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Forums</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/shows.php\">Browse
By Shows</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/4906\">12
Monkeys</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/shows-schedule\">TV
Shows Schedule</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/1031-changelog/\">Site
Changelog</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/movie-subtitles\">Browse
By Movies</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1812\">Homeland</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/2784-frequently-asked-questions/\">Frequently
Asked Questions</a></div></td>\n<td><div id=\"footermenu\">Support Us</div></td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/top-uploaders\">Top Uploaders</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/620\">Modern Family</a></div></td>\n<td><div
id=\"footermenu\">RSS Feeds</div></td>\n<td><div id=\"footermenu\">Premium
Accounts</div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=downloaded\">Top
Downloads</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/466\">Glee</a></div></td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\"/>Tutorials</td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/thread-6-1-1.html\">Video
Formats</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=news\">All
News</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/450\">Parks
and Recreation</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/338-guide-to-syncing-with-subtitleedit/page__p__1485__hl__%2B+%2Bsync__fromsearch__1#entry1485\">How
to Synchronize Subtitles</a></div></td>\n<td><div id=\"footermenu\">Frequently
Asked Questions</div></td>\n</tr> \n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net\">Sub-Talk
Forums</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1277\">Shameless
(US)</a></div></td>\n<td><div id=\"footermenu\">What Are Subtitles</div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=7\">TV Shows
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/latest_comments.php\">Latest
Comments</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/126\">The
Big Bang Theory</a></div></td>\n<td><div id=\"footermenu\">New Translation
Tutorial</div></td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=22\">Movies
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.vreaubagaj.ro/troler/\"
title=\"Trolere ieftine\" alt=\"Trolere ieftine\">Troler ieftin</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/130\">Family Guy</a></div></td>\n<td><div
id=\"footermenu\">Upload a New Subtitle Tutorial</div></td>\n<td class=\"NewsTitle\"><img
width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Stats</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\">Terms of Service</div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/1799\">American Horror Story</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/viewthread.php?tid=294\">How
to have an Avatar</a></div></td>\n<td align=\"left\">.\n\t\t\t\t</td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/contact.php\">Contact</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/15\">House</a></div></td>\n<td><div id=\"footermenu\"><a
href=\"http://www.vreaubagaj.ro/\" alt=\"Trolere\" title=\"Trolere\">Trolere</a></div></td>\n<td>\n</td>\n</tr>\n</table></center>\n</center>\n\n<script
type=\"text/javascript\">\nvar gaJsHost = ((\"https:\" == document.location.protocol)
? \"https://ssl.\" : \"http://www.\");\ndocument.write(unescape(\"%3Cscript
src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n</script>\n<script
type=\"text/javascript\">\ntry {\nvar pageTracker = _gat._getTracker(\"UA-10775680-1\");\npageTracker._trackPageview();\n}
catch(err) {}</script>\n\n\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\n
\ \n</body></html>\n"}
headers:
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Connection: [keep-alive]
Content-Type: [text/html]
Date: ['Sat, 04 Jul 2015 17:11:37 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [nginx]
Set-Cookie: [PHPSESSID=ns25ifo5qplrt2o336ogcb9v50; path=/]
X-Powered-By: [PHP/5.3.3]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,514 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.addic7ed.com/search.php?Submit=Search&search=Dallas
response:
body: {string: "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta
http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>\nSearch
\"Dallas\" Subtitle Download - Addic7ed.com - For all those TV Series Addic7s:
Subtitles, Tv Series and Movies Talk, Forum and more -</title>\n<link href=\"http://www.addic7ed.com/css/wikisubtitles.css\"
rel=\"stylesheet\" title=\"default\" type=\"text/css\" />\n<link rel=\"SHORTCUT
ICON\" href=\"favicon.ico\" /> \n<script type=\"text/javascript\" src=\"http://www.addic7ed.com/js/mootools.v1.11.js\"></script>\n\n</head>\n<body>\n<center><br
/>\n<table border=\"0\">\n<tr>\n <td rowspan=\"9\"><a href=\"/\"><img height=\"200\"
width=\"350\" src=\"http://www.addic7ed.com/images/addic7edheader.jpg\" border=\"0\"
\ title=\"Addic7ed.com - Quality Subtitles for TV Shows and movies\" alt=\"Addic7ed.com
- Quality Subtitles for TV Shows and movies\" /></a></td>\n</tr>\n<tr><td
align=\"center\" colspan=\"2\">\n<h1><small>Download free subtitles for TV
Shows and Movies.</small>&nbsp; \n<select name=\"applang\" class=\"inputCool\"
onchange=\"changeAppLang();\" id=\"comboLang\"><option value=\"ar\">Arabic</option><option
value=\"ca\">Catala</option><option selected=\"selected\" value=\"en\">English</option><option
value=\"eu\">Euskera</option><option value=\"fr\">French</option><option value=\"ga\">Galician</option><option
value=\"de\">German</option><option value=\"gr\">Greek</option><option value=\"hu\">Hungarian</option><option
value=\"it\">Italian</option><option value=\"fa\">Persian</option><option
value=\"pl\">Polish</option><option value=\"pt\">Portuguese</option><option
value=\"br\">Portuguese (Brazilian)</option><option value=\"ro\">Romanian</option><option
value=\"ru\">Russian</option><option value=\"es\">Spanish</option><option
value=\"se\">Swedish</option></select></h1>\n</td></tr>\n<tr><td align=\"center\"
colspan=\"2\">\n<div id=\"hBar\">\n\t\t\t <ul>\n\t\t\t\t<li><a class=\"button
white\" href=\"/newaccount.php\">Signup</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/login.php\">Login</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/shows.php\">Shows</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/allshows/a\">Air dates</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"http://www.sub-talk.net\">Forum</a></li>\n\t\t\t </ul>\n\t\t\t
\ </div>\n</td></tr> \n<tr>\n <td>\n</td><td>\n\t<g:plusone size=\"medium\"></g:plusone>\n
\ <a href=\"http://twitter.com/addic7ed\" target=\"_blank\"><img width=\"32\"
height=\"32\" src=\"http://www.addic7ed.com/images/twitter_right.png\" alt=\"Twitter\"
border=\"0\" /></a>\n\t<a href=\"irc://irc.efnet.net:6667/addic7ed\"><img
width=\"32\" height=\"32\" src=\"http://www.addic7ed.com/images/irc-right.png\"
alt=\"IRC\" border=\"0\" /></a>\n<div style=\"float: right; padding-right:10%;\">\n\n
\ </td>\n </tr>\n <tr>\n <td colspan=2><iframe src=\"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FAddic7ed&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=tahoma&amp;height=21&amp;appId=121322186712\"
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px;
height:21px;\" allowTransparency=\"true\"></iframe>\n </td>\n </tr>\n</table>\n</center>\n\n<center>\n\n<!--[if
lt IE 7]>\n <style type=\"text/css\">\n div, img { behavior: url(http://www.addic7ed.com/js/iepngfix.htc)
}\n </style>\n<![endif]-->\n<br />\n<center>\n<!-- MarketGidComposite Start
-->\n<div id=\"MarketGidScriptRootC13385\">\n <div id=\"MarketGidPreloadC13385\">\n
\ <a id=\"mg_add13385\" href=\"http://mgid.com/advertisers/?utm_source=widget&utm_medium=text&utm_campaign=add\"
target=\"_blank\">Place your ad here</a><br> <a href=\"http://mgid.com/\"
target=\"_blank\">Loading...</a> \n </div>\n <script>\n
\ window.MGWidgetTitle13385 = \"Promoted
Content\"; (function(){\n var
D=new Date(),d=document,b='body',ce='createElement',ac='appendChild',st='style',ds='display',n='none',gi='getElementById';\n
\ var i=d[ce]('iframe');i[st][ds]=n;d[gi](\"MarketGidScriptRootC13385\")[ac](i);try{var
iw=i.contentWindow.document;iw.open();iw.writeln(\"<ht\"+\"ml><bo\"+\"dy></bo\"+\"dy></ht\"+\"ml>\");iw.close();var
c=iw[b];}\n catch(e){var
iw=d;var c=d[gi](\"MarketGidScriptRootC13385\");}var dv=iw[ce]('div');dv.id=\"MG_ID\";dv[st][ds]=n;dv.innerHTML=13385;c[ac](dv);\n
\ var
s=iw[ce]('script');s.async='async';s.defer='defer';s.charset='utf-8';s.src=\"//jsc.mgid.com/a/d/addic7ed.com.13385.js?t=\"+D.getYear()+D.getMonth()+D.getDate()+D.getHours();c[ac](s);})();\n
\ </script>\n
\ </div>\n
\ <!--
MarketGidComposite End -->\n<script type=\"text/javascript\" src=\"//eclkspsa.com/adServe/banners?tid=ADTPOP&tagid=2\"></script>\n</center><br
/>\n\n<div id=\"container\"> \n \t<table class=\"tabel70\" border=\"0\">\n
\ \t<tr> <!-- table header -->\n \t<td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/tl.gif\" /></td>\n <td></td>\n
\ <td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/tr.gif\"
/></td>\n </tr>\n <tr>\n \t<td></td>\n <td>\n<form
action=\"/search.php\" method=\"get\">\n<div align=\"center\">\n<input name=\"search\"
type=\"text\" id=\"search\" size=\"50\" value=\"Dallas\" class=\"inputCool\"/>&nbsp;\n
<input name=\"Submit\" type=\"submit\" class=\"coolBoton\" value=\"Search\"
/></form><br />\n\n<b>181 results found</b> </div><br />\n\n<br />\n\t<center>\n\n</center>\n<br
/>\n<center>&nbsp;&nbsp;<img src=\"http://www.addic7ed.com/images/database.png\"
/> <span class=\"titulo\">\nAre you looking for <a href=\"/show/802\" >Show
<i>Dallas</i></a>&nbsp;?</span></center><br /><br />\n\n<table class=\"tabel\"
align=\"center\" width=\"80%\" border=\"0\">\n<tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/1/1/Digger%27s_Daughter\" debug=\"31856\">Dallas
- 01x01 - Digger's Daughter</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/1/2/Lessons\" debug=\"31855\">Dallas - 01x02
- Lessons</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/1/3/Spy_in_the_House\" debug=\"31854\">Dallas
- 01x03 - Spy in the House</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/1/4/Winds_of_Vengeance\" debug=\"31853\">Dallas
- 01x04 - Winds of Vengeance</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/1/5/Barbecue\" debug=\"31852\">Dallas -
01x05 - Barbecue</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/1/Reunion__%281%29\" debug=\"31906\">Dallas
- 02x01 - Reunion (1)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/2/Reunion__%282%29\" debug=\"31905\">Dallas
- 02x02 - Reunion (2)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/3/Old_Acquaintance\" debug=\"31904\">Dallas
- 02x03 - Old Acquaintance</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/4/Bypass\" debug=\"31903\">Dallas - 02x04
- Bypass</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/5/Black_Market_Baby\" debug=\"31901\">Dallas
- 02x05 - Black Market Baby</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/6/Double_Wedding\" debug=\"31900\">Dallas
- 02x06 - Double Wedding</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/7/Runaway\" debug=\"31899\">Dallas - 02x07
- Runaway</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/8/Election\" debug=\"31898\">Dallas -
02x08 - Election</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/9/Survival\" debug=\"31897\">Dallas -
02x09 - Survival</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/10/Act_of_Love\" debug=\"31896\">Dallas
- 02x10 - Act of Love</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/11/Triangle\" debug=\"31895\">Dallas -
02x11 - Triangle</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/12/Fallen_Idol\" debug=\"31894\">Dallas
- 02x12 - Fallen Idol</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/13/Kidnapped\" debug=\"31893\">Dallas
- 02x13 - Kidnapped</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/14/Home_Again\" debug=\"31892\">Dallas
- 02x14 - Home Again</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/15/For_Love_or_Money\" debug=\"31891\">Dallas
- 02x15 - For Love or Money</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/16/Julie%27s_Return\" debug=\"31890\">Dallas
- 02x16 - Julie's Return</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/17/The_Red_File__%281%29\" debug=\"31889\">Dallas
- 02x17 - The Red File (1)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/18/The_Red_File__%282%29\" debug=\"31888\">Dallas
- 02x18 - The Red File (2)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/19/Sue_Ellen%27s_Sister\" debug=\"31887\">Dallas
- 02x19 - Sue Ellen's Sister</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/20/Call_Girl\" debug=\"31886\">Dallas
- 02x20 - Call Girl</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/21/Royal_Marriage\" debug=\"31885\">Dallas
- 02x21 - Royal Marriage</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/22/The_Outsiders\" debug=\"31884\">Dallas
- 02x22 - The Outsiders</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/23/John_Ewing_III__%281%29\" debug=\"31883\">Dallas
- 02x23 - John Ewing III (1)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/2/24/John_Ewing_III_%282%29\" debug=\"31882\">Dallas
- 02x24 - John Ewing III (2)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/1/Whatever_Happened_to_Baby_John%3F__%281%29\"
debug=\"31858\">Dallas - 03x01 - Whatever Happened to Baby John? (1)</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas/3/2/Whatever_Happened_to_Baby_John%3F__%282%29\"
debug=\"31857\">Dallas - 03x02 - Whatever Happened to Baby John? (2)</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas/3/3/The_Silent_Killer\"
debug=\"31881\">Dallas - 03x03 - The Silent Killer</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas/3/4/Secrets\"
debug=\"31880\">Dallas - 03x04 - Secrets</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/5/The_Kristin_Affair\" debug=\"31879\">Dallas
- 03x05 - The Kristin Affair</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/6/The_Dove_Hunt\" debug=\"31878\">Dallas
- 03x06 - The Dove Hunt</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/7/The_Lost_Child\" debug=\"31877\">Dallas
- 03x07 - The Lost Child</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/8/Rodeo\" debug=\"31876\">Dallas - 03x08
- Rodeo</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/9/Mastectomy__%281%29\" debug=\"31875\">Dallas
- 03x09 - Mastectomy (1)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/10/Mastectomy__%282%29\" debug=\"31874\">Dallas
- 03x10 - Mastectomy (2)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/11/The_Heiress\" debug=\"31873\">Dallas
- 03x11 - The Heiress</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/12/Ellie_Saves_the_Day\" debug=\"31872\">Dallas
- 03x12 - Ellie Saves the Day</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/13/Mother_of_the_Year\" debug=\"31871\">Dallas
- 03x13 - Mother of the Year</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/14/Return_Engagements\" debug=\"31870\">Dallas
- 03x14 - Return Engagements</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/15/Love_and_Marriage\" debug=\"31869\">Dallas
- 03x15 - Love and Marriage</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/16/Power_Play\" debug=\"31868\">Dallas
- 03x16 - Power Play</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/17/Paternity_Suit\" debug=\"31867\">Dallas
- 03x17 - Paternity Suit</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/18/Jenna%27s_Return\" debug=\"31866\">Dallas
- 03x18 - Jenna's Return</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/19/Sue_Ellen%27s_Choice\" debug=\"31865\">Dallas
- 03x19 - Sue Ellen's Choice</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/20/Second_Thoughts\" debug=\"31864\">Dallas
- 03x20 - Second Thoughts</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/21/Divorce___Ewing_Style\" debug=\"31863\">Dallas
- 03x21 - Divorce Ewing Style</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/22/Jock%27s_Trial__%281%29\" debug=\"31862\">Dallas
- 03x22 - Jock's Trial (1)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/23/Jock%27s_Trial__%282%29\" debug=\"31861\">Dallas
- 03x23 - Jock's Trial (2)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/24/The_Wheeler_Dealer\" debug=\"31860\">Dallas
- 03x24 - The Wheeler Dealer</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/3/25/A_House_Divided\" debug=\"31859\">Dallas
- 03x25 - A House Divided</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/8/1/Killer_at_Large\" debug=\"69652\">Dallas
- 08x01 - Killer at Large</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/1/The_Family_Ewing\" debug=\"31937\">Dallas
- 09x01 - The Family Ewing</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/2/Rock_Bottom\" debug=\"31936\">Dallas
- 09x02 - Rock Bottom</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/3/Those_Eyes\" debug=\"31935\">Dallas
- 09x03 - Those Eyes</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/4/Resurrection\" debug=\"31934\">Dallas
- 09x04 - Resurrection</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/5/Saving_Grace\" debug=\"31933\">Dallas
- 09x05 - Saving Grace</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/6/Mothers\" debug=\"31932\">Dallas - 09x06
- Mothers</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/7/The_Wind_of_Change\" debug=\"31931\">Dallas
- 09x07 - The Wind of Change</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/8/Quandary\" debug=\"31930\">Dallas -
09x08 - Quandary</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/9/Close_Encounters\" debug=\"31929\">Dallas
- 09x09 - Close Encounters</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/10/Suffer_the_Little_Children\" debug=\"31928\">Dallas
- 09x10 - Suffer the Little Children</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/11/The_Prize\" debug=\"31927\">Dallas
- 09x11 - The Prize</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/12/En_Passant\" debug=\"31926\">Dallas
- 09x12 - En Passant</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/13/Goodbye%2C_Farewell%2C_and_Amen\" debug=\"31925\">Dallas
- 09x13 - Goodbye, Farewell, and Amen</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/14/Curiosity_Killed_the_Cat\" debug=\"31924\">Dallas
- 09x14 - Curiosity Killed the Cat</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/15/The_Missing_Link\" debug=\"31923\">Dallas
- 09x15 - The Missing Link</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/16/Twenty_Four_Hours\" debug=\"31922\">Dallas
- 09x16 - Twenty Four Hours</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/17/The_Deadly_Game\" debug=\"31921\">Dallas
- 09x17 - The Deadly Game</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/18/Blame_it_on_Bogota\" debug=\"31920\">Dallas
- 09x18 - Blame it on Bogota</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/19/Shadow_Games\" debug=\"31919\">Dallas
- 09x19 - Shadow Games</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/20/Missing\" debug=\"31918\">Dallas -
09x20 - Missing</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/21/Dire_Straits\" debug=\"31917\">Dallas
- 09x21 - Dire Straits</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/22/Overture\" debug=\"31916\">Dallas -
09x22 - Overture</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/23/Sitting_Ducks\" debug=\"31915\">Dallas
- 09x23 - Sitting Ducks</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/24/Masquerade\" debug=\"31914\">Dallas
- 09x24 - Masquerade</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/25/Just_Desserts\" debug=\"31913\">Dallas
- 09x25 - Just Desserts</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/26/Nothing%27s_Ever_Perfect\" debug=\"31912\">Dallas
- 09x26 - Nothing's Ever Perfect</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/27/J.R._Rising\" debug=\"31911\">Dallas
- 09x27 - J.R. Rising</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/28/Serendipity\" debug=\"31910\">Dallas
- 09x28 - Serendipity</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/29/Thrice_in_a_Lifetime\" debug=\"31909\">Dallas
- 09x29 - Thrice in a Lifetime</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/30/Hello%2C_Goodbye%2C_Hello\" debug=\"31908\">Dallas
- 09x30 - Hello, Goodbye, Hello</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/9/31/Blast_From_the_Past\" debug=\"31907\">Dallas
- 09x31 - Blast From the Past</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/1/Carousel\" debug=\"25485\">Dallas -
12x01 - Carousel</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/2/No_Greater_Love\" debug=\"25486\">Dallas
- 12x02 - No Greater Love</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/3/The_Call_of_the_Wild\" debug=\"25487\">Dallas
- 12x03 - The Call of the Wild</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/4/Out_of_the_Frying_Pan\" debug=\"25488\">Dallas
- 12x04 - Out of the Frying Pan</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/5/Road_Work\" debug=\"25489\">Dallas
- 12x05 - Road Work</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/6/War_and_Love_and_the_Whole_Damned_Thing\"
debug=\"25490\">Dallas - 12x06 - War and Love and the Whole Damned Thing</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas/12/7/Showdown_at_the_Ewing_Corral\"
debug=\"25491\">Dallas - 12x07 - Showdown at the Ewing Corral</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas/12/8/Deception\"
debug=\"25492\">Dallas - 12x08 - Deception</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/9/Counter_Attack\" debug=\"25493\">Dallas
- 12x09 - Counter Attack</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/10/The_Sting\" debug=\"25494\">Dallas
- 12x10 - The Sting</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/11/The_Two_Mrs._Ewings\" debug=\"25495\">Dallas
- 12x11 - The Two Mrs. Ewings</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/12/The_Switch\" debug=\"25496\">Dallas
- 12x12 - The Switch</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/13/Here%27s_Papa%21\" debug=\"25497\">Dallas
- 12x13 - Here's Papa!</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/14/Comings_and_Goings\" debug=\"25498\">Dallas
- 12x14 - Comings and Goings</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/15/Country_Girl\" debug=\"25499\">Dallas
- 12x15 - Country Girl</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/16/Wedding_Bell_Blues\" debug=\"25500\">Dallas
- 12x16 - Wedding Bell Blues</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/17/The_Way_We_Were\" debug=\"25501\">Dallas
- 12x17 - The Way We Were</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/18/The_Serpent%27s_Tooth\" debug=\"25502\">Dallas
- 12x18 - The Serpent's Tooth</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/19/Three_Hundred\" debug=\"25503\">Dallas
- 12x19 - Three Hundred</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/20/April_Showers\" debug=\"25504\">Dallas
- 12x20 - April Showers</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/21/And_Away_We_Go%21\" debug=\"25505\">Dallas
- 12x21 - And Away We Go!</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/22/Yellow_Brick_Road\" debug=\"25506\">Dallas
- 12x22 - Yellow Brick Road</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/23/The_Sound_of_Money\" debug=\"25507\">Dallas
- 12x23 - The Sound of Money</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/24/The_Great_Texas_Waltz\" debug=\"25508\">Dallas
- 12x24 - The Great Texas Waltz</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/25/Mission_to_Moscow\" debug=\"25510\">Dallas
- 12x25 - Mission to Moscow</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/12/26/Reel_Life\" debug=\"25511\">Dallas
- 12x26 - Reel Life</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/1/Phantom_of_the_Oil_Rig\" debug=\"26320\">Dallas
- 13x01 - Phantom of the Oil Rig</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/2/The_Leopard%27s_Spots\" debug=\"26321\">Dallas
- 13x02 - The Leopard's Spots</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/3/Cry_Me_a_River_of_Oil\" debug=\"26322\">Dallas
- 13x03 - Cry Me a River of Oil</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/4/Ka-Booooom%21\" debug=\"26323\">Dallas
- 13x04 - Ka-Booooom!</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/5/Sunrise%2C_Sunset\" debug=\"26324\">Dallas
- 13x05 - Sunrise, Sunset</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/6/Pride_and_Prejudice\" debug=\"26325\">Dallas
- 13x06 - Pride and Prejudice</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/7/Fathers_and_Other_Strangers\" debug=\"26326\">Dallas
- 13x07 - Fathers and Other Strangers</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/8/Black_Tide\" debug=\"26327\">Dallas
- 13x08 - Black Tide</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/9/Daddy_Dearest\" debug=\"26328\">Dallas
- 13x09 - Daddy Dearest</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/10/Hell%27s_Fury\" debug=\"26329\">Dallas
- 13x10 - Hell's Fury</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/11/Cally_on_a_Hot_Tin_Roof\" debug=\"26330\">Dallas
- 13x11 - Cally on a Hot Tin Roof</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/12/Sex%2C_Lies_and_Videotape\" debug=\"26331\">Dallas
- 13x12 - Sex, Lies and Videotape</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/13/Tale_of_Two_Cities\" debug=\"26332\">Dallas
- 13x13 - Tale of Two Cities</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/14/Judgment_Day\" debug=\"26333\">Dallas
- 13x14 - Judgment Day</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/15/Unchain_My_Heart\" debug=\"26334\">Dallas
- 13x15 - Unchain My Heart</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/16/I_Dream_of_Jeannie\" debug=\"26335\">Dallas
- 13x16 - I Dream of Jeannie</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/17/After_Midnight\" debug=\"26336\">Dallas
- 13x17 - After Midnight</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/18/The_Crucible\" debug=\"26337\">Dallas
- 13x18 - The Crucible</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/19/Dear_Hearts_and_Gentle_People\" debug=\"26338\">Dallas
- 13x19 - Dear Hearts and Gentle People</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/20/Paradise_Lost\" debug=\"26339\">Dallas
- 13x20 - Paradise Lost</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/21/Will_Power\" debug=\"26340\">Dallas
- 13x21 - Will Power</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/22/The_Smiling_Cobra\" debug=\"26341\">Dallas
- 13x22 - The Smiling Cobra</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/23/Jessica_Redux\" debug=\"26346\">Dallas
- 13x23 - Jessica Redux</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/24/Family_Plot\" debug=\"26342\">Dallas
- 13x24 - Family Plot</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/25/The_Southfork_Wedding_Jinx\" debug=\"26343\">Dallas
- 13x25 - The Southfork Wedding Jinx</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas/13/26/Three%2C_Three%2C_Three_%281%29\"
debug=\"26344\">Dallas - 13x26 - Three, Three, Three (1)</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas/13/27/Three%2C_Three%2C_Three_%282%29\"
debug=\"26345\">Dallas - 13x27 - Three, Three, Three (2)</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/film.png\" /></td><td><a href=\"movie/88544\"
debug=\"88544\">Dallas (1950)</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/1/Changing_of_the_Guard\" debug=\"63362\">Dallas
(2012) - 01x01 - Changing of the Guard</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/2/Hedging_Your_Bets\" debug=\"63364\">Dallas
(2012) - 01x02 - Hedging Your Bets</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/3/The_Price_You_Pay\" debug=\"63827\">Dallas
(2012) - 01x03 - The Price You Pay</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/4/The_Last_Hurrah\" debug=\"63994\">Dallas
(2012) - 01x04 - The Last Hurrah</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/5/Truth_and_consequences\"
debug=\"64210\">Dallas (2012) - 01x05 - Truth and consequences</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/6/The_Enemy_of_My_Enemy\"
debug=\"64512\">Dallas (2012) - 01x06 - The Enemy of My Enemy</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/7/Collateral_Damage\"
debug=\"64686\">Dallas (2012) - 01x07 - Collateral Damage</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/8/No_Good_Deed\"
debug=\"64933\">Dallas (2012) - 01x08 - No Good Deed</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/9/Family_Business\"
debug=\"65100\">Dallas (2012) - 01x09 - Family Business</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/10/Revelations\"
debug=\"65276\">Dallas (2012) - 01x10 - Revelations</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/1/Battle_Lines\"
debug=\"71069\">Dallas (2012) - 02x01 - Battle Lines</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/2/Venomous_Creatures\"
debug=\"71070\">Dallas (2012) - 02x02 - Venomous Creatures</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/3/Sins_of_the_Father\"
debug=\"71358\">Dallas (2012) - 02x03 - Sins of the Father</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/4/False_Confessions\"
debug=\"71644\">Dallas (2012) - 02x04 - False Confessions</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/5/Trial_and_Error\"
debug=\"71949\">Dallas (2012) - 02x05 - Trial and Error</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/6/Blame_Game\"
debug=\"72265\">Dallas (2012) - 02x06 - Blame Game</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/7/The_Furious_and_the_Fast\"
debug=\"72625\">Dallas (2012) - 02x07 - The Furious and the Fast</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/8/J.R.%27s_Masterpiece\"
debug=\"72969\">Dallas (2012) - 02x08 - J.R.'s Masterpiece</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/9/Ewings_Unite%21\"
debug=\"73242\">Dallas (2012) - 02x09 - Ewings Unite!</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/10/Guilt_And_Innocence\"
debug=\"73578\">Dallas (2012) - 02x10 - Guilt And Innocence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/11/Let_Me_In\"
debug=\"73846\">Dallas (2012) - 02x11 - Let Me In</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/12/A_Call_to_Arms\"
debug=\"74098\">Dallas (2012) - 02x12 - A Call to Arms</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/13/Love_%40_Family\"
debug=\"74099\">Dallas (2012) - 02x13 - Love & Family</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/14/Guilt_By_Association\"
debug=\"74342\">Dallas (2012) - 02x14 - Guilt By Association</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/15/Legacies\"
debug=\"74347\">Dallas (2012) - 02x15 - Legacies</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/1/The_Return\"
debug=\"84652\">Dallas (2012) - 03x01 - The Return</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/2/Trust_Me\"
debug=\"84941\">Dallas (2012) - 03x02 - Trust Me</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/3/Playing_Chicken\"
debug=\"85388\">Dallas (2012) - 03x03 - Playing Chicken</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/4/Lifting_the_Veil\"
debug=\"85735\">Dallas (2012) - 03x04 - Lifting the Veil</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/5/D.T.R.\"
debug=\"86033\">Dallas (2012) - 03x05 - D.T.R.</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/6/Like_Father%2C_Like_Son\"
debug=\"86406\">Dallas (2012) - 03x06 - Like Father, Like Son</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/7/Like_a_Bad_Penny\"
debug=\"86664\">Dallas (2012) - 03x07 - Like a Bad Penny</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/8/Where_There%27s_Smoke\"
debug=\"86948\">Dallas (2012) - 03x08 - Where There's Smoke</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/9/Denial%2C_Anger%2C_Acceptance\"
debug=\"91222\">Dallas (2012) - 03x09 - Denial, Anger, Acceptance</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/10/Dead_Reckoning\"
debug=\"91469\">Dallas (2012) - 03x10 - Dead Reckoning</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/11/Hurt\"
debug=\"91634\">Dallas (2012) - 03x11 - Hurt</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/12/Victims_of_Love\"
debug=\"91837\">Dallas (2012) - 03x12 - Victims of Love</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/13/Boxed_In\"
debug=\"91959\">Dallas (2012) - 03x13 - Boxed In</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/14/Endgame\"
debug=\"92148\">Dallas (2012) - 03x14 - Endgame</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/15/Brave_New_World\"
debug=\"92160\">Dallas (2012) - 03x15 - Brave New World</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/film.png\" /></td><td><a href=\"movie/82717\"
debug=\"82717\">Dallas Buyers Club (2013)</a></td></tr><tr><p>\n<p>\n</table>\n</td>\n
\ <td></td>\n </tr>\n <tr> <!-- table
footer -->\n \t<td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/bl.gif\"
/></td>\n <td></td>\n <td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/br.gif\" /></td>\n </tr>\n
\ </table>\n </div>\n<iframe src=\"//s.ato.mx/p.html#id=7869&size=728x90\"
width=\"728\" height=\"90\" frameborder=\"0\" scrolling=\"no\" marginwidth=\"0\"
marginheight=\"0\"></iframe>\n\n\n<center><table border=\"0\" width=\"90%\">\n<tr>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Addic7ed</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Popular Shows</td>\n<td class=\"NewsTitle\"><img width=\"20\"
height=\"20\" src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\"
/><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\" \" />Useful</td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Forums</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/shows.php\">Browse
By Shows</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/4906\">12
Monkeys</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/shows-schedule\">TV
Shows Schedule</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/1031-changelog/\">Site
Changelog</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/movie-subtitles\">Browse
By Movies</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1812\">Homeland</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/2784-frequently-asked-questions/\">Frequently
Asked Questions</a></div></td>\n<td><div id=\"footermenu\">Support Us</div></td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/top-uploaders\">Top Uploaders</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/620\">Modern Family</a></div></td>\n<td><div
id=\"footermenu\">RSS Feeds</div></td>\n<td><div id=\"footermenu\">Premium
Accounts</div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=downloaded\">Top
Downloads</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/466\">Glee</a></div></td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\"/>Tutorials</td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/thread-6-1-1.html\">Video
Formats</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=news\">All
News</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/450\">Parks
and Recreation</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/338-guide-to-syncing-with-subtitleedit/page__p__1485__hl__%2B+%2Bsync__fromsearch__1#entry1485\">How
to Synchronize Subtitles</a></div></td>\n<td><div id=\"footermenu\">Frequently
Asked Questions</div></td>\n</tr> \n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net\">Sub-Talk
Forums</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1277\">Shameless
(US)</a></div></td>\n<td><div id=\"footermenu\">What Are Subtitles</div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=7\">TV Shows
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/latest_comments.php\">Latest
Comments</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/126\">The
Big Bang Theory</a></div></td>\n<td><div id=\"footermenu\">New Translation
Tutorial</div></td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=22\">Movies
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.vreaubagaj.ro/troler/\"
title=\"Trolere ieftine\" alt=\"Trolere ieftine\">Troler ieftin</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/130\">Family Guy</a></div></td>\n<td><div
id=\"footermenu\">Upload a New Subtitle Tutorial</div></td>\n<td class=\"NewsTitle\"><img
width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Stats</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\">Terms of Service</div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/1799\">American Horror Story</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/viewthread.php?tid=294\">How
to have an Avatar</a></div></td>\n<td align=\"left\">.\n\t\t\t\t</td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/contact.php\">Contact</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/15\">House</a></div></td>\n<td><div id=\"footermenu\"><a
href=\"http://www.vreaubagaj.ro/\" alt=\"Trolere\" title=\"Trolere\">Trolere</a></div></td>\n<td>\n</td>\n</tr>\n</table></center>\n</center>\n\n<script
type=\"text/javascript\">\nvar gaJsHost = ((\"https:\" == document.location.protocol)
? \"https://ssl.\" : \"http://www.\");\ndocument.write(unescape(\"%3Cscript
src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n</script>\n<script
type=\"text/javascript\">\ntry {\nvar pageTracker = _gat._getTracker(\"UA-10775680-1\");\npageTracker._trackPageview();\n}
catch(err) {}</script>\n\n\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\n
\ \n</body></html>\n"}
headers:
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Connection: [keep-alive]
Content-Type: [text/html]
Date: ['Sat, 04 Jul 2015 17:11:38 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [nginx]
Set-Cookie: [PHPSESSID=38vgutgvno5eij1f9au3ch6au6; path=/]
X-Powered-By: [PHP/5.3.3]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,233 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.addic7ed.com/search.php?Submit=Search&search=Dallas+%282012%29
response:
body: {string: "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta
http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n<title>\nSearch
\"Dallas (2012)\" Subtitle Download - Addic7ed.com - For all those TV Series
Addic7s: Subtitles, Tv Series and Movies Talk, Forum and more -</title>\n<link
href=\"http://www.addic7ed.com/css/wikisubtitles.css\" rel=\"stylesheet\"
title=\"default\" type=\"text/css\" />\n<link rel=\"SHORTCUT ICON\" href=\"favicon.ico\"
/> \n<script type=\"text/javascript\" src=\"http://www.addic7ed.com/js/mootools.v1.11.js\"></script>\n\n</head>\n<body>\n<center><br
/>\n<table border=\"0\">\n<tr>\n <td rowspan=\"9\"><a href=\"/\"><img height=\"200\"
width=\"350\" src=\"http://www.addic7ed.com/images/addic7edheader.jpg\" border=\"0\"
\ title=\"Addic7ed.com - Quality Subtitles for TV Shows and movies\" alt=\"Addic7ed.com
- Quality Subtitles for TV Shows and movies\" /></a></td>\n</tr>\n<tr><td
align=\"center\" colspan=\"2\">\n<h1><small>Download free subtitles for TV
Shows and Movies.</small>&nbsp; \n<select name=\"applang\" class=\"inputCool\"
onchange=\"changeAppLang();\" id=\"comboLang\"><option value=\"ar\">Arabic</option><option
value=\"ca\">Catala</option><option selected=\"selected\" value=\"en\">English</option><option
value=\"eu\">Euskera</option><option value=\"fr\">French</option><option value=\"ga\">Galician</option><option
value=\"de\">German</option><option value=\"gr\">Greek</option><option value=\"hu\">Hungarian</option><option
value=\"it\">Italian</option><option value=\"fa\">Persian</option><option
value=\"pl\">Polish</option><option value=\"pt\">Portuguese</option><option
value=\"br\">Portuguese (Brazilian)</option><option value=\"ro\">Romanian</option><option
value=\"ru\">Russian</option><option value=\"es\">Spanish</option><option
value=\"se\">Swedish</option></select></h1>\n</td></tr>\n<tr><td align=\"center\"
colspan=\"2\">\n<div id=\"hBar\">\n\t\t\t <ul>\n\t\t\t\t<li><a class=\"button
white\" href=\"/newaccount.php\">Signup</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/login.php\">Login</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/shows.php\">Shows</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"/allshows/a\">Air dates</a></li>\n\t\t\t\t<li><a class=\"button
white\" href=\"http://www.sub-talk.net\">Forum</a></li>\n\t\t\t </ul>\n\t\t\t
\ </div>\n</td></tr> \n<tr>\n <td>\n</td><td>\n\t<g:plusone size=\"medium\"></g:plusone>\n
\ <a href=\"http://twitter.com/addic7ed\" target=\"_blank\"><img width=\"32\"
height=\"32\" src=\"http://www.addic7ed.com/images/twitter_right.png\" alt=\"Twitter\"
border=\"0\" /></a>\n\t<a href=\"irc://irc.efnet.net:6667/addic7ed\"><img
width=\"32\" height=\"32\" src=\"http://www.addic7ed.com/images/irc-right.png\"
alt=\"IRC\" border=\"0\" /></a>\n<div style=\"float: right; padding-right:10%;\">\n\n
\ </td>\n </tr>\n <tr>\n <td colspan=2><iframe src=\"http://www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2FAddic7ed&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=tahoma&amp;height=21&amp;appId=121322186712\"
scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width:80px;
height:21px;\" allowTransparency=\"true\"></iframe>\n </td>\n </tr>\n</table>\n</center>\n\n<center>\n\n<!--[if
lt IE 7]>\n <style type=\"text/css\">\n div, img { behavior: url(http://www.addic7ed.com/js/iepngfix.htc)
}\n </style>\n<![endif]-->\n<br />\n<center>\n<!-- MarketGidComposite Start
-->\n<div id=\"MarketGidScriptRootC13385\">\n <div id=\"MarketGidPreloadC13385\">\n
\ <a id=\"mg_add13385\" href=\"http://mgid.com/advertisers/?utm_source=widget&utm_medium=text&utm_campaign=add\"
target=\"_blank\">Place your ad here</a><br> <a href=\"http://mgid.com/\"
target=\"_blank\">Loading...</a> \n </div>\n <script>\n
\ window.MGWidgetTitle13385 = \"Promoted
Content\"; (function(){\n var
D=new Date(),d=document,b='body',ce='createElement',ac='appendChild',st='style',ds='display',n='none',gi='getElementById';\n
\ var i=d[ce]('iframe');i[st][ds]=n;d[gi](\"MarketGidScriptRootC13385\")[ac](i);try{var
iw=i.contentWindow.document;iw.open();iw.writeln(\"<ht\"+\"ml><bo\"+\"dy></bo\"+\"dy></ht\"+\"ml>\");iw.close();var
c=iw[b];}\n catch(e){var
iw=d;var c=d[gi](\"MarketGidScriptRootC13385\");}var dv=iw[ce]('div');dv.id=\"MG_ID\";dv[st][ds]=n;dv.innerHTML=13385;c[ac](dv);\n
\ var
s=iw[ce]('script');s.async='async';s.defer='defer';s.charset='utf-8';s.src=\"//jsc.mgid.com/a/d/addic7ed.com.13385.js?t=\"+D.getYear()+D.getMonth()+D.getDate()+D.getHours();c[ac](s);})();\n
\ </script>\n
\ </div>\n
\ <!--
MarketGidComposite End -->\n<script type=\"text/javascript\" src=\"//eclkspsa.com/adServe/banners?tid=ADTPOP&tagid=2\"></script>\n</center><br
/>\n\n<div id=\"container\"> \n \t<table class=\"tabel70\" border=\"0\">\n
\ \t<tr> <!-- table header -->\n \t<td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/tl.gif\" /></td>\n <td></td>\n
\ <td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/tr.gif\"
/></td>\n </tr>\n <tr>\n \t<td></td>\n <td>\n<form
action=\"/search.php\" method=\"get\">\n<div align=\"center\">\n<input name=\"search\"
type=\"text\" id=\"search\" size=\"50\" value=\"Dallas (2012)\" class=\"inputCool\"/>&nbsp;\n
<input name=\"Submit\" type=\"submit\" class=\"coolBoton\" value=\"Search\"
/></form><br />\n\n<b>40 results found</b> </div><br />\n\n<br />\n\t<center>\n\n</center>\n<br
/>\n<center>&nbsp;&nbsp;<img src=\"http://www.addic7ed.com/images/database.png\"
/> <span class=\"titulo\">\nAre you looking for <a href=\"/show/2559\" >Show
<i>Dallas (2012)</i></a>&nbsp;?</span></center><br /><br />\n\n<table class=\"tabel\"
align=\"center\" width=\"80%\" border=\"0\">\n<tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/1/Changing_of_the_Guard\" debug=\"63362\">Dallas
(2012) - 01x01 - Changing of the Guard</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/2/Hedging_Your_Bets\" debug=\"63364\">Dallas
(2012) - 01x02 - Hedging Your Bets</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/3/The_Price_You_Pay\" debug=\"63827\">Dallas
(2012) - 01x03 - The Price You Pay</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/4/The_Last_Hurrah\" debug=\"63994\">Dallas
(2012) - 01x04 - The Last Hurrah</a></td></tr><tr><tr><td><img src=\"http://www.addic7ed.com/images/television.png\"
/></td><td><a href=\"serie/Dallas_%282012%29/1/5/Truth_and_consequences\"
debug=\"64210\">Dallas (2012) - 01x05 - Truth and consequences</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/6/The_Enemy_of_My_Enemy\"
debug=\"64512\">Dallas (2012) - 01x06 - The Enemy of My Enemy</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/7/Collateral_Damage\"
debug=\"64686\">Dallas (2012) - 01x07 - Collateral Damage</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/8/No_Good_Deed\"
debug=\"64933\">Dallas (2012) - 01x08 - No Good Deed</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/9/Family_Business\"
debug=\"65100\">Dallas (2012) - 01x09 - Family Business</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/1/10/Revelations\"
debug=\"65276\">Dallas (2012) - 01x10 - Revelations</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/1/Battle_Lines\"
debug=\"71069\">Dallas (2012) - 02x01 - Battle Lines</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/2/Venomous_Creatures\"
debug=\"71070\">Dallas (2012) - 02x02 - Venomous Creatures</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/3/Sins_of_the_Father\"
debug=\"71358\">Dallas (2012) - 02x03 - Sins of the Father</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/4/False_Confessions\"
debug=\"71644\">Dallas (2012) - 02x04 - False Confessions</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/5/Trial_and_Error\"
debug=\"71949\">Dallas (2012) - 02x05 - Trial and Error</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/6/Blame_Game\"
debug=\"72265\">Dallas (2012) - 02x06 - Blame Game</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/7/The_Furious_and_the_Fast\"
debug=\"72625\">Dallas (2012) - 02x07 - The Furious and the Fast</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/8/J.R.%27s_Masterpiece\"
debug=\"72969\">Dallas (2012) - 02x08 - J.R.'s Masterpiece</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/9/Ewings_Unite%21\"
debug=\"73242\">Dallas (2012) - 02x09 - Ewings Unite!</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/10/Guilt_And_Innocence\"
debug=\"73578\">Dallas (2012) - 02x10 - Guilt And Innocence</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/11/Let_Me_In\"
debug=\"73846\">Dallas (2012) - 02x11 - Let Me In</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/12/A_Call_to_Arms\"
debug=\"74098\">Dallas (2012) - 02x12 - A Call to Arms</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/13/Love_%40_Family\"
debug=\"74099\">Dallas (2012) - 02x13 - Love & Family</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/14/Guilt_By_Association\"
debug=\"74342\">Dallas (2012) - 02x14 - Guilt By Association</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/2/15/Legacies\"
debug=\"74347\">Dallas (2012) - 02x15 - Legacies</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/1/The_Return\"
debug=\"84652\">Dallas (2012) - 03x01 - The Return</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/2/Trust_Me\"
debug=\"84941\">Dallas (2012) - 03x02 - Trust Me</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/3/Playing_Chicken\"
debug=\"85388\">Dallas (2012) - 03x03 - Playing Chicken</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/4/Lifting_the_Veil\"
debug=\"85735\">Dallas (2012) - 03x04 - Lifting the Veil</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/5/D.T.R.\"
debug=\"86033\">Dallas (2012) - 03x05 - D.T.R.</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/6/Like_Father%2C_Like_Son\"
debug=\"86406\">Dallas (2012) - 03x06 - Like Father, Like Son</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/7/Like_a_Bad_Penny\"
debug=\"86664\">Dallas (2012) - 03x07 - Like a Bad Penny</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/8/Where_There%27s_Smoke\"
debug=\"86948\">Dallas (2012) - 03x08 - Where There's Smoke</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/9/Denial%2C_Anger%2C_Acceptance\"
debug=\"91222\">Dallas (2012) - 03x09 - Denial, Anger, Acceptance</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/10/Dead_Reckoning\"
debug=\"91469\">Dallas (2012) - 03x10 - Dead Reckoning</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/11/Hurt\"
debug=\"91634\">Dallas (2012) - 03x11 - Hurt</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/12/Victims_of_Love\"
debug=\"91837\">Dallas (2012) - 03x12 - Victims of Love</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/13/Boxed_In\"
debug=\"91959\">Dallas (2012) - 03x13 - Boxed In</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/14/Endgame\"
debug=\"92148\">Dallas (2012) - 03x14 - Endgame</a></td></tr><tr><tr><td><img
src=\"http://www.addic7ed.com/images/television.png\" /></td><td><a href=\"serie/Dallas_%282012%29/3/15/Brave_New_World\"
debug=\"92160\">Dallas (2012) - 03x15 - Brave New World</a></td></tr><tr><p>\n<p>\n</table>\n</td>\n
\ <td></td>\n </tr>\n <tr> <!-- table
footer -->\n \t<td class=\"tablecorner\"><img src=\"http://www.addic7ed.com/images/bl.gif\"
/></td>\n <td></td>\n <td class=\"tablecorner\"><img
src=\"http://www.addic7ed.com/images/br.gif\" /></td>\n </tr>\n
\ </table>\n </div>\n<iframe src=\"//s.ato.mx/p.html#id=7869&size=728x90\"
width=\"728\" height=\"90\" frameborder=\"0\" scrolling=\"no\" marginwidth=\"0\"
marginheight=\"0\"></iframe>\n\n\n<center><table border=\"0\" width=\"90%\">\n<tr>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Addic7ed</td>\n<td class=\"NewsTitle\"><img width=\"20\" height=\"20\"
src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\"
alt=\" \" />Popular Shows</td>\n<td class=\"NewsTitle\"><img width=\"20\"
height=\"20\" src=\"http://www.addic7ed.com/images/television.png\" alt=\"TV\"
/><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\" \" />Useful</td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Forums</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/shows.php\">Browse
By Shows</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/4906\">12
Monkeys</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/shows-schedule\">TV
Shows Schedule</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/1031-changelog/\">Site
Changelog</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/movie-subtitles\">Browse
By Movies</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1812\">Homeland</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/2784-frequently-asked-questions/\">Frequently
Asked Questions</a></div></td>\n<td><div id=\"footermenu\">Support Us</div></td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/top-uploaders\">Top Uploaders</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/620\">Modern Family</a></div></td>\n<td><div
id=\"footermenu\">RSS Feeds</div></td>\n<td><div id=\"footermenu\">Premium
Accounts</div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=downloaded\">Top
Downloads</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/466\">Glee</a></div></td>\n<td
class=\"NewsTitle\"><img width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\"/>Tutorials</td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/thread-6-1-1.html\">Video
Formats</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/log.php?mode=news\">All
News</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/450\">Parks
and Recreation</a></div></td>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net/topic/338-guide-to-syncing-with-subtitleedit/page__p__1485__hl__%2B+%2Bsync__fromsearch__1#entry1485\">How
to Synchronize Subtitles</a></div></td>\n<td><div id=\"footermenu\">Frequently
Asked Questions</div></td>\n</tr> \n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.sub-talk.net\">Sub-Talk
Forums</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/1277\">Shameless
(US)</a></div></td>\n<td><div id=\"footermenu\">What Are Subtitles</div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=7\">TV Shows
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"/latest_comments.php\">Latest
Comments</a></div></td>\n<td><div id=\"footermenu\"><a href=\"/show/126\">The
Big Bang Theory</a></div></td>\n<td><div id=\"footermenu\">New Translation
Tutorial</div></td>\n<td><div id=\"footermenu\"><a href=\"http://sub-talk.net/index.php?gid=22\">Movies
Talk</a></div></td>\n</tr>\n<tr>\n<td><div id=\"footermenu\"><a href=\"http://www.vreaubagaj.ro/troler/\"
title=\"Trolere ieftine\" alt=\"Trolere ieftine\">Troler ieftin</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/130\">Family Guy</a></div></td>\n<td><div
id=\"footermenu\">Upload a New Subtitle Tutorial</div></td>\n<td class=\"NewsTitle\"><img
width=\"20\" height=\"20\" src=\"http://www.addic7ed.com/images/television.png\"
alt=\"TV\" /><img src=\"http://www.addic7ed.com/images/invisible.gif\" alt=\"
\" />Stats</td>\n</tr>\n<tr>\n<td><div id=\"footermenu\">Terms of Service</div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/1799\">American Horror Story</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"http://sub-talk.net/viewthread.php?tid=294\">How
to have an Avatar</a></div></td>\n<td align=\"left\">.\n\t\t\t\t</td>\n</tr>\n<tr>\n<td><div
id=\"footermenu\"><a href=\"/contact.php\">Contact</a></div></td>\n<td><div
id=\"footermenu\"><a href=\"/show/15\">House</a></div></td>\n<td><div id=\"footermenu\"><a
href=\"http://www.vreaubagaj.ro/\" alt=\"Trolere\" title=\"Trolere\">Trolere</a></div></td>\n<td>\n</td>\n</tr>\n</table></center>\n</center>\n\n<script
type=\"text/javascript\">\nvar gaJsHost = ((\"https:\" == document.location.protocol)
? \"https://ssl.\" : \"http://www.\");\ndocument.write(unescape(\"%3Cscript
src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));\n</script>\n<script
type=\"text/javascript\">\ntry {\nvar pageTracker = _gat._getTracker(\"UA-10775680-1\");\npageTracker._trackPageview();\n}
catch(err) {}</script>\n\n\n<script type=\"text/javascript\" src=\"http://apis.google.com/js/plusone.js\"></script>\n
\ \n</body></html>\n"}
headers:
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Connection: [keep-alive]
Content-Type: [text/html]
Date: ['Sat, 04 Jul 2015 17:11:38 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [nginx]
Set-Cookie: [PHPSESSID=uj1fmp2tpmevdai9ef5b9913l3; path=/]
X-Powered-By: [PHP/5.3.3]
status: {code: 200, message: OK}
version: 1
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,826 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRwW7CMAyG7zxF1PtIug6pBxMeYIdJe4PQGtbRxCV2qj3+SokEQmhD4vbZ8u//
lw2bH9+rESN3FNZFuTSFwtBQ24X9ukiye6mLjV2AR/mi9hN5oMA4NQYXnWe7UGeaQMHo+oQnUsAS
UyMzq0nstxjPhYLgPFqhAwbQM+f+RZ0XTBHsYSzrPZWruFtRdRy+O5GaXX2s3kDnkSzXV3rQ15b3
/FmcJH4gwKsx6uP9STNsKLR/urWUtj1aszQV6Fz85zWHyle+TIHOD8nAJ7p93y9uhcB49wEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['226']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:08 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=kv18go15rf5o3qpjitt8sa8q34; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+a3YxOGdv
MTVyZjVvM3Fwaml0dDhzYThxMzQ8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5tb3ZpZWhh
c2g8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPjViOGY4ZjRlNDFjY2IyMWU8L3N0cmluZz48L3ZhbHVl
Pgo8L21lbWJlcj4KPG1lbWJlcj4KPG5hbWU+c3VibGFuZ3VhZ2VpZDwvbmFtZT4KPHZhbHVlPjxz
dHJpbmc+ZnJlLGdlcjwvc3RyaW5nPjwvdmFsdWU+CjwvbWVtYmVyPgo8bWVtYmVyPgo8bmFtZT5t
b3ZpZWJ5dGVzaXplPC9uYW1lPgo8dmFsdWU+PHN0cmluZz43MDMzNzMyNzE0PC9zdHJpbmc+PC92
YWx1ZT4KPC9tZW1iZXI+Cjwvc3RydWN0PjwvdmFsdWU+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVy
Pgo8bmFtZT5pbWRiaWQ8L25hbWU+Cjx2YWx1ZT48aW50Pjc3MDgyODwvaW50PjwvdmFsdWU+Cjwv
bWVtYmVyPgo8bWVtYmVyPgo8bmFtZT5zdWJsYW5ndWFnZWlkPC9uYW1lPgo8dmFsdWU+PHN0cmlu
Zz5mcmUsZ2VyPC9zdHJpbmc+PC92YWx1ZT4KPC9tZW1iZXI+Cjwvc3RydWN0PjwvdmFsdWU+Cjwv
ZGF0YT48L2FycmF5PjwvdmFsdWU+CjwvcGFyYW0+CjwvcGFyYW1zPgo8L21ldGhvZENhbGw+Cg==
headers:
Accept-Encoding: [gzip]
Content-Length: ['739']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA+2dW3ebSBLH3/MpdPIu1PeLjsZzfMusz9iZrO3s2d23BhqbjSQ0gJzxfPpFF8e3
xAhJ5RCl3kBC8O9SdVNdP4oe/PrXaNi58XmRZuNf3tKAvO34cZTF6fjql7fTMumat7/uvRmMfHmd
xee+mGTjwlcfTFzuRsXem85iq9roDG7ccOpnW51BUebTqJxvd6ofj0KfL3Y6g7Eb+b2idOW0GPTm
O8sv7n++PEOlYY8R0vnj90Fvubs8tPfg2EHv4fm/drHYle6lS7k8d7d3e53B7PAve0+Ofdq25UeP
Ltp5cOkzV0bXPj64fXT9b5z5QbNH2U3qr11x/aTlneftv/vouYZvyzo5upiGZ7NrvEuHvqE2Q4Sm
WsIom4v6x7zhjUTJ0CQmEV7QKAoZ9YDqDm5Lf5H+3dRsmnCuOdNUAGq7TEf+7KKhMgLoZGVaDtdx
Mmol10orCSSukjZT9b7abto13TjIkqAovR8GjFAeaEYmQTicVqNI8BdTopv4YTa+DT5//hwU07C4
HUfXeRZE2Sgo8hKsPftROXXDw6OmlgYTtEYnMVRIBiZojXFFCelMJGginefKMEW8VJowyWgUCmbA
tJ66orxs3JNZn7G+1NAduungzJhiEsjRPhY+P2nq9HCjyqkbX03dlW8sKcmBblqzoS7LR65sKAhy
rLqYjlo0UO1Pq+g2P8xGIz9uaKXe9sXE8ZErm3ax2Y2oS0mXqg5Vfan6RIGZ68DFrelu566sTttU
TgAn6Cj7PB5mLi4Om7rSHpWGQIbV537oXQEa8wCqf/eh8d0wIAQstp1ravoHC84F0DC2VHQyisOm
ExNNDFQgM9e0hsOduXEnSzoXM4cDVnbcdPjY8pA/F/If7/I1RnxA08wcaa3BVQdwAfw778pp7lty
+5lFnu/T6FNz/96yC51c/KG4bRxvwljlLgBeo9e/y301VQbznmWAV7TDe2bz0arXV+c9GU1c2iqv
PnfjT983DvZ56ouLKlzJxu0wy0LR8SQtsripXwNJmo/Tv6fjpo4zWoQuUE7dlnnd/A87OTs6+ODy
xvM6wF5/vOQrDQUdfqAMMDd2N285TZt2/b3rspz0e714GGQTPy6WOaIiyPKrnh/34uWZe0lazT/i
XpFHXTdJezd50o1iL3zoeKx6RRp3P91Qc5VRmScy439O/peWpSmc+ZOL3n1COLj6G8YK/00nr2CF
6psnRjDCcUKNdLLOCKCJtLvkXrF+42cZ76+2/ssHd02oa2k14+xmSXc+4+xuFKrMf/oI2D37HTK+
p9oMkVQQi4wPGd+LgjZnfBrOz9ZnfGeLfNc8/RD85vNZ/mue8ToYTs/vMl7H//7nx/QivTxGqlcj
xkqrgXrEelTPGh1FSjtuPIuI4SZxQnMhOJOEqQgor7IB1aOsL4BUbUL1rLVAicNdoXpXHijNglSv
Ts0uUT3bIaQveZ8B8SGkemBUzxDINP36TK9ZjNMqsMd4YDUQ30ay1+CvQ7JXKwTJXr0sJHtbJXsx
UGZkA7K3uL8g2fuuupDsIdnbyKnbMrfbMbL38fJdF+5B8u8D9gzR0oUq9rWk5z4LvHNgT/KQJdzq
pJZugubSXg3szZrQCOxtFKm0FuylVYCdxi2kepB3qzWy8JBy1gR4kJJ2itspoQ1UwmNL3G7+nPq5
Ck7T98fB/nAY/GtR5txNciR2NWIMoaxVdXhaRV4oxaQlUiuro5jEoQy1tTSOCQ/bSOw4EPNcn9hR
Iq0CnF3uArHDOrwaPUjs6ogd0V2mOsT0he5DVSAhsYOrwzOW/QDM7r4O7y7ImSG7YH//sHuU/pZe
7p+2CtphNd5KqpDZIbN7rmiXmB3geyB+XGaH1XgrqkJmt4IaZHbI7JDZrWQgrMa751XUaMuYFwlZ
BdotUsC7B+20SFwoQuJqoR1kOu2VoN2iCViNh9CuBXIQ2r0oaBsv1GQCrhBray/UpMQ8ebtU4aMy
yzVyuxox2lrTKm5nQqadDVXIYmVIGFXyIi+JMpRKKmzSRm4H1UU2qbSTBiraRG5XLwq53U/B7Rbv
zyS2z2WfwA2jyO2AuF0V3EC+eGF9btdpEOMgtENo91AVQrvVhCC0q5eFhXYI7TbyHoR2q+hCaIfQ
biOnbsvUDqFd+6GdFIkhVFFZ+/bI+xTwzkE7J0gU09DZcIVKO7hc2qtV2s2agNAOoV0L5CC0e1EQ
roKHq+DhKnjrasVV8JDibU0UUryfiOLhKni1clpK8XAVPER4GypChIcIDxHeE0mI8L5iFER4K6pC
hLeCGkR4iPAQ4a1kIER4uAoeroKHCA8R3veXgwjvRUFbQHgGsixri4vcHZ0uH0zHhe7WAXeUWCFb
tdId80oqG9mEhFwpzmLKlbZW8EhEXCRAjGz3yJ2WFmiVyl0hd7jSXY0eJHerkDvdobzPVF8gufvR
yB3TrJ3ld80jnVYRPFzubjVViPAQ4T1XhAivVtCPjfBwubsVVbUV4QE+EokI7xuKEOHVWAkRXq2B
cLm7L/CKK+ETKxiJVyN4s3zwzhE8ZZmTkZL1XAs0ofZqBG/WBFzuDgleC+QgwXtR0OYETxPJ4DKS
WITXPpZnmDJAdQjrobzIGSZNHKvQqdBENkoSzrmTmljiIbXuGMqzlLbpVZpUcCIp5L+HpXj1ghDo
QQE906FiDvTgnjVAoAcD9Khhpp1Eb5PIp1VsD6vzVlKFaA/R3nNFiPZqBa2P9vaKkUuHk2yap0Cj
Adbr1craPdgH6OfNYd9emU+rGAIoeYnsbwVJyP7q/7DdYX87Wb5HwkRrk8QxXwn+zVPJuwf/fMjC
hCQsWgH+waXgXg3+zZqA5XsI/1ogB+Hfi4K2AP+oIHAPK2yxfG+eBMPSvXVwn5VWt6pyzxodRUo7
bjyLiOEmcUJzITiThKkIKK+y4cp5QKo2wn3WAiUOsXKvXhSCvp8G9NkOIX3J+wyOZSPogwF9hkCm
6bdbuPftGKdVYA+L9lZThWQPyd5zRUj2agVh0d6WOR4W7bVAFxbtIbjbyKnbMrfbMXC3i0V7hmjp
QhX72nq1+yzwznE7yUOWcKuT2nePgubSXo/bVU1oU9HeoBe70t3tDnouz93tcvfRsY/P/tiSCxsW
PsrG8eMA47HdBnE2DYd+lobgsrryYq/uYg8bcX/UoDdxuRvtvVluFLOtkS+vs/jcF5NsXFRH/R/1
q+9tYOAAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['2401']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:08 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=kv18go15rf5o3qpjitt8sa8q34; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Eb3dubG9hZFN1
YnRpdGxlczwvbWV0aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz5rdjE4
Z28xNXJmNW8zcXBqaXR0OHNhOHEzNDwvc3RyaW5nPjwvdmFsdWU+CjwvcGFyYW0+CjxwYXJhbT4K
PHZhbHVlPjxhcnJheT48ZGF0YT4KPHZhbHVlPjxzdHJpbmc+MTk1Mzc2NzY1MDwvc3RyaW5nPjwv
dmFsdWU+CjwvZGF0YT48L2FycmF5PjwvdmFsdWU+CjwvcGFyYW0+CjwvcGFyYW1zPgo8L21ldGhv
ZENhbGw+Cg==
headers:
Accept-Encoding: [gzip]
Content-Length: ['292']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4Sdx5LzXHed576KrzRF2cip6rNcyAARCSLPkHPOuHrjlX/ZsuTQkybZRDjn7L3W
s9gk+Pd/u/ruryNf1noc/us/wf8F+qe/8iEds3oo/+s/7Vvxn6l/+m///J/+7vOtGjM7X6dxWPP3
gSle4n795//01/+49d746+8j7vb8z62//l63ZU+3f7n917txn+TL/7jz199D3Of/vG7xtq9/g/9y
5x9/+F+b/2MP7zn8MwJBf5nq3+A/7v7jqeC/ee7f4L/d///pYFm8xf+vQ8XLEt//eu+vv/88/X/e
+3fP/fdj+8dD/9tB//o3h66zdU+2euvyou7y/+0k/i+7/zdjh2kcJQmSwKF/N/6//uMs/OtD//FM
/u8n9x/m5f9/SjK2Ksy//qAIfeNKe+FCt4+pAtay4vhYrRTYSUHpoc1urAqYozGsKOq13f82FLOH
qs8DMTcEWql2MQF6qxfAMXCPYrmbibfFkDbgE3rUZAbyEal1FRNKkJFraV72ZCaGiUIanPhlIvWl
RfpLd/sPT3dyBkGS9rNV2gAioemPeVx00O88aGCITGEFiedi50+IGIF54jgwYcyUdYEBGyVp4ZFA
gU6gda3isl9rIWOIQDY4TQNrPwzwz95hOoii7CHpJN8hCgS8O0QVVMsLP7hptNP1EcR5qsd+tt6h
Augo2SV4UdHMR4YWDOXo22zi6GfHCGpHvQBQLtSL0eU7kRRe5AMaCEQDGnOEAUTQo/uyZ5U5A0hH
e3fvJI5YgkRCGeq7vs+eEzt1+VSQM9uiPUdKk7fSoiDxK1BM7uMG3y7ftz/bUDhBTyD3xwCrhgYK
790IdSMcSO2CPPPr6CZplWObjgAyXuuIRvadJHGa1SlMLrGFInnLkjsQ5XDpJp5VJHcebkCyoHPr
SzqWqTSFNX2Eq0MIWuti+A5ijDoAE8HM70If7LijBLDjgAlJeAFPOKh4NNz4IX0vUL7erpDnTbUW
zWIdJjIM5I/dAn5OGrwgs9QYDg/daY/0k32zOG70hgOnD9XaKIvPWCzPducxc/wB1JU62tI8xiDF
gxYbTNq6AG/NgLdki5s4LpnfOwoNDpKiDobSUsNpdblTx+0Rvr3dFQskwEOFI+LT/mja6kiT6jSe
WL4J3wB5EqLEreEFDQWA5SH0Um8ViKNfLLJu1gtriVsVvEgIcjTSvgvqu1bP1Mczo8YHiCCTcTVJ
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
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['33165']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:08 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=kv18go15rf5o3qpjitt8sa8q34; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+a3YxOGdvMTVyZjVvM3Fw
aml0dDhzYThxMzQ8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95yi6V5ajAsXQzmACxNvUOioJLQl/SEe3wJNIMbo7nudN/OmA81L
D2RC53tralqVnBI0nVW9edQ0hvvhTBtRgMbwtOqGfrTGY3oYpZPai4KslIDAJIeIMxHwwcUuLExS
s27RrYKAkRqFDzJED2wRubC15wlpB3HknFwvwLLMVrbzAtvP/xqGnTXqZ5qysR1Q8JKfKmBZ/Qtb
tsrf3FzA8kUy+Jk+7/cGaUzqgngBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['194']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:08 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=kv18go15rf5o3qpjitt8sa8q34; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95xiwl6KCQtMhnoCN96g0EFJaEv6Qzy+BZpAjNHd92b65k0Hry81
wkzWDUY3+bkocyDdGTnoR5MH35/q/MozVOSfRt7JTUY7ioVJWKEcz2CjCICzGAMtBOi8DZ1fGaJZ
tWQ3AaiFIu688MEhW0Vq7PY0Ie7Aq/ICtzUctPHQm6AlstRMRnZwIjumfY2mzmj5M1ua0I7Ey6Ks
amRJ/Qtbt0qf3l8hS/dJ4Bb6vOYb0rW33YYBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:08 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,186 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRQY7CMAxF95wi6h4SiipRyaQHmAXS3CBtPVBonE6dRHP8KSUSaDQCJHbPlr//
lw3Vj+1FxJE7R7tsvVKZQGpc29FhlwX/tdxmlV6ARX907Sfy4IhxagxmNJb1QlxpAgHR9AEvJID9
GBo/s5jEtsbxWgggY1F7d0YCOXPq39RpwRRBrw9uKDex+46+3B7JbGjITzlTLECmkSSXd3qQ95b/
+bM3PvALAXKlxP7jTTNsHLUP3VoX6h61WqmiBJmqZ2ZzqnTm2xTI9JEEfKG///sFGksCTvgBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['227']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:07 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=1gop93viqvt98hna3np2j2snv5; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+MWdvcDkz
dmlxdnQ5OGhuYTNucDJqMnNudjU8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5zZWFzb248
L25hbWU+Cjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPgo8L21lbWJlcj4KPG1lbWJlcj4KPG5h
bWU+cXVlcnk8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPk1hcnZlbHMgQWdlbnRzIG9mIFMuSC5JLkUu
TC5ELjwvc3RyaW5nPjwvdmFsdWU+CjwvbWVtYmVyPgo8bWVtYmVyPgo8bmFtZT5lcGlzb2RlPC9u
YW1lPgo8dmFsdWU+PGludD42PC9pbnQ+PC92YWx1ZT4KPC9tZW1iZXI+CjxtZW1iZXI+CjxuYW1l
PnN1Ymxhbmd1YWdlaWQ8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPmh1bjwvc3RyaW5nPjwvdmFsdWU+
CjwvbWVtYmVyPgo8L3N0cnVjdD48L3ZhbHVlPgo8L2RhdGE+PC9hcnJheT48L3ZhbHVlPgo8L3Bh
cmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['599']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA+1cW3ObOBR+769gsjP7hhBXg5e6E8fOxNPcNs52Z/dNRsJmy8VF4CT99SsIThzH
LpFttWyXyUwsgZC+czjn6Ej6BvfDfRRKC5LSIInfH6kAHkkk9hIcxNP3R3nmy/bRh947NyLZLME3
hM6TmBJ2YY5SFNHeO+mxxAqSu0BhToqS5NIszb2sLEvs4WhC0seK5MYoIj2aoSynrlJWqhvPj1c9
MAw9DULp6qOrVNWqqbLS1lVW+980GEYZ+tZQKE3Rw7ImuUXzp9pa23XZqksvBpVWhr5AmTcjuP/w
YvwtPa+I7edhmJH7bE1w6bX4y0uvIWxHNRqM88lFsgjIaRASTmhQDKYSzhmiswbB6T9kZBx8bZKG
boOIXIybAag0oyzIwl3MSHVMw7AMA+piwDFoBapLVuZEdoHSBQkpOJ6SOKMg8cEYnIERGIJzMABj
qA2hBY7BaYq8LE8JBmdJTgnoaHAO/hz25QFrNjCByh7SLEPujwFNBTkyE/KYgUDhyYBX/cIA7eAw
huVo4sxgl6Ci+56OPTwhHadj+L6NNYItjExj4qsqFqe8c0SzW273hl1D7YpypGcv54Rl2rbpOI4Y
VH9Qko54jV5QHCzfWzzN0ZRwQ5rlsbj4l6QRyjgBiYxV4zxqUKA6zllOm54kUcTiPB8q5fBgMB6g
jNfFNKgasqrK0JZYENAdFgeEqauPcGPc7QZlrFteOEAcoEFyF4cJwvSE15R6qmkJipFlwnhDQoLo
LnmQdPBESKCYp9e8s6ZmAgiFZcYlKF5LsI2OZgtFNIrwhDc5gx3btEWuaXawzV9/0Y3fHu1SSnxp
1S7LW9Kx9GSWUmmWgvEPecPRgaeQEshfBKU7zCACVVPY207B2gaCYBV5EUGlYTRjOisy2cvA+8zv
BQc2odH4ytId7vxVjFaWCfUOseEsj6coDZC4xLrKGWkzDKhY4jLHZ/2OojkKGmXYNyj+/GNTa5IG
hI5ZCpTEvKFR0OsqEQ3nAU0wr2lbAkP1xyDmNRyyFEKUWTdlsVi+stHFoH+NUu7FYk/TLcO0RZlT
PhlWBzacsE6uVc0U5Pu/5yR9uC5OhkhGUp5AuXa0smWUp4HoNs/eMsSK/JtfyGbptyigDt2XQg07
gavWXtLmHFc8crI1PtVj3xylDgqP5pOwyhCCTVGrHuS2jTdOmGUf6zZ7GPe5zIu7zZjLV7Y4zgPe
Kb03y7J5V1FwCJI5iWm1nUxBkk4VEiu46lnxg5CwH5p6MpoHyiL15YlqOLBj2Lal0ADL6jSZO/oi
+LLIHHsWIz2ea/9oNF6YyvOBEph+FaOFv4P5d9ACu7OmBB050Peh6ut1ShC65748B6C7C393d7dZ
+qcLSxHqJEVlYJQTX6byTA5kIocylpHsL5f98qxY9st7LVBee/er51p+wBq0lh/wIyH9XPwAk/0J
3Afaix+wJTWTZEm7hxb7ebUFCc4Gt58e/w0/XYFZ3hIDasCYmgXNJhEDUMdCnmVAn0CiWr6jG7aF
fa2jG46DVGvSPGIA7JqC0oE9iAEdS7UEGVpLDKgH1RID/h/EACjrUFLtrqZ2VUHnii0xQBgxQDMN
kfu9+xMD9s2AGkUHgC0b4C2oWjZAywbYGVHLBqgF1LIBWjZAywYQlk+3bIB6SC0boAZKywZo2QAt
G+Ct2Fs2QMsGeAFqDzaA7XiOYUwmRH0TG6A8Pvrp2AC2bxhex3LUWkqE0I3278UGKEX4j7ABXGX1
4wGusvplgRdt6z9aQImXxPibn0jACYt7pNi5sliQrWp1g60K8dzKVarPOFQFWpTWP/rwL7cfifYt
QgAA
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['1371']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:07 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=1gop93viqvt98hna3np2j2snv5; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+MWdvcDkzdmlxdnQ5OGhu
YTNucDJqMnNudjU8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95yiYS+trFwM5QAuTLxBoaOS0Nb0h3h8C0wCMUZ33+u8mTcdaF9m
ZBP6MDjblMdKlAxt7/Rg702Z4u1wKltZgMH4cPqK4elswPzwVF6ZIAu2UgYGkxoTzsQgRJ/6uDDL
zaZDvwoGVhmUIaqYAvBFUGFrpwl5B1kLwS5n4CTJynde4Pv5X8Owd1b/TNMudSNKUYm6Bk7qX9iy
FX1zcwGnixCEmT7v9wZFg1bKeAEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['193']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:07 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=1gop93viqvt98hna3np2j2snv5; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95xiwl4KiQtMhnoCN96g0EFJaEv6Qzy+BZpAjNHd92b65k0Hry81
wkzWDUY3eVWUOZDujBz0o8mD7091fuUZKvJPI+/kJqMdxcIkrFCOZ7BRBMBZjIEWAnTehs6vDNGs
WrKbANRCEXde+OCQrSI1dnuaEHfg5/ICtzUctPHQm6AlstRMRnZwIjumfY2mzmj5M1ua0I7Ey6Ks
amRJ/Qtbt0qf3l8hS/dJ4Bb6vOYbaMBv3YYBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:07 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,206 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRTY7CMAyF95wi6n5I6IjCwoQDsBhpbhBaFyj5KbWDOD6hRAKNRsxI7D5bfnnP
MawvzoozDnQIflXMpqoQ6OvQHPxuVURuP5bFWk/AIe9D843UB0+YGr0ZjCM9EXdKIOBsbMQbCSAe
Ys0jiyR2WxzuhQBvHGoOR/QgR879hzo/kCJoE7tqx1U3X/Ylm1M1a+28pUVnP0HmkSyXT3qQz5a/
+RMbjvSPAKVS4mvzphnWwTcv3ZoQtxa1mqoybZarv8zGVPmbH1Mg80Uy0I1+3u8KdB9H3fgBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['227']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:05 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=auj6gt6j58p2taq61fl5fs7jl3; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+YXVqNmd0
Nmo1OHAydGFxNjFmbDVmczdqbDM8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5tb3ZpZWhh
c2g8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPjViOGY4ZjRlNDFjY2IyMWU8L3N0cmluZz48L3ZhbHVl
Pgo8L21lbWJlcj4KPG1lbWJlcj4KPG5hbWU+c3VibGFuZ3VhZ2VpZDwvbmFtZT4KPHZhbHVlPjxz
dHJpbmc+ZnJlLGdlcjwvc3RyaW5nPjwvdmFsdWU+CjwvbWVtYmVyPgo8bWVtYmVyPgo8bmFtZT5t
b3ZpZWJ5dGVzaXplPC9uYW1lPgo8dmFsdWU+PHN0cmluZz43MDMzNzMyNzE0PC9zdHJpbmc+PC92
YWx1ZT4KPC9tZW1iZXI+Cjwvc3RydWN0PjwvdmFsdWU+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVy
Pgo8bmFtZT5pbWRiaWQ8L25hbWU+Cjx2YWx1ZT48aW50Pjc3MDgyODwvaW50PjwvdmFsdWU+Cjwv
bWVtYmVyPgo8bWVtYmVyPgo8bmFtZT5zdWJsYW5ndWFnZWlkPC9uYW1lPgo8dmFsdWU+PHN0cmlu
Zz5mcmUsZ2VyPC9zdHJpbmc+PC92YWx1ZT4KPC9tZW1iZXI+Cjwvc3RydWN0PjwvdmFsdWU+Cjwv
ZGF0YT48L2FycmF5PjwvdmFsdWU+CjwvcGFyYW0+CjwvcGFyYW1zPgo8L21ldGhvZENhbGw+Cg==
headers:
Accept-Encoding: [gzip]
Content-Length: ['739']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
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
OcjXYOAAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['2401']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:05 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=auj6gt6j58p2taq61fl5fs7jl3; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+YXVqNmd0Nmo1OHAydGFx
NjFmbDVmczdqbDM8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6DIBCF956CsK+gqy5GPEAXTXoDlGlrImD4MT1+UUk0TdPuvse8mTcMtC89
khmdH6xpaFVyStD0Vg3m0dAY7qczbUUBGsPTqhv6yRqP6WGSTmovCrJRAgKzHCMuRMAHF/uwMknN
ukO3CQJGahQ+yBA9sFXkwt6eJ6QdRM05uV6AZZmt7OAFdpz/NQx7a9TPNGVjN6LgJa8rYFn9C1u3
yt/cXcDyRTL4hT7v9wZFFXqCeAEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['193']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:05 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=auj6gt6j58p2taq61fl5fs7jl3; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQSw6DMAxE95zCYl+SSl1QyYQTdNMbBGJaJJKgfFCPXz6RQFXV7t7YGY9jrF96
gImc762p8nPBcyDTWtWbR5XH0J3KvBYZagpPq+7kR2s8zYVROqm9yGCjGQAnOURaCNAHF9uwMsxm
3ZDbBKCRmoQPMkSPbBWpsdvThHkHceFXuK3hYGyAzkajkKVmMrKDE9kx7Ws0tdaon9nKxmYgwQvO
S2RJ/Qtbt0qf3l8hS/dJ4Bf6vOYbJSaHa4YBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:05 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,187 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRQY7CMAxF95wi6h4SmBHMwoQDsECaG6SNC4UmLolTcXxKiQQajQak2T1b/v5f
NmwurhU9htiQXxfzmSoE+ops4/frInE9/So2egIO+UD2G2NHPuLQ6EwwLuqJuNMAAnrTJryRgMgh
VTyyGMSuxHAvBHjjUDOd0IMcOfcf6rxgiKCroMpjs6J6aXt16OnMp2XdJT5+gswjWS6f9CCfLX/z
j2w4xTcCLJQSu+0/zbAib/90s5TKFrWaqY8FyFy9MhtT5TM/pkDmj2SIN/r5vys9Mxtb+AEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['226']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:05 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=cr0bji7of6dv0hvoqtk6fputj4; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+Y3IwYmpp
N29mNmR2MGh2b3F0azZmcHV0ajQ8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5xdWVyeTwv
bmFtZT4KPHZhbHVlPjxzdHJpbmc+ZW5kZXJzLmdhbWUuMjAxMy43MjBwLmJsdXJheS54MjY0LXNw
YXJrcy5ta3Y8L3N0cmluZz48L3ZhbHVlPgo8L21lbWJlcj4KPG1lbWJlcj4KPG5hbWU+c3VibGFu
Z3VhZ2VpZDwvbmFtZT4KPHZhbHVlPjxzdHJpbmc+Z2VyPC9zdHJpbmc+PC92YWx1ZT4KPC9tZW1i
ZXI+Cjwvc3RydWN0PjwvdmFsdWU+CjwvZGF0YT48L2FycmF5PjwvdmFsdWU+CjwvcGFyYW0+Cjwv
cGFyYW1zPgo8L21ldGhvZENhbGw+Cg==
headers:
Accept-Encoding: [gzip]
Content-Length: ['478']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
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
aP276P8B6iSi8VBdAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['1553']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:06 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=cr0bji7of6dv0hvoqtk6fputj4; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+Y3IwYmppN29mNmR2MGh2
b3F0azZmcHV0ajQ8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95yi6V5aZeNiKAdwYeINCh2VhLakP8TjW6AJxBjdfa/zZt50oHnp
gUzofG9NTY8lpwRNZ1VvHjWN4X4400YUoDE8rbqhH63xmB5G6aT2oiArJSAwySHiTAR8cLELC5PU
rFt0qyBgpEbhgwzRA1tELmzteULaQZw4J9cLsCyzle28wPbzv4ZhZ436maZsbAcUvORVBSyrf2HL
VvmbmwtYvkgGP9Pn/d43FXXyeAEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['193']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:06 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=cr0bji7of6dv0hvoqtk6fputj4; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95xiwl4KiQtJhnoCN96g0EFJaEv6Qzy+BZpAjNHd92b65k0Hry81
wkzWDUY3eVWUOZDujBz0o8mD70+X/MozVOSfRt7JTUY7ioVJWKEcz2CjCICzGAMtBOi8DZ1fGaJZ
tWQ3AaiFIu688MEhW0Vq7PY0Ie7Az2UNtzUctPHQm6AlstRMRnZwIjumfY2mzmj5M1ua0I7Ey6Ks
amRJ/Qtbt0qf3l8hS/dJ4Bb6vOYbV7CkU4YBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:06 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,161 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRTY7CMAyF95wi6n5IiAR0YcIBWIw0N0hTAxXND4mD5viUEgmEECCx+2z5+T3Z
sP63PTthTJ13q2o2FRVDZ3zbud2qyrT9qau1moBF2vv2D1PwLuHQCDpqm9SEXWkABifdZ7wQg0Qx
GxqZDWLbYLwWDJy2qMgf0AEfufRv6rJgiKAoSLld7IKp93Np9LKJdTczFI5z4GWkyPmdHvi95TP/
RJpy+iCAFIL9br40Q+Nd+9Kt9bnpUYmpkMBL8c5rDFWufJsCXh5SIF3o8X1nyMpjPfcBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['224']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:53:58 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=tp22f6gpc8h52ca7br8i1ctpq5; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Ob09wZXJhdGlv
bjwvbWV0aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz50cDIyZjZncGM4
aDUyY2E3YnI4aTFjdHBxNTwvc3RyaW5nPjwvdmFsdWU+CjwvcGFyYW0+CjwvcGFyYW1zPgo8L21l
dGhvZENhbGw+Cg==
headers:
Accept-Encoding: [gzip]
Content-Length: ['181']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA71UQW6DMBC85xUW59Y2hEhFcsgDeqjUDyBjtolVY6fYTtvfF4gVQtKWRI16mzXj
2dld1mz1USu0g8ZKo5dRjGmEQAtTSb1eRt693D9Eq3zGanAbUz2D3RptoT3Y8obXNp+hPWoBYjuu
PHQIMesaL1yPUXu5LqHZB4hpXkNuHXfeMtIH4cNwPSi0HvKEUvT0yEgIA5UccRk51v8uWWXetTK8
KpSspZvKevB9pnYQXCtTclUk6aYYa4+kz9S7A6ldVxMjHRh4ZEwc1/SzEaEkaFfI7XTi0MAswUlK
cTJPcZykd2iBFzGe4zhdnPT4D676VhRiA+K1KD8vtuYtNH0pt/IRujMakzBeXzim+LZDOlh488bx
Cy1k2W1N/N8v249x2KUrV9aCMLr6dVUr40sFOcV0njISoqlkx64GFiPhEQvAduj0yfsC3Y8tfSsF
AAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['344']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:53:58 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=tp22f6gpc8h52ca7br8i1ctpq5; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+dHAyMmY2Z3BjOGg1MmNh
N2JyOGkxY3RwcTU8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQQQ6DIBBF956CuK9QV12MeIAumvQGKNPWRKBhwPT4RSXRNE27e5/5M38YaF9m
ZBN6GpxtymMlSoa2d3qw96aM4XY4la0swGB4OH1FejpLmB6eyitDsmArJWAwqTHiTAwo+NiHhVlq
Nh36VTCwyqCkoEIk4IvIha09T0g7yFoIdjkDzzJb+c4LfD//axj2zuqfadrFbkQpKlEDz+Jf1rJU
/uXmAp4PkoFm+jzfG9lJD213AQAA
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['192']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:53:58 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=tp22f6gpc8h52ca7br8i1ctpq5; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQQQ6CMBBF95xiwl5ajQtNhnICN96g0EFJaEtoSzy+UJpAjNHd+zP986eD1Uv3
MNHoOmvK/FjwHMg0VnXmUebBt4dLXokMNfmnVXdygzWO5sIgR6mdyGClGQAn2QdaCND5MTQ+Msxm
XdO4CkAjNQnnpQ8OWRSpsdnThHkHceZXuMVwMNZDa4NRyFIzGdnOiWyf9jWaGmvUz2xlQ92T4AU/
IUviX1ZcKv15e4UsnSeBW+jzmG8XBP1ahQEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['199']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:53:58 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,236 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WR0WrDMAxF3/sVJu+rvZbSDVT3A/Yw2B84trJkteUQ2Waf3zQ1tIyxDfZ2JHR1
LxIcP4MXBSceIh2ax7VqBJKNbqD3Q5NT9/DUHPUKAqY+ujfkMRLj3BjNZALrlbjSDAKK8RkvJIDT
lG1aWMzi0OJ0LQSQCahTPCGBXLj2b+q6YI6gi7cDtc+8cyMV/7HtOqv63rZFgawjVS7v9CDvLb/z
52RS5j8E2CglXl/+aYY2kvvRzcXcetRqrTZ7kLX6zWxJVc98mwJZP1KBL/T1f2c8Qhe3+AEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['226']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:02 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=vlcinb9s5dpnvlj3ffc0hhcbv0; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+dmxjaW5i
OXM1ZHBudmxqM2ZmYzBoaGNidjA8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5tb3ZpZWhh
c2g8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPjViOGY4ZjRlNDFjY2IyMWU8L3N0cmluZz48L3ZhbHVl
Pgo8L21lbWJlcj4KPG1lbWJlcj4KPG5hbWU+c3VibGFuZ3VhZ2VpZDwvbmFtZT4KPHZhbHVlPjxz
dHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9tZW1iZXI+CjxtZW1iZXI+CjxuYW1lPm1vdmll
Ynl0ZXNpemU8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPjcwMzM3MzI3MTQ8L3N0cmluZz48L3ZhbHVl
Pgo8L21lbWJlcj4KPC9zdHJ1Y3Q+PC92YWx1ZT4KPC9kYXRhPjwvYXJyYXk+PC92YWx1ZT4KPC9w
YXJhbT4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['543']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
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
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['4307']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:02 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=vlcinb9s5dpnvlj3ffc0hhcbv0; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+dmxjaW5iOXM1ZHBudmxq
M2ZmYzBoaGNidjA8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95yi6V5aXBgXQzmACxNvUOioJLQl/SEe3wJNIMbo7nudN/OmA81L
D2RC53tralqVnBI0nVW9edQ0hvvhTBtRgMbwtOqGfrTGY3oYpZPai4KslIDAJIeIMxHwwcUuLExS
s27RrYKAkRqFDzJED2wRubC15wlpB3HknFwvwLLMVrbzAtvP/xqGnTXqZ5qysR1Q8JJXJ2BZ/Qtb
tsrf3FzA8kUy+Jk+7/cG7GWgnHgBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['194']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:03 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=vlcinb9s5dpnvlj3ffc0hhcbv0; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQrCMBCF9z3F0L1NBAWFaXoCN94gbaZaaJKSn+Lx7U+gRUR335vJmzcZrF66
h5Gc76wp82PBcyDTWNWZR5nH0B4ueSUy1BSeVt3JD9Z4mgqDdFJ7kcFKEwCOso80E6APLjZhYZjM
uia3CkAjNQkfZIge2SJSY7OnCdMO4sSvcFvCwdgArY1GIUvNZGQ7J7J92tdoaqxRP7OVjXVPghec
n5El9S9s2Sp9enuFLN0ngZ/p85pvWwiPHoYBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:03 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,179 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WR3QrCMAyF732KsnttteAPZN0DeCH4Bt0Wdbg2rj/i4ztnQRFRwbsvISfnkEBx
MS07o/MN2TybTkTG0FZUN3afZzHsxsusUCMwGA5Ub9GfyHrsGyfttPFqxO7UA4OzbiPeiIEPLlZh
YNaLTYnuXjCw2qAKdEQLfODUf6jTgj6CWu6rMiwaNy1JdpLkqnMozNy1EngaSXL+pAf+bPnO3wcd
ov8hwEwItln/aYYV2fqjW02xbFGJiZAr4Kn6ZjakSmd+TAFPH0ngb/T6vyuynISk+AEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['223']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:01 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=8gcbt7ir1bo3q3o39qre0m6rl3; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+OGdjYnQ3
aXIxYm8zcTNvMzlxcmUwbTZybDM8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5pbWRiaWQ8
L25hbWU+Cjx2YWx1ZT48aW50Pjc3MDgyODwvaW50PjwvdmFsdWU+CjwvbWVtYmVyPgo8bWVtYmVy
Pgo8bmFtZT5zdWJsYW5ndWFnZWlkPC9uYW1lPgo8dmFsdWU+PHN0cmluZz5nZXI8L3N0cmluZz48
L3ZhbHVlPgo8L21lbWJlcj4KPC9zdHJ1Y3Q+PC92YWx1ZT4KPC9kYXRhPjwvYXJyYXk+PC92YWx1
ZT4KPC9wYXJhbT4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['435']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA+1bW1PbOhB+76/w8O6b5JsybjqFwDmZkrYngZnTvim2HDT1JZVkKP31tY0DSShN
FRD14fhNsmXp2/XuarXfKHzzLUu1S8I4LfLXB7ZhHWgkj4qY5ovXB6VI9ODgzfBVmBFxUcRTwpdF
zkn1YIkZzvjwlXbTqhpaeInTktQtLeSClZFo2lr1cTYn7KajhTnOyJALLEoemk2nfXH3eTtDhWEI
LEv78C4022471FwbG5rr8/9ssRgL/KulMGP4etXTwnr4bW9r7LZs7aONRbW1pSdYRBckPrzeWP+B
mdfEplk8p/GW2Np94VeP7gN4GNN4NCvnk+KSkhOaEklglhpMDZy/Mb/oEJzDa0Fm9HuXNHRGMzKZ
dQNQY0aCinQfM7KRC30vQAFQA66CVqN6X7UlkU1wbhSJMROEpMZfhGVVf3Rq2FZgLY3DtJzia+Mb
8Bz9+N9/zumMnh0bnAllUryNRInTo5GsfpUB2sMjbAs5rqMM0R5hAxDP9VCEEmsOPQ+C2Iaej5AD
IyeCTuIrw3qKuTiTdmAwAGDgKkJ158eSsFwAfBchNajOOWFjWatXFOma/5YvSrwg0pAWhKmLcEUV
nYQkIJXBalZmHYpUb8sqZ2VHRZaRXFJL5tODieMRFrIuBiwb6ral275mwwHwBo6nTF2HOO6Mu02x
qKaVhWOoAzQqrvK0wDE/kjWlIfCBor2vSQmnJCWYP0+mo1CMk4+yuyKABvIVucN41ICSDWUOhI6i
eNYiGlfnQklUvm8FIFD46/YzPa1ItMb0FCM7lo0jTxz7GyCfCGZ7hH6FqqkNaa8o6xsKj2wEi5KR
juxDdQr6nkZf5O37iU1oPPvgQSSplJio0coqE97D62/2GGXW02Z6vBvWUx9MK6+v5h1nS0zlrVrR
RlJb9RTnX/5sQkwYJXxWJS5F3pHf1SA6XlJexF2q+L2juazhZDepiyqj7soBr/lh48no8CNm0gc8
hV5/3NInkoDOz050RVna2vnllMp6/vBCiOXANOPUKJYk522tiBsFW5gkN+N2ZjOh1UEkNjmLdLyk
5iVLdOg5JEEOsKrHNNaDRTQXPmX2vIBfYQHRV0aszGMpNO/qwcbiuxotfKbLZ9BC9WZLCR4C2I08
17V3KUFpQW1V5OP7C391dfVz6W8frETYJWmVBuhFovM6/9cflak0n27Qcfe+6xm8DWA9g/cnIb0s
Bs+3HUtdvHpCBs8HPXu3J3uHXOR3irxDgR9Fno9hQEBkBTBIsONDx4HAtYAXKaqaPIK8s8HAUYTq
MeQdQkhRwtmTd7tB9eTd/4a8Q5plDVw4AG5P3v3HyLvAUlmEf1ru7uEcp+ftet5uA1XP2/0ekJ63
2w2r5+163u5R1vPCeDuFVt3zdg8g6nm7HVrqebudCup5u1vKKrB8F8+9mOykrO6qwC+Ot3PhHCQQ
+Yn3G7ydulras/F2tQhd4u1Cc/0iXmiu39KTvADISVTk8S+vG8ZFOU9JXYZwq4yt7e1abF2Iu1Gh
2V6JbBu8bm1foPwBuoAQ33k5AAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['1160']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:02 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=8gcbt7ir1bo3q3o39qre0m6rl3; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+OGdjYnQ3aXIxYm8zcTNv
MzlxcmUwbTZybDM8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6DIBCF956CsK9gVy5GPEAXTXoDlGlrImD4MT1+UUk0TdPuvse8mTcMtC89
khmdH6xpaFVyStD0Vg3m0dAY7qeatqIAjeFp1Q39ZI3H9DBJJ7UXBdkoAYFZjhEXIuCDi31YmaRm
3aHbBAEjNQofZIge2CpyYW/PE9IO4sw5uV6AZZmt7OAFdpz/NQx7a9TPNGVjN6LgJa9qYFn9C1u3
yt/cXcDyRTL4hT7v9waS3YSheAEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['193']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:02 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=8gcbt7ir1bo3q3o39qre0m6rl3; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQrCMBCF9z3F0L1NBEGFaXoCN94gbaZaaJKSn+Lx7U+gRUR335vJmzcZrF66
h5Gc76wp82PBcyDTWNWZR5nH0B4ueSUy1BSeVt3JD9Z4mgqDdFJ7kcFKEwCOso80E6APLjZhYZjM
uia3CkAjNQkfZIge2SJSY7OnCdMO4sSvcFvCwdgArY1GIUvNZGQ7J7J92tdoaqxRP7OVjXVPghec
n5El9S9s2Sp9enuFLN0ngZ/p85pvZO5o2IYBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:02 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,118 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRSw7CMAxE95wi6p4m/Lsw4QAskLhB2hgobRKoE8TxaUskEEKAxO7Z8nhGNqyu
pmYXbKh0dpmMUpEwtIXTpd0vk+B3wyxZyQEY9Aent0gnZwnbxkk1ypAcsDu1wOCi6oAdMSDfhML3
zFqxybG5FwysMii9q9AC7zn2H+q4oI0gK68W2axemGm1y/dlSUTH80zbMAceR6KcP+mBP1u+8yev
fKAfAoyFYJv1n2ZYOKs/umkX8hqlSMUkAx6rb2Z9qnjmxxTw+JEI1NHr/27BtBTn+AEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['223']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:53:58 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=kta785l7m4kfbgiisssjq5dnu6; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+a3RhNzg1bDdtNGtmYmdp
aXNzc2pxNWRudTY8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ7CIBCF9z0FYW/Bn4WLKT2ACxNvQMuoTQo0/DQeX9qStDFGd99j3swbBuqX
7smIznfWVHRfckrQtFZ15lHRGO67M61FARrD06ob+sEaj+lhkE5qLwqyUAICo+wjTkTABxfbMDNJ
zbpBtwgCRmoUPsgQPbBZ5MLaniekHcSBc3K9AMsyW9nGC2w7/2sYttaon2nKxqZHwUt+OgLL6l/Y
vFX+5uoCli+SwU/0eb83VqoNRHgBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['194']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:53:59 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=kta785l7m4kfbgiisssjq5dnu6; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQQQ6CMBBF95xiwl5ajQtNhnICN96g0EFJaEtoSzy+UJpAjNHd+zP986eD1Uv3
MNHoOmvK/FjwHMg0VnXmUebBt4dLXokMNfmnVXdygzWO5sIgR6mdyGClGQAn2QdaCND5MTQ+Msxm
XdO4CkAjNQnnpQ8OWRSpsdnThHkHceZXuMVwMNZDa4NRyFIzGdnOiWyf9jWaGmvUz2xlQ92T4AU/
IUviX1ZcKv15e4UsnSeBW+jzmG8XBP1ahQEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['199']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:53:59 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,180 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WR3QrCMAyF732KsnttNxAUYvcAXgi+QbdFHeuPNu3w8d1mQRFRwbsvISfnkEB5
NZr16Kl1dpPlC5ExtLVrWnvcZDEc5quslDMwGE6u2SOdnSUcGmfllSE5Y3cagEGvdMSRGFDwsQ4T
s0FsKvT3goFVBmVwHVrgE6f+Q50WDBGkyNsurquYe6yUPnrqdFH4w8UI4GkkyfmTHviz5Tt/CipE
+iFAIQTbbf80w9rZ5qNb42KlUYqFyJfAU/XNbEqVzvyYAp4+koBGev3fDfr5gRn4AQAA
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['222']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:00 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=01iku9bu1rebalgrskl22rfqm0; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+MDFpa3U5
YnUxcmViYWxncnNrbDIycmZxbTA8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5zZWFzb248
L25hbWU+Cjx2YWx1ZT48aW50PjE8L2ludD48L3ZhbHVlPgo8L21lbWJlcj4KPG1lbWJlcj4KPG5h
bWU+cXVlcnk8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPkRhbGxhczwvc3RyaW5nPjwvdmFsdWU+Cjwv
bWVtYmVyPgo8bWVtYmVyPgo8bmFtZT5lcGlzb2RlPC9uYW1lPgo8dmFsdWU+PGludD4zPC9pbnQ+
PC92YWx1ZT4KPC9tZW1iZXI+CjxtZW1iZXI+CjxuYW1lPnN1Ymxhbmd1YWdlaWQ8L25hbWU+Cjx2
YWx1ZT48c3RyaW5nPmZyZTwvc3RyaW5nPjwvdmFsdWU+CjwvbWVtYmVyPgo8L3N0cnVjdD48L3Zh
bHVlPgo8L2RhdGE+PC9hcnJheT48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['575']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA81aS3PiOBC+z69wZau2dg9+2xhYD1NJCLXU5MGGzGH2JlsNqOLXSHIS5tevbExg
CAwlNtr1iZYtq79uuj+1HuGnlzTRnoAykmcfz2zDOtMgi3NMsvnHs5LP9O7Zp8GHMAW+yPE9sCLP
GIgHBaIoZYMP2koSghY+oaSEStJCxmkZ81rWxMdpBHTV0MIMpTBgHPGShWbdaF5sPm9GEBgGjmVp
d59Ds2k2Xc2tvqG5Pf4+ZRhx9DNViFK0XLe0sOr+2trpu2tb8+gHpdqW6hvE4wXgi+UP+g+MvGX2
rEwSDi98x3DtrfnrR28hHEY1Hk7L6CZ/IjAiCUhCs9RgquH8idiiRXAulhym5HubPPRAUriZtgNQ
HUac8OSUMLJ7vmt7gR8EasAJaBWqWyFLIhuiJEFM+82xbOd3Tdcs+8Vyxe/DArQJJTFoX/NSm6Cl
8eJ0PP367toYUUGaC+PSKAvBHoCNc4xJHAghzlODUUV5LGw8j3mJksuhrPeVATohX3zHttUBOoFT
POxas6gDsRt4TjDzUewHXS/y7BkOXLsTKcN6jRh/kM5uq+/ZfVeRBzdJLutEv2vbrqcG1RcGdCwb
9IposP7fsnmJ5iANaUZBHf3lNEVcEpBKrpqWaYuI6rwUJS29zNMUMkkvme8PBuOhmDgknVPNULrV
0R1bszt9z+07HWXuukC4Nel2j7gYVhaOoQ7QMH/OkhxhdikbSgPP8xWWi/eQAGJtqIIUGjmayE6Z
jmv0AkW5Mh7WoGR5zrWCXk8ponGKI1k/OZbvqyKVGtQJkfnrL673xyo8a/FtSCrGeyXLPe88X9RA
vgKiJ0wXCl1TxddJzNxVyMwjQLyk0JK5qypbb0n8KB/17xxC4+ldx+1JF6tqvLKunk/ggtWUoyx6
muqQtSN6qsWsyHox7jgtEGlVVN+j7PH/LaKBEmBTUe3kWUvWGDWiq4KwHMvGtauQpz+TTDZwYG2E
qrBuy1K+/svGN8OLCaLSy8KBHThu0FGX/VfNyYwkrC8PI72rBtRfJdDlpDoBAg5Uhid3jlAOaHlV
xA4l9gEVW+bvT+/91h9wwDF03yo3nARuVceqRwgHaeg4xv1k9K7wWBklTRVA9pHTcZCHdtIkYdZj
7Mbm+6TJbVm9bQnRbfYsronszD1YcF70TRMnRl5Axpr9YWbkdG5CZuJmZHNGEhA/jMY6Koj5RGe6
FaCe44KNwGQE65ZNHsteVNoUIpTMKXtMHIfOvqWWuTkgMubf1Xjhb1L8B14Qb3ac4Md2z+5FMzc4
5gSlm+jrjX12uvHPz8/7rX99sDbhmKW4JkKdL0AvqrW8vsxLvUBL/V+tOt6m8+53obl93h+a25cB
JO8ZMIjzDP/0VgPOBdFBtRfpdYTmVeuYsm0jNr1Cs7l50QisknbvafwDNanaROAhAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['1076']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:01 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=01iku9bu1rebalgrskl22rfqm0; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+MDFpa3U5YnUxcmViYWxn
cnNrbDIycmZxbTA8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQQQ6DIBBF956CuK9gV12MeIAumvQGKNPWRKBhwPT4RSXRNE27e5/5M38YaF9m
ZBN6GpxtyroSJUPbOz3Ye1PGcDucylYWYDA8nL4iPZ0lTA9P5ZUhWbCVEjCY1BhxJgYUfOzDwiw1
mw79KhhYZVBSUCES8EXkwtaeJ6Qd5FEIdjkDzzJb+c4LfD//axj2zuqfadrFbkQpKlEDz+Jf1rJU
/uXmAp4PkoFm+jzfG9nfIyV3AQAA
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['192']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:01 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=01iku9bu1rebalgrskl22rfqm0; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQQQqDMBBF955icF8TodAWpvEE3fQG0YytYBIxifT41RhQSml378/kz58MVi/d
w0Sj66y55mXBcyDTWNWZxzUPvj2c80pkqMk/rbqTG6xxNBcGOUrtRAYrzQA4yT7QQoDOj6HxkWE2
65rGVQAaqUk4L31wyKJIjc2eJsw7iCO/wC2Gg7EeWhuMQpaaych2TmT7tK/R1FijfmYrG+qeBC94
eUKW1L+wuFX69PYKWbpPArfQ5zXfKQiAboYBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:01 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,194 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRTY7CMAyF95wi6h4SEBSQTDjALEbiBmlrftTGRolTzfGnlEig0WgGid1ny8/v
yYb9l+9UjyFemHbFfGYKhVRzc6HTrkhynG6KvZ2ARzlzc8B4ZYo4NK4uOB/tRN1pAAW96xLeSEGU
kGoZWQ1iX2G4FwrIebTCLRLokXP/oc4Lhgi2nwcO/boNC14uxVfldiuupA2VoPNIlusnPehny9/8
ozhJ8YUAC2PU58ebZlgzNX+6NZyqDq2ZmXIFOlf/mY2p8pkfU6DzRzLEG/383zd4HFDf+AEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['226']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:53:59 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=v1rorv7kr2o44tmb699ta6n8n6; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+djFyb3J2
N2tyMm80NHRtYjY5OXRhNm44bjY8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5xdWVyeTwv
bmFtZT4KPHZhbHVlPjxzdHJpbmc+TWFuIG9mIFN0ZWVsPC9zdHJpbmc+PC92YWx1ZT4KPC9tZW1i
ZXI+CjxtZW1iZXI+CjxuYW1lPnN1Ymxhbmd1YWdlaWQ8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPmZy
ZTwvc3RyaW5nPjwvdmFsdWU+CjwvbWVtYmVyPgo8L3N0cnVjdD48L3ZhbHVlPgo8L2RhdGE+PC9h
cnJheT48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['446']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
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
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['2028']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:00 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=v1rorv7kr2o44tmb699ta6n8n6; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+djFyb3J2N2tyMm80NHRt
YjY5OXRhNm44bjY8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ7CIBCF9z0FYW/Bn4WLKT2ACxNvQMuoTQo0/DQeX9qStDFGd99j3swbBuqX
7smIznfWVHRfckrQtFZ15lHRGO67M61FARrD06ob+sEaj+lhkE5qLwqyUAICo+wjTkTABxfbMDNJ
zbpBtwgCRmoUPsgQPbBZ5MLaniekHcSBc3K9AMsyW9nGC2w7/2sYttaon2nKxqZHwUt+PAHL6l/Y
vFX+5uoCli+SwU/0eb83CEnn7HgBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['194']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:00 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=v1rorv7kr2o44tmb699ta6n8n6; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQrCMBCF9z3F0L1NBEGFaXoCN94gbaZaaJKSn+Lx7U+gRUR335vJmzcZrF66
h5Gc76wp82PBcyDTWNWZR5nH0B4ueSUy1BSeVt3JD9Z4mgqDdFJ7kcFKEwCOso80E6APLjZhYZjM
uia3CkAjNQkfZIge2SJSY7OnCdMO4sSvcFvCwdgArY1GIUvNZGQ7J7J92tdoaqxRP7OVjXVPghec
n5El9S9s2Sp9enuFLN0ngZ/p85pvZO5o2IYBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:00 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,181 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRwQrCMAyG7z5F2V1bN2UeYn0AD4Jv0G1xG7bpWNvh4ztnQRFRwduXkD//TwK7
i9FswN61lrbJciEShlTaqqV6mwR/mm+SnZyBQd/Y6oius+RwbHSqV8bJGbvTCAwGpQPeiIHzfSj9
xGwUmwL7e8GAlEHp7RkJ+MSx/1DHBWMEqds26wpqOsI6x7VO66LJTvna58DjSJTzJz3wZ8t3/s4r
H9wPAVIh2GH/pxmWlqqPbpUNhUYpFiJdAY/VN7MpVTzzYwp4/EgEd6PX/10BKf3ITPgBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['224']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:04 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=lii3pbnhpneg7e5l2gbh3f75t7; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+bGlpM3Bi
bmhwbmVnN2U1bDJnYmgzZjc1dDc8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5zZWFzb248
L25hbWU+Cjx2YWx1ZT48aW50Pjc8L2ludD48L3ZhbHVlPgo8L21lbWJlcj4KPG1lbWJlcj4KPG5h
bWU+cXVlcnk8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPlRoZSBCaWcgQmFuZyBUaGVvcnk8L3N0cmlu
Zz48L3ZhbHVlPgo8L21lbWJlcj4KPG1lbWJlcj4KPG5hbWU+ZXBpc29kZTwvbmFtZT4KPHZhbHVl
PjxpbnQ+NTwvaW50PjwvdmFsdWU+CjwvbWVtYmVyPgo8bWVtYmVyPgo8bmFtZT5zdWJsYW5ndWFn
ZWlkPC9uYW1lPgo8dmFsdWU+PHN0cmluZz5nZXI8L3N0cmluZz48L3ZhbHVlPgo8L21lbWJlcj4K
PC9zdHJ1Y3Q+PC92YWx1ZT4KPC9kYXRhPjwvYXJyYXk+PC92YWx1ZT4KPC9wYXJhbT4KPC9wYXJh
bXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['588']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA81aW3PaOBR+76/wZGf2Zcd3wDZ16RRIt0wLoYF2L28yOhhNfFtJTkJ//cqOSSiB
MmKjLk+WZFnnO8fnfDq6hG/v00S7BcpInr25sA3rQoNskWOSxW8uSr7U/Yu3vVdhCnyV42tgRZ4x
EA0FoihlvVfaQ0kUtPAWJSVUJS1knJYLXpc18XEaAX2oaGGGUugxjnjJQrOuNC+ePm9GEBh6jmVp
Vx9Ds6k2Xc2tvqG5Pf4+YRhx9CNRiFK03tS0sOr+WNvpu6tb0/SdUG1L9BjxxQpwf/2d/AMjb6m9
LJOEwz3fUVx7rv6m6TmEw6hGw1kZjfNbAu9JApLQLDWYajgfEFudEZz+msOMfDsnC81JCuPZeQCq
3YgTnpziRnbQdj3PDixfDTgBrUI1EWVJZPMVGH0SG32UxYao5HRtzCzv0mobnmMVxofh/Kvxp9Np
6cPR+HIyG11NDAz6bPDb/Gvri8GooqgVGr1b8BIlg6GsrZUBOiE6nMAL1AE6gUHwMvAcvxWhoBME
ju9YXoAiFy/coOO3lhgpw/oJMT6XjmWra/vdVqA6pCVhtR3XaluKiOYLAzqSdXpFWOr/lsUlikEa
UgxUHdnlNEVcEpBKrpqV6RkR1btSJLB0kKcpZJJWMl8eDMZDxKWJ07Jd3bZ0O9Bsu9v2u46jzFx9
hM8m3K4RF8PKwjHUARrmd1mSI8wGsq7UC/yOIuaus8NrSACxn5/0KFTp/VR2hnRcI/A6qubHGpQs
rXUst+MpRTRKcSSJynWcwA0UcUgN6gQ//PUXt/Va+J8mnFGrnFF7cMa6vSprf+T0pkjQArQpze9J
SvhasQqXsuzzwjNGDeQvQPSECUOhaSqXO4mbPUMRB1ZpECBeUjiT2atKXCdkcSMfCC/sQqPZVccN
ZBdGoMYqm/z5BHr4HUSWmynzniY/ZOfhPdVyVkS9GHeUFoiclVdfo+zm/02jgRJgM5Hu5Jks/yj6
XTWiy4KwHEsvnxXy9EeSyToObJRQ5dbnsjCsf9loPOxPEZVeGPb8wHc6ijJNYaXL5iBGEtVgajtt
RWnd5xLoelqd+AAHKsOTO0cmB6Q8CmKHAvuAiC3994f3fu0PGOAYun8qM5wEbk9qqx4uHOSk44D3
M9OLwmNllDQpAdnHVMdBHtpYk4RZj7HrqC8TM5Oyense8/fWFsYnIjuN91acF13TxImRF5CxZruY
GTmNTchM3IxsLkkC4sHoQkcFMW/pUrcjLwoQtvDCZATrCSFuEWWrIoPYg3bixNHKXXpt7plPp0NG
/E2NFf4mxU+wgnizYwR/ucS+32l7wTEjKN1T3+zzs9OVv7u726/9Y8NGhWOa8hXoEYn1SNCAzmtW
rB763Watrxebtb7+n9KS5xG++11obp//h+b25QDJewcMFnmGf3jLAeeC+6BnGbbbEpIfaseEbSvx
1Cs0m5sYTYFVpd17G/8CwkOcZPAhAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['1106']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:04 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=lii3pbnhpneg7e5l2gbh3f75t7; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+bGlpM3BibmhwbmVnN2U1
bDJnYmgzZjc1dDc8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95yi6V5aiQsXQzmACxNvUOioJLQl/SEe3wJNIMbo7nudN/OmA81L
D2RC53tranosOSVoOqt686hpDPfDmTaiAI3hadUN/WiNx/QwSie1FwVZKQGBSQ4RZyLgg4tdWJik
Zt2iWwUBIzUKH2SIHtgicmFrzxPSDqLinFwvwLLMVrbzAtvP/xqGnTXqZ5qysR1Q8JJXJ2BZ/Qtb
tsrf3FzA8kUy+Jk+7/cGRa8PWngBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['194']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:04 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=lii3pbnhpneg7e5l2gbh3f75t7; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQQQ6CMBBF95xiwl5ajAtNxnICN96g0EFJaEtoSzy+UJpAjNHd+zP986eD1Uv3
MNHoOmuueVnwHMg0VnXmcc2Dbw/nvBIZavJPq+7kBmsczYVBjlI7kcFKMwBOsg+0EKDzY2h8ZJjN
uqZxFYBGahLOSx8csihSY7OnCfMO4sQvcIvhYKyH1gajkKVmMrKdE9k+7Ws0Ndaon9nKhronwQt+
LJEl9S8sbpU+vb1Clu6TwC30ec03vwiR/oYBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['200']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:04 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,164 @@
interactions:
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dJbjwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPHBhcmFtPgo8dmFsdWU+PHN0cmluZz48L3N0cmluZz48L3ZhbHVl
Pgo8L3BhcmFtPgo8cGFyYW0+Cjx2YWx1ZT48c3RyaW5nPjwvc3RyaW5nPjwvdmFsdWU+CjwvcGFy
YW0+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZW5nPC9zdHJpbmc+PC92YWx1ZT4KPC9wYXJhbT4K
PHBhcmFtPgo8dmFsdWU+PHN0cmluZz5zdWJsaW1pbmFsIHYxLjA8L3N0cmluZz48L3ZhbHVlPgo8
L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RDYWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['317']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA6WRwQrCMAyG7z5F2V1bJ4iH2D2AB8E3qG02xbWdTTt8fOcsKCIqePsS8uf/SaC6
2Jb1GOjo3bqYz0TB0Glvjq5ZFynW01VRyQlYjAdvdkidd4RDo1NBWZITdqcBGPSqTXgjBhRD0nFk
NojtHsO9YOCURRn9CR3wkXP/oc4LhgjSLJpOn71qNS4tLeuQytC4etGXwPNIlvMnPfBny3f+FFVM
9EOAUgi23fxphto789HN+LRvUYqZmAPPxTevMVS+8mMKeH5IBrrR6/uu3BshtfcBAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['221']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:03 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=d3gpcqoalce6ms6fru2rgnf3v2; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5TZWFyY2hTdWJ0
aXRsZXM8L21ldGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZDNncGNx
b2FsY2U2bXM2ZnJ1MnJnbmYzdjI8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8cGFyYW0+Cjx2
YWx1ZT48YXJyYXk+PGRhdGE+Cjx2YWx1ZT48c3RydWN0Pgo8bWVtYmVyPgo8bmFtZT5tb3ZpZWhh
c2g8L25hbWU+Cjx2YWx1ZT48c3RyaW5nPjEyMzQ1Njc4NzY1NDMyMTwvc3RyaW5nPjwvdmFsdWU+
CjwvbWVtYmVyPgo8bWVtYmVyPgo8bmFtZT5zdWJsYW5ndWFnZWlkPC9uYW1lPgo8dmFsdWU+PHN0
cmluZz5lbmc8L3N0cmluZz48L3ZhbHVlPgo8L21lbWJlcj4KPG1lbWJlcj4KPG5hbWU+bW92aWVi
eXRlc2l6ZTwvbmFtZT4KPHZhbHVlPjxzdHJpbmc+OTk5OTk8L3N0cmluZz48L3ZhbHVlPgo8L21l
bWJlcj4KPC9zdHJ1Y3Q+PC92YWx1ZT4KPC9kYXRhPjwvYXJyYXk+PC92YWx1ZT4KPC9wYXJhbT4K
PC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['537']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA52RTQ6CMBCF95yiYS+thoWLoR7AhYk3KHRUEtoSpiUeX35qIMZg4u577Zt5nSmc
nqZhPXZUO1uk+0ykDG3ldG3vRRr8bXdMTzIBg/7h9BWpdZZwOGhVpwzJhM00AINeNQFHYkC+C5Wf
mA3FpsRuFgysMijJKx8I+CTixVIeOwxvkAch2OUMPMpo5Ssv8HX/b2FaebUVVTrXoLJSAH/jXzmE
lbN6cyrtQtmgFJnIc+BR/Qqbpo/rXFzA4+Yj0Eif//QCLseBQ+ABAAA=
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['212']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:03 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=d3gpcqoalce6ms6fru2rgnf3v2; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5Mb2dPdXQ8L21l
dGhvZE5hbWU+CjxwYXJhbXM+CjxwYXJhbT4KPHZhbHVlPjxzdHJpbmc+ZDNncGNxb2FsY2U2bXM2
ZnJ1MnJnbmYzdjI8L3N0cmluZz48L3ZhbHVlPgo8L3BhcmFtPgo8L3BhcmFtcz4KPC9tZXRob2RD
YWxsPgo=
headers:
Accept-Encoding: [gzip]
Content-Length: ['176']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQTQ6CMBCF95yi6V5aceNiKAdwYeINCh2VhLakP8TjW6AJxBjdfa/zZt50oHnp
gUzofG9NTY8lpwRNZ1VvHjWN4X4400YUoDE8rbqhH63xmB5G6aT2oiArJSAwySHiTAR8cLELC5PU
rFt0qyBgpEbhgwzRA1tELmzteULaQVSck+sFWJbZynZeYPv5X8Ows0b9TFM2tgMKXvLqBCyrf2HL
VvmbmwtYvkgGP9Pn/d56851EeAEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0']
Content-Encoding: [gzip]
Content-Length: ['193']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:03 GMT']
Expires: ['Thu, 19 Nov 1981 08:52:00 GMT']
Pragma: [no-cache]
Server: [lighttpd/1.4.35]
Set-Cookie: [PHPSESSID=d3gpcqoalce6ms6fru2rgnf3v2; path=/; domain=.opensubtitles.org]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
- request:
body: !!binary |
PD94bWwgdmVyc2lvbj0nMS4wJz8+CjxtZXRob2RDYWxsPgo8bWV0aG9kTmFtZT5jbG9zZTwvbWV0
aG9kTmFtZT4KPHBhcmFtcz4KPC9wYXJhbXM+CjwvbWV0aG9kQ2FsbD4K
headers:
Accept-Encoding: [gzip]
Content-Length: ['99']
Content-Type: [text/xml]
User-Agent: [Python-xmlrpc/3.4]
method: POST
uri: https://api.opensubtitles.org/xml-rpc
response:
body:
string: !!binary |
H4sIAAAAAAAAA4WQQQ6CMBBF95xiwl5ajQtNhnICN96g0EFJaEtoSzy+UJpAjNHd+zP986eD1Uv3
MNHoOmvK/FjwHMg0VnXmUebBt4dLXokMNfmnVXdygzWO5sIgR6mdyGClGQAn2QdaCND5MTQ+Msxm
XdO4CkAjNQnnpQ8OWRSpsdnThHkHceZXuMVwMNZDa4NRyFIzGdnOiWyf9jWaGmvUz2xlQ92T4AU/
IUviX1ZcKv15e4UsnSeBW+jzmG8XBP1ahQEAAA==
headers:
Accept-Ranges: [bytes]
Access-Control-Allow-Headers: ['Origin, X-Requested-With, Content-Type, Accept']
Access-Control-Allow-Origin: ['*']
Age: ['0']
Content-Encoding: [gzip]
Content-Length: ['199']
Content-type: [text/xml;charset=UTF-8]
Date: ['Sat, 11 Jul 2015 21:54:03 GMT']
Server: [lighttpd/1.4.35]
Strict-Transport-Security: [max-age=63072000; includeSubdomains; preload]
X-Cache: [MISS]
X-Cache-Backend: [web3]
X-Content-Type-Options: [nosniff]
X-Frame-Options: [DENY]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,757 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:29 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>12</results></pagination><subtitle><id>2738264</id><pid>WMgp</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/WMgp</url><uploaderId>41840</uploaderId><uploaderName>gilraen</uploaderName><release>Man.Of.Steel.2013.EXTRAS.BONUS.DISC.720p.BluRay.DTS.x264-PublicHD:
publichd.EXTRAS.Journey.Of.Discovery.Creating.Man.Of.Steel.720p publichd.EXTRAS.Planet.Krypton.720p</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1385011759</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>1766</downloads><exactHashes
/></subtitle><subtitle><id>2681136</id><pid>MOko</pid><title>Man of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/MOko</url><uploaderId>41840</uploaderId><uploaderName>gilraen</uploaderName><release>publichd.EXTRAS</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1382420144</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>4605</downloads><exactHashes
/></subtitle><subtitle><id>2672974</id><pid>Tsko</pid><title>Man of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/Tsko</url><uploaderId>144401</uploaderId><uploaderName>flax</uploaderName><release>Man.Of.Steel.2013.720p.BRRip.x264.AAC-ViSiON
Man.Of.Steel.2013.720p.BluRay.x264-Felony.[PublicHD]. Man.Of.Steel.2013.1080p.BluRay.x264-SECTOR7.
Man.Of.Steel.2013.720p.BRRip.x264.AC3-UNDERCOVER. Man.Of.Steel.2013.BDRip.XviD.MP3-RARBG.
Man.Of.Steel.(2013).BDRip.600MB.Ganool. Man.of.Steel.2013.BDRip.x264.700MB-Micromkv.
Man.Of.Steel.2013.BRRip.AAC.x264-SSDD. Man.Of.Steel.2013.BDRip.x264-Larceny.
Man.Of.Steel.2013.BDRiP.XViD-NoGRP. Man.Of.Steel.2013.720p.BRRip.x264.AC3-EVO.
Man.of.Steel.2013.720p.BRRip.h264.AAC-RARBG. Man.Of.Steel.[2013].BRRip.XviD-ETRG.
Man.of.Steel.[2013].BRRip.XViD.[AC3]-ETRG. Man.Of.Steel.2013.BRRiP.XVID.AC3-MAJESTIC.
Man.of.steel.2013.BRRip.XviD.AC3-RARBG. Man.Of.Steel.2013.720p.BRRip.x264.AC3-SUPERM4N.
Man.Of.Steel.2013.720p.BRRip.XviD.AC3-ViSiON</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381874511</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>10147</downloads><exactHashes>sublight:44b92527dbc1d9a73bfb02990c41ffa1
sublight:391ae5c74ab8ab8f93f9875d236a672b sublight:e5c4c23d90498eb7482b1f016ff39e92</exactHashes></subtitle><subtitle><id>2672656</id><pid>EMgo</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/EMgo</url><uploaderId>7718</uploaderId><uploaderName>jdinic3</uploaderName><release>Man.Of.Steel.2013.720p.BRRip.x264.AAC-ViSiON
Man.Of.Steel.2013.720p.BluRay.x264-Felony Man.Of.Steel.2013.1080p.BluRay.x264-SECTOR7
Man.Of.Steel.2013.720p.BRRip.x264.AC3-UNDERCOVER Man.Of.Steel.2013.BDRip.XviD.MP3-RARBG
Man.Of.Steel.(2013).BDRip.600MB.Ganool Man.of.Steel.2013.BDRip.x264.700MB-Micromkv
Man.Of.Steel.2013.BRRip.AAC.x264-SSDD Man.Of.Steel.2013.BDRip.x264-Larceny
Man.Of.Steel.2013.BDRiP.XViD-NoGRP Man.Of.Steel.2013.720p.BRRip.x264.AC3-EVO
Man.of.Steel.2013.720p.BRRip.h264.AAC-RARBG Man.Of.Steel.[2013].BRRip.XviD-ETRG
Man.of.Steel.[2013].BRRip.XViD.[AC3]-ETRG Man.Of.Steel.2013.BRRiP.XVID.AC3-MAJESTIC
Man.of.steel.2013.BRRip.XviD.AC3-RARBG Man.Of.Steel.2013.720p.BRRip.x264.AC3-SUPERM4N
Man.Of.Steel.2013.720p.BRRip.XviD.AC3-ViSiON Man.Of.Steel.2013.720p.BRRip.x264.AC3-JYK
Man.of.Steel.[2013].DVDRIP.DIVX.[Eng]-DUQA&#9516;&#171; Man.of.Steel.2013.1080p.BluRay.x264.YIFY</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381852391</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>11139</downloads><exactHashes>sublight:bb6b91e12f876eecbf86ca6a296807a7
sublight:e5c4c23d90498eb7482b1f016ff39e92 sublight:1858614a80929a54653e95d50f8accc1</exactHashes></subtitle><subtitle><id>2667828</id><pid>NLUo</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/NLUo</url><uploaderId>86327</uploaderId><uploaderName>mixi69</uploaderName><release>Man.of.Steel.[2013].INTERNAL.TS.720p.DIVX.[Eng]-DUQA</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381502479</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>1544</downloads><exactHashes /></subtitle><subtitle><id>2525113</id><pid>uYcm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/uYcm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.[2013].INTERNAL.TS.720p.DIVX.[Eng]-DUQA&#9516;&#171;</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373611040</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>2770</downloads><exactHashes /></subtitle><subtitle><id>2524778</id><pid>aoYm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/aoYm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Superman.Man.of.Steel.2013.480p.R6.LiNE.x264.AAC-DAMN</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373589100</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>8518</downloads><exactHashes /></subtitle><subtitle><id>2520414</id><pid>XnUm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/XnUm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.(2013).720p.R6.LiNE.900MB.Ganool</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373391411</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>4222</downloads><exactHashes /></subtitle><subtitle><id>2515558</id><pid>ZmIm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/ZmIm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.2013.720p.R6.LiNE.x264.AAC-DiGiTAL</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373141422</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>5565</downloads><exactHashes /></subtitle><subtitle><id>2495682</id><pid>whQm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/whQm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.2013.CAM.XviD.MP3.MiLLENiUM</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1372075950</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>6276</downloads><exactHashes /></subtitle><subtitle><id>2495217</id><pid>8RIm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/8RIm</url><uploaderId>26933</uploaderId><uploaderName>asdasd</uploaderName><release>Man.Of.Steel.2013.CAM.XViD-CALiBRATE</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1372047356</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>5048</downloads><exactHashes /></subtitle><subtitle><id>2489654</id><pid>Nv0l</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/Nv0l</url><uploaderId>7718</uploaderId><uploaderName>jdinic3</uploaderName><release>Man.Of.Steel.2013.CAM.NEW.AUDiO.XViD-JUSTiCE</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1371805723</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>7480</downloads><exactHashes /></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['11082']
Content-Type: [text/xml;charset=utf-8]
Date: ['Thu, 09 Jul 2015 21:33:30 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sL=fr&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:30 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sL=fr&sY=2013&sXML=1&sK=Man+of+Steel']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sL=fr&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>2</results></pagination><subtitle><id>2673432</id><pid>GMso</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/fr-man-of-steel-2013/GMso</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.Of.Steel.2013.BDRip.x264-Larceny</release><languageId>8</languageId><languageName>French</languageName><language>fr</language><time>1381991887</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>3899</downloads><exactHashes>sublight:e5c4c23d90498eb7482b1f016ff39e92</exactHashes></subtitle><subtitle><id>2552439</id><pid>d_Im</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/fr-man-of-steel-2013/d_Im</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.Of.Steel.2013.TS.XviD-JUSTiCE
Man.of.Steel.2013.720p.R6.LiNE.x264.AAC-DiGiTAL</release><languageId>8</languageId><languageName>French</languageName><language>fr</language><time>1374819034</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>4279</downloads><exactHashes /></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['2785']
Content-Type: [text/xml;charset=utf-8]
Date: ['Thu, 09 Jul 2015 21:33:30 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/GMso/download?container=zip
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:30 GMT']
Location: ['http://www.podnapisi.net/subtitles/GMso/download?container=zip']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/GMso/download?container=zip
response:
body:
string: !!binary |
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
AAEAXQAAABF8AAAAAA==
headers:
Accept-Ranges: [bytes]
Connection: [keep-alive]
Content-Disposition: [attachment; filename="78b9e7505fc4b675bbdff555d95e1443e3ba1653.zip"]
Content-Length: ['31876']
Content-Type: [application/octet-stream]
Date: ['Thu, 09 Jul 2015 21:33:30 GMT']
ETag: ['"525f5570-7c84"']
Last-Modified: ['Thu, 17 Oct 2013 03:11:44 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,160 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sTS=3&sL=en&sTE=10&sXML=1&sK=Game+of+Thrones
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:29 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sTS=3&sL=en&sTE=10&sXML=1&sK=Game+of+Thrones']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sTS=3&sL=en&sTE=10&sXML=1&sK=Game+of+Thrones
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>10</results></pagination><subtitle><id>3953259</id><pid>a1I8</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/a1I8</url><uploaderId>None</uploaderId><uploaderName
/><release>Game.of.Thrones.S03E10.720p.BluRay.450MB.ShAaNiG.com Game.of.Thrones.S03E10.1080p.WEB-DL.DD5.1.H.264-NTb
Game.of.Thrones.S03E10.720p.BluRay.450MB.ShAaNiG.com.srt</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1436203578</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>23</downloads><exactHashes /></subtitle><subtitle><id>3740656</id><pid>8BM5</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/8BM5</url><uploaderId>23329</uploaderId><uploaderName>jane</uploaderName><release>Game.Of.Thrones.S03E10.720p.x264-ILPruny</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1420528825</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>1093</downloads><exactHashes
/></subtitle><subtitle><id>2911594</id><pid>am0s</pid><title>Game of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/am0s</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>game.of.thrones.s03e10.bdrip.x264-demand</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1392415949</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>n</flags><new_flags><flag>hearing_impaired</flag></new_flags><downloads>3444</downloads><exactHashes>sublight:1253562ba785425176701686b7452a73</exactHashes></subtitle><subtitle><id>2533905</id><pid>Eaom</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/Eaom</url><uploaderId>63492</uploaderId><uploaderName>Rafael4</uploaderName><release>Game.Of.Thrones.S03E10.1080p.WEB-RiP.x264.anoXmous</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373986843</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>4720</downloads><exactHashes>sublight:a5a45e8c236f271840123ea8268da767</exactHashes></subtitle><subtitle><id>2475668</id><pid>lMYl</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/lMYl</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Game.of.Thrones.S03E10.720p.WEB-DL.DD5.1.H.264-NTb
Game.of.Thrones.S03E10.1080p.WEB-DL.DD5.1.H.264-NTb Game.of.Thrones.S03E10.720p.WEB-DL.DD5.1.AAC2.0.H.264-YFN
Game.of.Thrones.S03E10.1080p.WEB-DL.DD5.1.AAC2.0.H.264-YFN</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1370985771</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>9269</downloads><exactHashes>sublight:9f69fd76f1e5c7ab688a70f1fe463ec7
sublight:a5a45e8c236f271840123ea8268da767</exactHashes></subtitle><subtitle><id>2475674</id><pid>msYl</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/msYl</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Game.of.Thrones.S03E10.720p.WEB-DL.DD5.1.H.264-NTb
Game.of.Thrones.S03E10.1080p.WEB-DL.DD5.1.H.264-NTb Game.of.Thrones.S03E10.720p.WEB-DL.DD5.1.AAC2.0.H.264-YFN
Game.of.Thrones.S03E10.1080p.WEB-DL.DD5.1.AAC2.0.H.264-YFN</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1370985492</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>5918</downloads><exactHashes>sublight:da1ce34e0e82dd0971176d60f1f80b2e</exactHashes></subtitle><subtitle><id>2474991</id><pid>78Ml</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/78Ml</url><uploaderId>44181</uploaderId><uploaderName>grzesiek11</uploaderName><release>Game.of.Thrones.S03E10.720p.HDTV.x264-EVOLVE
Game.of.Thrones.S03E10.720p.HDTV.x264-CPG Game.of.Thrones.S03E10.480p.HDTV.x264-ChameE
Game.of.Thrones.S03E10.480p.HDTV.x264-mSD Game.of.Thrones.S03E10.HDTV.XviD-Chivvez
Game.of.Thrones.S03E10.HDTV.XviD-3LT0N Game.of.Thrones.S03E10.HDTV.XviD-Snake
Game.of.Thrones.S03E10.HDTV.XviD-JKS Game.of.Thrones.S03E10.HDTV.XviD-AFG</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1370850866</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>14912</downloads><exactHashes>sublight:abb28aefd1ca56458901371447fec372</exactHashes></subtitle><subtitle><id>2474990</id><pid>7sMl</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/7sMl</url><uploaderId>44181</uploaderId><uploaderName>grzesiek11</uploaderName><release>Game.of.Thrones.S03E10.720p.HDTV.x264-EVOLVE
Game.of.Thrones.S03E10.720p.HDTV.x264-CPG Game.of.Thrones.S03E10.480p.HDTV.x264-ChameE
Game.of.Thrones.S03E10.480p.HDTV.x264-mSD Game.of.Thrones.S03E10.HDTV.XviD-Chivvez
Game.of.Thrones.S03E10.HDTV.XviD-3LT0N Game.of.Thrones.S03E10.HDTV.XviD-Snake
Game.of.Thrones.S03E10.HDTV.XviD-JKS Game.of.Thrones.S03E10.HDTV.XviD-AFG</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1370850847</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>39570</downloads><exactHashes>sublight:9b52a2dd794f64ea8262b67ee0766a88
sublight:1d01a67ecc7e2504b122c02a2e1ae0f2</exactHashes></subtitle><subtitle><id>2474960</id><pid>0MMl</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/0MMl</url><uploaderId>44181</uploaderId><uploaderName>grzesiek11</uploaderName><release>Game.of.Thrones.S03E10.HDTV.x264-EVOLVE</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1370840356</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>n</flags><new_flags><flag>hearing_impaired</flag></new_flags><downloads>12335</downloads><exactHashes>sublight:33850fc19e55ce536f5a436f90eea557
sublight:cea810fe8295c80c43308873d2bde5e9</exactHashes></subtitle><subtitle><id>2474959</id><pid>z8Ml</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/en-game-of-thrones-2011-S03E10/z8Ml</url><uploaderId>44181</uploaderId><uploaderName>grzesiek11</uploaderName><release>Game.of.Thrones.S03E10.HDTV.x264-EVOLVE</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1370840316</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags /><new_flags
/><downloads>26909</downloads><exactHashes>sublight:abb28aefd1ca56458901371447fec372</exactHashes></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['9836']
Content-Type: [text/xml;charset=utf-8]
Date: ['Thu, 09 Jul 2015 21:33:29 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sTS=3&sL=fr&sTE=10&sXML=1&sK=Game+of+Thrones
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:29 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sTS=3&sL=fr&sTE=10&sXML=1&sK=Game+of+Thrones']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sTS=3&sL=fr&sTE=10&sXML=1&sK=Game+of+Thrones
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>4</results></pagination><subtitle><id>2475667</id><pid>k8Yl</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/fr-game-of-thrones-2011-S03E10/k8Yl</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Game.of.Thrones.S03E10.720p.WEB-DL.DD5.1.H.264-NTb
Game.of.Thrones.S03E10.1080p.WEB-DL.DD5.1.H.264-NTb Game.of.Thrones.S03E10.720p.WEB-DL.DD5.1.AAC2.0.H.264-YFN
Game.of.Thrones.S03E10.1080p.WEB-DL.DD5.1.AAC2.0.H.264-YFN</release><languageId>8</languageId><languageName>French</languageName><language>fr</language><time>1370985775</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>1917</downloads><exactHashes /></subtitle><subtitle><id>2475661</id><pid>jcYl</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/fr-game-of-thrones-2011-S03E10/jcYl</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Game.of.Thrones.S03E10.720p.HDTV.x264-EVOLVE
Game.of.Thrones.S03E10.720p.HDTV.x264-CPG Game.of.Thrones.S03E10.480p.HDTV.x264-ChameE
Game.of.Thrones.S03E10.480p.HDTV.x264-mSD Game.of.Thrones.S03E10.HDTV.XviD-Chivvez
Game.of.Thrones.S03E10.HDTV.XviD-3LT0N Game.of.Thrones.S03E10.HDTV.XviD-Snake
Game.of.Thrones.S03E10.HDTV.XviD-JKS Game.of.Thrones.S03E10.HDTV.XviD-AFG</release><languageId>8</languageId><languageName>French</languageName><language>fr</language><time>1370985506</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>1598</downloads><exactHashes /></subtitle><subtitle><id>2474993</id><pid>8cMl</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/fr-game-of-thrones-2011-S03E10/8cMl</url><uploaderId>44181</uploaderId><uploaderName>grzesiek11</uploaderName><release>Game.of.Thrones.S03E10.720p.HDTV.x264-EVOLVE
Game.of.Thrones.S03E10.720p.HDTV.x264-CPG Game.of.Thrones.S03E10.480p.HDTV.x264-ChameE
Game.of.Thrones.S03E10.480p.HDTV.x264-mSD Game.of.Thrones.S03E10.HDTV.XviD-Chivvez
Game.of.Thrones.S03E10.HDTV.XviD-3LT0N Game.of.Thrones.S03E10.HDTV.XviD-Snake
Game.of.Thrones.S03E10.HDTV.XviD-JKS Game.of.Thrones.S03E10.HDTV.XviD-AFG</release><languageId>8</languageId><languageName>French</languageName><language>fr</language><time>1370851348</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>5273</downloads><exactHashes>sublight:abb28aefd1ca56458901371447fec372</exactHashes></subtitle><subtitle><id>2474984</id><pid>6MMl</pid><title>Game
of Thrones</title><year>2011</year><movieId>mLUG</movieId><url>http://www.podnapisi.net/subtitles/fr-game-of-thrones-2011-S03E10/6MMl</url><uploaderId>44181</uploaderId><uploaderName>grzesiek11</uploaderName><release>Game.of.Thrones.S03E10.HDTV.x264-EVOLVE</release><languageId>8</languageId><languageName>French</languageName><language>fr</language><time>1370848797</time><tvSeason>3</tvSeason><tvEpisode>10</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>3814</downloads><exactHashes /></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['4874']
Content-Type: [text/xml;charset=utf-8]
Date: ['Thu, 09 Jul 2015 21:33:29 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,160 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:28 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>12</results></pagination><subtitle><id>2738264</id><pid>WMgp</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/WMgp</url><uploaderId>41840</uploaderId><uploaderName>gilraen</uploaderName><release>Man.Of.Steel.2013.EXTRAS.BONUS.DISC.720p.BluRay.DTS.x264-PublicHD:
publichd.EXTRAS.Journey.Of.Discovery.Creating.Man.Of.Steel.720p publichd.EXTRAS.Planet.Krypton.720p</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1385011759</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>1766</downloads><exactHashes
/></subtitle><subtitle><id>2681136</id><pid>MOko</pid><title>Man of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/MOko</url><uploaderId>41840</uploaderId><uploaderName>gilraen</uploaderName><release>publichd.EXTRAS</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1382420144</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>4605</downloads><exactHashes
/></subtitle><subtitle><id>2672974</id><pid>Tsko</pid><title>Man of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/Tsko</url><uploaderId>144401</uploaderId><uploaderName>flax</uploaderName><release>Man.Of.Steel.2013.720p.BRRip.x264.AAC-ViSiON
Man.Of.Steel.2013.720p.BluRay.x264-Felony.[PublicHD]. Man.Of.Steel.2013.1080p.BluRay.x264-SECTOR7.
Man.Of.Steel.2013.720p.BRRip.x264.AC3-UNDERCOVER. Man.Of.Steel.2013.BDRip.XviD.MP3-RARBG.
Man.Of.Steel.(2013).BDRip.600MB.Ganool. Man.of.Steel.2013.BDRip.x264.700MB-Micromkv.
Man.Of.Steel.2013.BRRip.AAC.x264-SSDD. Man.Of.Steel.2013.BDRip.x264-Larceny.
Man.Of.Steel.2013.BDRiP.XViD-NoGRP. Man.Of.Steel.2013.720p.BRRip.x264.AC3-EVO.
Man.of.Steel.2013.720p.BRRip.h264.AAC-RARBG. Man.Of.Steel.[2013].BRRip.XviD-ETRG.
Man.of.Steel.[2013].BRRip.XViD.[AC3]-ETRG. Man.Of.Steel.2013.BRRiP.XVID.AC3-MAJESTIC.
Man.of.steel.2013.BRRip.XviD.AC3-RARBG. Man.Of.Steel.2013.720p.BRRip.x264.AC3-SUPERM4N.
Man.Of.Steel.2013.720p.BRRip.XviD.AC3-ViSiON</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381874511</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>10147</downloads><exactHashes>sublight:44b92527dbc1d9a73bfb02990c41ffa1
sublight:391ae5c74ab8ab8f93f9875d236a672b sublight:e5c4c23d90498eb7482b1f016ff39e92</exactHashes></subtitle><subtitle><id>2672656</id><pid>EMgo</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/EMgo</url><uploaderId>7718</uploaderId><uploaderName>jdinic3</uploaderName><release>Man.Of.Steel.2013.720p.BRRip.x264.AAC-ViSiON
Man.Of.Steel.2013.720p.BluRay.x264-Felony Man.Of.Steel.2013.1080p.BluRay.x264-SECTOR7
Man.Of.Steel.2013.720p.BRRip.x264.AC3-UNDERCOVER Man.Of.Steel.2013.BDRip.XviD.MP3-RARBG
Man.Of.Steel.(2013).BDRip.600MB.Ganool Man.of.Steel.2013.BDRip.x264.700MB-Micromkv
Man.Of.Steel.2013.BRRip.AAC.x264-SSDD Man.Of.Steel.2013.BDRip.x264-Larceny
Man.Of.Steel.2013.BDRiP.XViD-NoGRP Man.Of.Steel.2013.720p.BRRip.x264.AC3-EVO
Man.of.Steel.2013.720p.BRRip.h264.AAC-RARBG Man.Of.Steel.[2013].BRRip.XviD-ETRG
Man.of.Steel.[2013].BRRip.XViD.[AC3]-ETRG Man.Of.Steel.2013.BRRiP.XVID.AC3-MAJESTIC
Man.of.steel.2013.BRRip.XviD.AC3-RARBG Man.Of.Steel.2013.720p.BRRip.x264.AC3-SUPERM4N
Man.Of.Steel.2013.720p.BRRip.XviD.AC3-ViSiON Man.Of.Steel.2013.720p.BRRip.x264.AC3-JYK
Man.of.Steel.[2013].DVDRIP.DIVX.[Eng]-DUQA&#9516;&#171; Man.of.Steel.2013.1080p.BluRay.x264.YIFY</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381852391</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>11139</downloads><exactHashes>sublight:bb6b91e12f876eecbf86ca6a296807a7
sublight:e5c4c23d90498eb7482b1f016ff39e92 sublight:1858614a80929a54653e95d50f8accc1</exactHashes></subtitle><subtitle><id>2667828</id><pid>NLUo</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/NLUo</url><uploaderId>86327</uploaderId><uploaderName>mixi69</uploaderName><release>Man.of.Steel.[2013].INTERNAL.TS.720p.DIVX.[Eng]-DUQA</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381502479</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>1544</downloads><exactHashes /></subtitle><subtitle><id>2525113</id><pid>uYcm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/uYcm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.[2013].INTERNAL.TS.720p.DIVX.[Eng]-DUQA&#9516;&#171;</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373611040</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>2770</downloads><exactHashes /></subtitle><subtitle><id>2524778</id><pid>aoYm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/aoYm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Superman.Man.of.Steel.2013.480p.R6.LiNE.x264.AAC-DAMN</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373589100</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>8518</downloads><exactHashes /></subtitle><subtitle><id>2520414</id><pid>XnUm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/XnUm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.(2013).720p.R6.LiNE.900MB.Ganool</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373391411</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>4222</downloads><exactHashes /></subtitle><subtitle><id>2515558</id><pid>ZmIm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/ZmIm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.2013.720p.R6.LiNE.x264.AAC-DiGiTAL</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373141422</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>5565</downloads><exactHashes /></subtitle><subtitle><id>2495682</id><pid>whQm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/whQm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.2013.CAM.XviD.MP3.MiLLENiUM</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1372075950</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>6276</downloads><exactHashes /></subtitle><subtitle><id>2495217</id><pid>8RIm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/8RIm</url><uploaderId>26933</uploaderId><uploaderName>asdasd</uploaderName><release>Man.Of.Steel.2013.CAM.XViD-CALiBRATE</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1372047356</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>5048</downloads><exactHashes /></subtitle><subtitle><id>2489654</id><pid>Nv0l</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/Nv0l</url><uploaderId>7718</uploaderId><uploaderName>jdinic3</uploaderName><release>Man.Of.Steel.2013.CAM.NEW.AUDiO.XViD-JUSTiCE</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1371805723</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>7480</downloads><exactHashes /></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['11082']
Content-Type: [text/xml;charset=utf-8]
Date: ['Thu, 09 Jul 2015 21:33:28 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sL=fr&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:28 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sL=fr&sY=2013&sXML=1&sK=Man+of+Steel']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sL=fr&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>2</results></pagination><subtitle><id>2673432</id><pid>GMso</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/fr-man-of-steel-2013/GMso</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.Of.Steel.2013.BDRip.x264-Larceny</release><languageId>8</languageId><languageName>French</languageName><language>fr</language><time>1381991887</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>3899</downloads><exactHashes>sublight:e5c4c23d90498eb7482b1f016ff39e92</exactHashes></subtitle><subtitle><id>2552439</id><pid>d_Im</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/fr-man-of-steel-2013/d_Im</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.Of.Steel.2013.TS.XviD-JUSTiCE
Man.of.Steel.2013.720p.R6.LiNE.x264.AAC-DiGiTAL</release><languageId>8</languageId><languageName>French</languageName><language>fr</language><time>1374819034</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>4279</downloads><exactHashes /></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['2785']
Content-Type: [text/xml;charset=utf-8]
Date: ['Thu, 09 Jul 2015 21:33:29 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,70 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sTS=7&sL=en&sY=2007&sK=The+Big+Bang+Theory&sTE=5&sXML=1
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:28 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sTS=7&sL=en&sY=2007&sK=The+Big+Bang+Theory&sTE=5&sXML=1']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sTS=7&sL=en&sY=2007&sK=The+Big+Bang+Theory&sTE=5&sXML=1
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>5</results></pagination><subtitle><id>3514331</id><pid>2581</pid><title>The
Big Bang Theory</title><year>2007</year><movieId>sY0G</movieId><url>http://www.podnapisi.net/subtitles/en-the-big-bang-theory-2007-S07E05/2581</url><uploaderId>23329</uploaderId><uploaderName>jane</uploaderName><release>the.big.bang.theory.s07e05.1080p.bluray.x264-rovers</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1410069965</time><tvSeason>7</tvSeason><tvEpisode>5</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>843</downloads><exactHashes
/></subtitle><subtitle><id>3514307</id><pid>w581</pid><title>The Big Bang
Theory</title><year>2007</year><movieId>sY0G</movieId><url>http://www.podnapisi.net/subtitles/en-the-big-bang-theory-2007-S07E05/w581</url><uploaderId>23329</uploaderId><uploaderName>jane</uploaderName><release>the.big.bang.theory.s07e05.1080p.bluray.x264-rovers</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1410069864</time><tvSeason>7</tvSeason><tvEpisode>5</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>838</downloads><exactHashes
/></subtitle><subtitle><id>2676094</id><pid>ftUo</pid><title>The Big Bang
Theory</title><year>2007</year><movieId>sY0G</movieId><url>http://www.podnapisi.net/subtitles/en-the-big-bang-theory-2007-S07E05/ftUo</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>The.Big.Bang.Theory.S07E05.720p.WEB-DL.DD5.1.H.264</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1382101941</time><tvSeason>7</tvSeason><tvEpisode>5</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>4050</downloads><exactHashes>sublight:8bf2c59b194d36229b4e88995084ec05</exactHashes></subtitle><subtitle><id>2675729</id><pid>EdQo</pid><title>The
Big Bang Theory</title><year>2007</year><movieId>sY0G</movieId><url>http://www.podnapisi.net/subtitles/en-the-big-bang-theory-2007-S07E05/EdQo</url><uploaderId>44181</uploaderId><uploaderName>grzesiek11</uploaderName><release>The.Big.Bang.Theory.S07E05.HDTV.x264-LOL
The.Big.Bang.Theory.S07E05.720p.HDTV.x264-DIMENSION The.Big.Bang.Theory.S07E05.480p.HDTV.x264-mSD
The.Big.Bang.Theory.S07E05.HDTV.XviD-AFG</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1382071751</time><tvSeason>7</tvSeason><tvEpisode>5</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>22411</downloads><exactHashes>sublight:52882d75832c3c6fe8116d26993f66c4
sublight:b34e0421f93bd4df512ca5458376a559 sublight:09e9dc38376b2245e9f806c106dc9928
sublight:fd25365147f1e59f4cfa4c283c70b22a</exactHashes></subtitle><subtitle><id>2675544</id><pid>WNMo</pid><title>The
Big Bang Theory</title><year>2007</year><movieId>sY0G</movieId><url>http://www.podnapisi.net/subtitles/en-the-big-bang-theory-2007-S07E05/WNMo</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>The.Big.Bang.Theory.S07E05.HDTV.x264-LOL
The.Big.Bang.Theory.S07E05.720p.HDTV.x264-DIMENSION The.Big.Bang.Theory.S07E05.480p.HDTV.x264-mSD
The.Big.Bang.Theory.S07E05.HDTV.XviD-AFG</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1382058590</time><tvSeason>7</tvSeason><tvEpisode>5</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>8692</downloads><exactHashes>sublight:52882d75832c3c6fe8116d26993f66c4
sublight:1be0b687d8689ee0e2a094531f7da7b8</exactHashes></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['5559']
Content-Type: [text/xml;charset=utf-8]
Date: ['Thu, 09 Jul 2015 21:33:28 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
version: 1
@@ -0,0 +1,105 @@
interactions:
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<html>\r\n<head><title>302 Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>302
Found</h1></center>\r\n<hr><center>nginx/1.8.0</center>\r\n</body>\r\n</html>\r\n"}
headers:
Connection: [keep-alive]
Content-Length: ['160']
Content-Type: [text/html]
Date: ['Thu, 09 Jul 2015 21:33:27 GMT']
Location: ['http://www.podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel']
Server: [nginx/1.8.0]
status: {code: 302, message: Moved Temporarily}
- request:
body: null
headers:
User-Agent: [Subliminal/0.8.0]
method: GET
uri: http://www.podnapisi.net/subtitles/search/old?sL=en&sY=2013&sXML=1&sK=Man+of+Steel
response:
body: {string: "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>\n<!DOCTYPE
results [\n <!ELEMENT results (#PCDATA|pagination|subtitle)*>\n <!ELEMENT
pagination (current, count, results)>\n <!ELEMENT current (#PCDATA)>\n
\ <!ELEMENT count (#PCDATA)>\n <!ELEMENT subtitle (id, title, year,
movieId, url, uploaderId, uploaderName, release, languageId, languageName,
time, tvSeason, tvEpisode, tvSpecial, cds, format, fps, rating, flags, downloads)>\n
\ <!ELEMENT id (#PCDATA)>\n <!ELEMENT pid (#PCDATA)>\n <!ELEMENT
title (#PCDATA)>\n <!ELEMENT year (#PCDATA)>\n <!ELEMENT movieId
(#PCDATA)>\n <!ELEMENT url (#PCDATA)>\n <!ELEMENT uploaderId (#PCDATA)>\n
\ <!ELEMENT uploaderName (#PCDATA)>\n <!ELEMENT release (#PCDATA)>\n
\ <!ELEMENT languageId (#PCDATA)>\n <!ELEMENT languageName (#PCDATA)>\n
\ <!ELEMENT language (#PCDATA)>\n <!ELEMENT time (#PCDATA)>\n <!ELEMENT
tvSeason (#PCDATA)>\n <!ELEMENT tvEpisode (#PCDATA)>\n <!ELEMENT
tvSpecial (#PCDATA)>\n <!ELEMENT cds (#PCDATA)>\n <!ELEMENT format
(#PCDATA)>\n <!ELEMENT fps (#PCDATA)>\n <!ELEMENT rating (#PCDATA)>\n
\ <!ELEMENT flags (#PCDATA)>\n <!ELEMENT new_flags (#PCDATA)>\n <!ELEMENT
flag (#PCDATA)>\n <!ELEMENT downloads (#PCDATA)>\n <!ELEMENT exactHashes
(#PCDATA)>]> <results><pagination><current>1</current><count>1</count><results>12</results></pagination><subtitle><id>2738264</id><pid>WMgp</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/WMgp</url><uploaderId>41840</uploaderId><uploaderName>gilraen</uploaderName><release>Man.Of.Steel.2013.EXTRAS.BONUS.DISC.720p.BluRay.DTS.x264-PublicHD:
publichd.EXTRAS.Journey.Of.Discovery.Creating.Man.Of.Steel.720p publichd.EXTRAS.Planet.Krypton.720p</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1385011759</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>1766</downloads><exactHashes
/></subtitle><subtitle><id>2681136</id><pid>MOko</pid><title>Man of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/MOko</url><uploaderId>41840</uploaderId><uploaderName>gilraen</uploaderName><release>publichd.EXTRAS</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1382420144</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>4605</downloads><exactHashes
/></subtitle><subtitle><id>2672974</id><pid>Tsko</pid><title>Man of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/Tsko</url><uploaderId>144401</uploaderId><uploaderName>flax</uploaderName><release>Man.Of.Steel.2013.720p.BRRip.x264.AAC-ViSiON
Man.Of.Steel.2013.720p.BluRay.x264-Felony.[PublicHD]. Man.Of.Steel.2013.1080p.BluRay.x264-SECTOR7.
Man.Of.Steel.2013.720p.BRRip.x264.AC3-UNDERCOVER. Man.Of.Steel.2013.BDRip.XviD.MP3-RARBG.
Man.Of.Steel.(2013).BDRip.600MB.Ganool. Man.of.Steel.2013.BDRip.x264.700MB-Micromkv.
Man.Of.Steel.2013.BRRip.AAC.x264-SSDD. Man.Of.Steel.2013.BDRip.x264-Larceny.
Man.Of.Steel.2013.BDRiP.XViD-NoGRP. Man.Of.Steel.2013.720p.BRRip.x264.AC3-EVO.
Man.of.Steel.2013.720p.BRRip.h264.AAC-RARBG. Man.Of.Steel.[2013].BRRip.XviD-ETRG.
Man.of.Steel.[2013].BRRip.XViD.[AC3]-ETRG. Man.Of.Steel.2013.BRRiP.XVID.AC3-MAJESTIC.
Man.of.steel.2013.BRRip.XviD.AC3-RARBG. Man.Of.Steel.2013.720p.BRRip.x264.AC3-SUPERM4N.
Man.Of.Steel.2013.720p.BRRip.XviD.AC3-ViSiON</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381874511</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>h</flags><new_flags><flag>high_definition</flag></new_flags><downloads>10147</downloads><exactHashes>sublight:44b92527dbc1d9a73bfb02990c41ffa1
sublight:391ae5c74ab8ab8f93f9875d236a672b sublight:e5c4c23d90498eb7482b1f016ff39e92</exactHashes></subtitle><subtitle><id>2672656</id><pid>EMgo</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/EMgo</url><uploaderId>7718</uploaderId><uploaderName>jdinic3</uploaderName><release>Man.Of.Steel.2013.720p.BRRip.x264.AAC-ViSiON
Man.Of.Steel.2013.720p.BluRay.x264-Felony Man.Of.Steel.2013.1080p.BluRay.x264-SECTOR7
Man.Of.Steel.2013.720p.BRRip.x264.AC3-UNDERCOVER Man.Of.Steel.2013.BDRip.XviD.MP3-RARBG
Man.Of.Steel.(2013).BDRip.600MB.Ganool Man.of.Steel.2013.BDRip.x264.700MB-Micromkv
Man.Of.Steel.2013.BRRip.AAC.x264-SSDD Man.Of.Steel.2013.BDRip.x264-Larceny
Man.Of.Steel.2013.BDRiP.XViD-NoGRP Man.Of.Steel.2013.720p.BRRip.x264.AC3-EVO
Man.of.Steel.2013.720p.BRRip.h264.AAC-RARBG Man.Of.Steel.[2013].BRRip.XviD-ETRG
Man.of.Steel.[2013].BRRip.XViD.[AC3]-ETRG Man.Of.Steel.2013.BRRiP.XVID.AC3-MAJESTIC
Man.of.steel.2013.BRRip.XviD.AC3-RARBG Man.Of.Steel.2013.720p.BRRip.x264.AC3-SUPERM4N
Man.Of.Steel.2013.720p.BRRip.XviD.AC3-ViSiON Man.Of.Steel.2013.720p.BRRip.x264.AC3-JYK
Man.of.Steel.[2013].DVDRIP.DIVX.[Eng]-DUQA&#9516;&#171; Man.of.Steel.2013.1080p.BluRay.x264.YIFY</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381852391</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>1.0</rating><flags>nh</flags><new_flags><flag>hearing_impaired</flag><flag>high_definition</flag></new_flags><downloads>11139</downloads><exactHashes>sublight:bb6b91e12f876eecbf86ca6a296807a7
sublight:e5c4c23d90498eb7482b1f016ff39e92 sublight:1858614a80929a54653e95d50f8accc1</exactHashes></subtitle><subtitle><id>2667828</id><pid>NLUo</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/NLUo</url><uploaderId>86327</uploaderId><uploaderName>mixi69</uploaderName><release>Man.of.Steel.[2013].INTERNAL.TS.720p.DIVX.[Eng]-DUQA</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1381502479</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>1544</downloads><exactHashes /></subtitle><subtitle><id>2525113</id><pid>uYcm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/uYcm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.[2013].INTERNAL.TS.720p.DIVX.[Eng]-DUQA&#9516;&#171;</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373611040</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>2770</downloads><exactHashes /></subtitle><subtitle><id>2524778</id><pid>aoYm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/aoYm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Superman.Man.of.Steel.2013.480p.R6.LiNE.x264.AAC-DAMN</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373589100</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>8518</downloads><exactHashes /></subtitle><subtitle><id>2520414</id><pid>XnUm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/XnUm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.(2013).720p.R6.LiNE.900MB.Ganool</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373391411</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>4222</downloads><exactHashes /></subtitle><subtitle><id>2515558</id><pid>ZmIm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/ZmIm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.2013.720p.R6.LiNE.x264.AAC-DiGiTAL</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1373141422</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>5565</downloads><exactHashes /></subtitle><subtitle><id>2495682</id><pid>whQm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/whQm</url><uploaderId>1</uploaderId><uploaderName>Anonymous</uploaderName><release>Man.of.Steel.2013.CAM.XviD.MP3.MiLLENiUM</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1372075950</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>6276</downloads><exactHashes /></subtitle><subtitle><id>2495217</id><pid>8RIm</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/8RIm</url><uploaderId>26933</uploaderId><uploaderName>asdasd</uploaderName><release>Man.Of.Steel.2013.CAM.XViD-CALiBRATE</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1372047356</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>5048</downloads><exactHashes /></subtitle><subtitle><id>2489654</id><pid>Nv0l</pid><title>Man
of Steel</title><year>2013</year><movieId>_ngG</movieId><url>http://www.podnapisi.net/subtitles/en-man-of-steel-2013/Nv0l</url><uploaderId>7718</uploaderId><uploaderName>jdinic3</uploaderName><release>Man.Of.Steel.2013.CAM.NEW.AUDiO.XViD-JUSTiCE</release><languageId>2</languageId><languageName>English</languageName><language>en</language><time>1371805723</time><tvSeason>0</tvSeason><tvEpisode>0</tvEpisode><tvSpecial>0</tvSpecial><cds
/><format>N/A</format><fps>N/A</fps><rating>0.0</rating><flags /><new_flags
/><downloads>7480</downloads><exactHashes /></subtitle></results>"}
headers:
Connection: [keep-alive]
Content-Length: ['11082']
Content-Type: [text/xml;charset=utf-8]
Date: ['Thu, 09 Jul 2015 21:33:28 GMT']
Server: [nginx/1.8.0]
status: {code: 200, message: OK}
version: 1

Some files were not shown because too many files have changed in this diff Show More