subtitle_source 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/.rspec +5 -0
- data/Gemfile +4 -0
- data/README.md +98 -0
- data/Rakefile +2 -0
- data/lib/subtitle_source.rb +101 -0
- data/lib/subtitle_source/array.rb +30 -0
- data/spec/array_spec.rb +46 -0
- data/spec/fixtures/vcr_cassettes/0813715-details.yml +368 -0
- data/spec/fixtures/vcr_cassettes/0813715-url.yml +336 -0
- data/spec/fixtures/vcr_cassettes/heroes-any-language-english.yml +234 -0
- data/spec/fixtures/vcr_cassettes/heroes-english.yml +645 -0
- data/spec/fixtures/vcr_cassettes/imdb-0813715-page-2.yml +323 -0
- data/spec/fixtures/vcr_cassettes/imdb-0813715.yml +1363 -0
- data/spec/fixtures/vcr_cassettes/imdb-page-2.yml +645 -0
- data/spec/fixtures/vcr_cassettes/non-valid-chars.yml +43 -0
- data/spec/fixtures/vcr_cassettes/prison-break-english.yml +323 -0
- data/spec/fixtures/vcr_cassettes/tt0840361.yml +323 -0
- data/spec/spec_helper.rb +18 -0
- data/spec/subtitle_source_spec.rb +139 -0
- data/subtitle_source.gemspec +28 -0
- metadata +154 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# Subtitle Source
|
2
|
+
|
3
|
+
Ruby bindings for [subtitlesource.org](http://www.subtitlesource.org/).
|
4
|
+
|
5
|
+
Follow me on [Twitter](http://twitter.com/linusoleander) or [Github](https://github.com/oleander/) for more info and updates.
|
6
|
+
|
7
|
+
## How to use
|
8
|
+
|
9
|
+
### Request an API key
|
10
|
+
|
11
|
+
You can easily request an API key at the [Subtitle Source API page](http://www.subtitlesource.org/help/contact).
|
12
|
+
|
13
|
+
### Initialize
|
14
|
+
|
15
|
+
Pass your API key to the constructor.
|
16
|
+
*This is just an example.*
|
17
|
+
|
18
|
+
```` ruby
|
19
|
+
@subtitles = SubtitleSource.new("6894b779456d330e")
|
20
|
+
````
|
21
|
+
|
22
|
+
### Search for a subtitle
|
23
|
+
|
24
|
+
```` ruby
|
25
|
+
@subtitles.query("Heroes.S03E09.HDTV.XviD-LOL").fetch
|
26
|
+
````
|
27
|
+
|
28
|
+
### Specify a language
|
29
|
+
|
30
|
+
```` ruby
|
31
|
+
@subtitles.language("english").query("Heroes.S03E09.HDTV.XviD-LOL").fetch
|
32
|
+
````
|
33
|
+
|
34
|
+
### Find by IMDb id
|
35
|
+
|
36
|
+
```` ruby
|
37
|
+
@subtitles.imdb("tt0813715").fetch
|
38
|
+
````
|
39
|
+
|
40
|
+
### Specify a page
|
41
|
+
|
42
|
+
Default is *1*.
|
43
|
+
*20* results per page.
|
44
|
+
|
45
|
+
```` ruby
|
46
|
+
@subtitles.imdb("tt0813715").page(2).fetch
|
47
|
+
````
|
48
|
+
|
49
|
+
### Find subtitle based on a release name
|
50
|
+
|
51
|
+
```` ruby
|
52
|
+
@subtitles.imdb("tt0813715").fetch.based_on("The Town EXTENDED 2010 480p BRRip XviD AC3 FLAWL3SS").title
|
53
|
+
# => "The Town"
|
54
|
+
````
|
55
|
+
|
56
|
+
### Sensitive
|
57
|
+
|
58
|
+
Specify how sensitive the `based_on` method should be, `0.0` to `1.0`. Default is `0.4`.
|
59
|
+
|
60
|
+
```` ruby
|
61
|
+
@subtitles.imdb("tt0813715").fetch.based_on("The Town EXTENDED 2010 480p BRRip XviD AC3 FLAWL3SS", limit: 0.0).release_name
|
62
|
+
# => "The Town EXTENDED 2010 480p BRRip XviD AC3 FLAWL3SS"
|
63
|
+
````
|
64
|
+
|
65
|
+
## Data to work with
|
66
|
+
|
67
|
+
The `fetch` method returns a list for subtitles. Each subtitle has the following accessors.
|
68
|
+
|
69
|
+
```` ruby
|
70
|
+
@subtitles.imdb("tt0813715").fetch.first.release_name
|
71
|
+
# => "Heroes.S03E09.HDTV.XviD-LOL"
|
72
|
+
````
|
73
|
+
|
74
|
+
- **title** (*String*) Movie/TV serie title.
|
75
|
+
- **imdb** (*String*) IMDb id.
|
76
|
+
- **id** (*Fixnum*) Subtitle Source id.
|
77
|
+
- **rid** (*Fixnum*) Same as above, I think.
|
78
|
+
- **language** (*String*) Subtitle language.
|
79
|
+
- **season** (*Fixnum*) Season for the given TV serie.
|
80
|
+
- **episode** (*Fixnum*) Episode for the given TV serie.
|
81
|
+
- **release_name** (*String*) Subtitle release name.
|
82
|
+
- **fps** (*Fixnum*) Frames per second.
|
83
|
+
- **cd** (*Fixnum*) The amount of cd's for the given TV serie.
|
84
|
+
- **details** (*String*) Url to the details page. [Example](http://www.subtitlesource.org/subs/73538/Source.Code.(2011).DVDRip.XviD-MAXSPEED).
|
85
|
+
- **url** (*String*) Url to the zipped subtitle. [Example](http://www.subtitlesource.org/download/zip/73538).
|
86
|
+
- **hi** (*Fixnum*)
|
87
|
+
|
88
|
+
## How to install
|
89
|
+
|
90
|
+
[sudo] gem install subtitlesource
|
91
|
+
|
92
|
+
## Requirements
|
93
|
+
|
94
|
+
*Subtitle Source* is tested in *OS X 10.6.8* using Ruby *1.9.2*.
|
95
|
+
|
96
|
+
## License
|
97
|
+
|
98
|
+
*Subtitle Source* is released under the *MIT license*.
|
data/Rakefile
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
require "rest_client"
|
2
|
+
require "subtitle_source/array"
|
3
|
+
require "nokogiri"
|
4
|
+
require "uri"
|
5
|
+
require "cgi"
|
6
|
+
|
7
|
+
class SubtitleSource
|
8
|
+
attr_reader :api_key
|
9
|
+
|
10
|
+
def initialize(api_key)
|
11
|
+
@api_key = api_key
|
12
|
+
unless @api_key
|
13
|
+
raise ArgumentError.new("You must specify an Subtitle Source API key.")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def query(query)
|
18
|
+
tap do
|
19
|
+
@query = URI.escape(query)
|
20
|
+
@imdb = nil
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def language(language)
|
25
|
+
tap do
|
26
|
+
@language = language.to_s.downcase
|
27
|
+
@imdb = nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def imdb(imdb)
|
32
|
+
tap do
|
33
|
+
@imdb = imdb.to_s.match(/^(tt)?(\d+)/).to_a[2]
|
34
|
+
@language = nil; @query = nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def page(page)
|
39
|
+
tap { @page = page - 1 }
|
40
|
+
end
|
41
|
+
|
42
|
+
def fetch
|
43
|
+
content
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def content
|
49
|
+
subtitle = Struct.new(
|
50
|
+
:title,
|
51
|
+
:imdb,
|
52
|
+
:id,
|
53
|
+
:rid,
|
54
|
+
:language,
|
55
|
+
:season,
|
56
|
+
:episode,
|
57
|
+
:release_name,
|
58
|
+
:fps,
|
59
|
+
:cd,
|
60
|
+
:hi,
|
61
|
+
:details,
|
62
|
+
:url
|
63
|
+
)
|
64
|
+
|
65
|
+
subtitles = Nokogiri::XML(get).css("subtitlesource xmlsearch sub").map do |sub|
|
66
|
+
subtitle.new(
|
67
|
+
sub.at_css("title").content,
|
68
|
+
"tt#{sub.at_css("imdb").content}",
|
69
|
+
sub.at_css("id").content.to_i,
|
70
|
+
sub.at_css("rid").content.to_i,
|
71
|
+
sub.at_css("language").content,
|
72
|
+
sub.at_css("season").content.to_i,
|
73
|
+
sub.at_css("episode").content.to_i,
|
74
|
+
sub.at_css("releasename").content,
|
75
|
+
sub.at_css("fps").content.to_i,
|
76
|
+
sub.at_css("cd").content.to_i,
|
77
|
+
sub.at_css("hi").content.to_i,
|
78
|
+
"http://www.subtitlesource.org/subs/#{sub.at_css("id").content}/#{sub.at_css("releasename").content}",
|
79
|
+
"http://www.subtitlesource.org/download/zip/#{sub.at_css("id").content}"
|
80
|
+
)
|
81
|
+
end
|
82
|
+
|
83
|
+
SubtitleSourceModule::Subtitles.new(subtitles)
|
84
|
+
end
|
85
|
+
|
86
|
+
def get
|
87
|
+
(@get ||= {})[url] ||= RestClient.get(url, timeout: 10)
|
88
|
+
end
|
89
|
+
|
90
|
+
def url
|
91
|
+
if @query
|
92
|
+
part = "#{@query}/#{@language || "all"}"
|
93
|
+
elsif @imdb
|
94
|
+
part = "#{@imdb}/imdb"
|
95
|
+
end
|
96
|
+
|
97
|
+
"http://www.subtitlesource.org/api/#{@api_key}/3.0/xmlsearch/#{part}/#{@page.to_i * 20}".gsub(/\{|\}|\||\\|\^|\[|\]|\`|\s+/) do |m|
|
98
|
+
CGI::escape(m)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'levenshteinish'
|
2
|
+
|
3
|
+
module SubtitleSourceModule
|
4
|
+
class Subtitles < Array
|
5
|
+
def based_on(string, args = {})
|
6
|
+
result = self.any? ? self.map do |s|
|
7
|
+
[Levenshtein.distance(s.release_name, string, args[:limit] || 0.4), s]
|
8
|
+
end.reject do |value|
|
9
|
+
value.first.nil?
|
10
|
+
end.sort_by do |value|
|
11
|
+
value.first
|
12
|
+
end.map(&:last).first : nil
|
13
|
+
|
14
|
+
return if result.nil?
|
15
|
+
|
16
|
+
# If the string contains a release date, then the results should do it to
|
17
|
+
if result.release_name =~ /(s\d{2}e\d{2})/i
|
18
|
+
return unless string.match(/#{$1}/i)
|
19
|
+
end
|
20
|
+
|
21
|
+
# If the {string} contains a year, then the found movie should return one to
|
22
|
+
if result.release_name =~ /((19|20)\d{2})/
|
23
|
+
return unless string.match(/#{$1}/)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Yes i know, return isn't needed
|
27
|
+
return result
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/spec/array_spec.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe SubtitleSourceModule::Subtitles do
|
4
|
+
use_vcr_cassette "tt0840361"
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@subtitles = SubtitleSource.new(ENV["API_KEY"]).imdb("0813715").fetch
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should have a based_on method" do
|
11
|
+
lambda{
|
12
|
+
@subtitles.based_on("some args")
|
13
|
+
}.should_not raise_error(NoMethodError)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "return the best result" do
|
17
|
+
string = "Heroes.S04E18.720p.HDTV.X264-DIMENSION"
|
18
|
+
@subtitles.based_on(string).release_name.should eq(string)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should not return anything if the limit is set to low" do
|
22
|
+
@subtitles.based_on("Heroes.S04E18.720p.HDTV.X264", limit: 0).should be_nil
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should not return the right movie if to litle info i passed" do
|
26
|
+
@subtitles.based_on("heroes").should be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return nil if trying to fetch an non existing imdb id" do
|
30
|
+
SubtitleSourceModule::Subtitles.new([]).based_on("some random argument").should be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should raise an exception when the array does not contain any subtitle objects" do
|
34
|
+
lambda {
|
35
|
+
[1,2,2,3].based_on("some args")
|
36
|
+
}.should raise_error(NoMethodError)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return nil due to the release date {S04E18}" do
|
40
|
+
@subtitles.based_on("Heroes.S04E49.720p.HDTV.X264").should be_nil
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should not return anything due to the wrong year" do
|
44
|
+
@subtitles.based_on("Heroes.S04E49.720p.HDTV.X264.2011").should be_nil
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,368 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://www.subtitlesource.org:80/subs/58699/Heroes.S04E19.720p.HDTV.X264-DIMENSION
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- "*/*; q=0.5, application/xml"
|
10
|
+
accept-encoding:
|
11
|
+
- gzip, deflate
|
12
|
+
response: !ruby/struct:VCR::Response
|
13
|
+
status: !ruby/struct:VCR::ResponseStatus
|
14
|
+
code: 200
|
15
|
+
message: OK
|
16
|
+
headers:
|
17
|
+
date:
|
18
|
+
- Mon, 11 Jul 2011 14:23:52 GMT
|
19
|
+
server:
|
20
|
+
- Apache
|
21
|
+
x-powered-by:
|
22
|
+
- PHP/5.3.6
|
23
|
+
expires:
|
24
|
+
- Thu, 19 Nov 1981 08:52:00 GMT
|
25
|
+
cache-control:
|
26
|
+
- no-store, no-cache, must-revalidate, post-check=0, pre-check=0
|
27
|
+
pragma:
|
28
|
+
- no-cache
|
29
|
+
set-cookie:
|
30
|
+
- PHPSESSID=1da199c2d4649dd5773bcaae4d550866; path=/
|
31
|
+
- phpbb3_s6tmy_k=; expires=Tue, 10-Jul-2012 14:23:52 GMT; path=/; domain=.subtitlesource.org; HttpOnly
|
32
|
+
- phpbb3_s6tmy_sid=a332ddb67be130872811899139344db7; expires=Tue, 10-Jul-2012 14:23:52 GMT; path=/; domain=.subtitlesource.org; HttpOnly
|
33
|
+
- phpbb3_s6tmy_u=1; expires=Tue, 10-Jul-2012 14:23:52 GMT; path=/; domain=.subtitlesource.org; HttpOnly
|
34
|
+
transfer-encoding:
|
35
|
+
- chunked
|
36
|
+
content-type:
|
37
|
+
- text/html; charset=utf-8
|
38
|
+
body: |
|
39
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
40
|
+
<html lang="en">
|
41
|
+
<head>
|
42
|
+
<title>Heroes 4x19 DIMENSION undertexter - SubtitleSource</title>
|
43
|
+
<meta name="verify-v1" content="+f2li6lY32KIxy05WwSLfS8od2CwEb2SrV0ox64WHJg=" />
|
44
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
45
|
+
<meta http-equiv="Content-Language" content="en-GB" />
|
46
|
+
<meta HTTP-EQUIV=REFRESH CONTENT=300 />
|
47
|
+
<meta name="description" content="Heroes svenska undertexter
|
48
|
+
Swedish subtitles Heroes.S04E19.720p.HDTV.X264-DIMENSION" />
|
49
|
+
<meta name="keywords" content="svenska,undertexter, Heroes, Heroes.S04E19.720p.HDTV.X264-DIMENSION, subtitles, subtitle, subs, Swedish" />
|
50
|
+
<link rel="alternate" href="http://www.subtitlesource.org/latest" type="text/html" title="Latest" />
|
51
|
+
<link rel="alternate" title="SubtitleSource RSS Feed" href="http://www.subtitlesource.org/rss/813715/swedish" type="application/rss+xml" /><link rel="search" type="application/opensearchdescription+xml" title="SubtitleSource Search" href="http://www.subtitlesource.org/subtitlesource.xml">
|
52
|
+
<link type="text/css" rel="stylesheet" href="http://www.subtitlesource.org/subtitlesource_2.1.css" />
|
53
|
+
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
|
54
|
+
<script type="text/javascript" src="http://www.subtitlesource.org/src/adapter/shadowbox-base.js"></script>
|
55
|
+
<script type="text/javascript" src="http://www.subtitlesource.org/src/shadowbox.js"></script>
|
56
|
+
<script src="http://www.subtitlesource.org/subtitlesource_2.1.js"></script>
|
57
|
+
<script type="text/javascript">
|
58
|
+
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
59
|
+
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
60
|
+
</script>
|
61
|
+
<script type="text/javascript">
|
62
|
+
try {
|
63
|
+
var pageTracker = _gat._getTracker("UA-4180459-13");
|
64
|
+
pageTracker._trackPageview();
|
65
|
+
} catch(err) {}</script>
|
66
|
+
|
67
|
+
<!-- PUT THIS TAG IN THE head SECTION -->
|
68
|
+
<script type='text/javascript' src='http://partner.googleadservices.com/gampad/google_service.js'>
|
69
|
+
</script>
|
70
|
+
<script type='text/javascript'>
|
71
|
+
GS_googleAddAdSenseService("ca-pub-1765042858221475");
|
72
|
+
GS_googleEnableAllServices();
|
73
|
+
</script>
|
74
|
+
<script type='text/javascript'>
|
75
|
+
|
76
|
+
GA_googleAddSlot("ca-pub-1765042858221475", "SubtitleSource_250x360_1");
|
77
|
+
GA_googleAddSlot("ca-pub-1765042858221475", "SubtitleSource_250x360_2");
|
78
|
+
GA_googleAddSlot("ca-pub-1765042858221475", "SubtitleSource_250x360_3");
|
79
|
+
GA_googleAddSlot("ca-pub-1765042858221475", "SubtitleSource_728x90_BOTTOM");
|
80
|
+
GA_googleAddSlot("ca-pub-1765042858221475", "SubtitleSource_728x90_TOP");
|
81
|
+
</script>
|
82
|
+
<script type='text/javascript'>
|
83
|
+
GA_googleFetchAds();
|
84
|
+
</script>
|
85
|
+
<!-- END OF TAG FOR head SECTION -->
|
86
|
+
|
87
|
+
</head>
|
88
|
+
|
89
|
+
<body>
|
90
|
+
|
91
|
+
<div id="container">
|
92
|
+
|
93
|
+
<div id="ads">
|
94
|
+
|
95
|
+
<script language=JavaScript src="http://cperspective.rotator.hadj7.adjuggler.net/servlet/ajrotator/75649/0/vj?z=cperspective&dim=75456&kw=&click="></script><noscript>
|
96
|
+
<a href="http://cperspective.rotator.hadj7.adjuggler.net/servlet/ajrotator/75649/0/cc?z=cperspective">
|
97
|
+
<img src="http://cperspective.rotator.hadj7.adjuggler.net/servlet/ajrotator/75649/0/vc?z=cperspective&dim=75456&kw=&click=&abr=$imginiframe" width="1" height="1" border="0"></a></noscript>
|
98
|
+
|
99
|
+
<div class="ad">
|
100
|
+
<!-- SubtitleSource_250x360_1 -->
|
101
|
+
<script type="text/javascript">
|
102
|
+
GA_googleFillSlot("SubtitleSource_250x360_1");
|
103
|
+
</script>
|
104
|
+
<!-- END SubtitleSource_250x360_1 -->
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<div class="ad">
|
108
|
+
<!-- SubtitleSource_250x360_2 -->
|
109
|
+
<script type="text/javascript">
|
110
|
+
GA_googleFillSlot("SubtitleSource_250x360_2");
|
111
|
+
</script>
|
112
|
+
<!-- END SubtitleSource_250x360_2 -->
|
113
|
+
</div>
|
114
|
+
|
115
|
+
<div class="ad">
|
116
|
+
<!-- SubtitleSource_250x360_3 -->
|
117
|
+
<script type="text/javascript">
|
118
|
+
GA_googleFillSlot("SubtitleSource_250x360_3");
|
119
|
+
</script>
|
120
|
+
<!-- END SubtitleSource_250x360_3 -->
|
121
|
+
</div>
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
</div>
|
126
|
+
|
127
|
+
|
128
|
+
<div id="header">
|
129
|
+
<div id="logo">
|
130
|
+
<a href="http://www.subtitlesource.org" title="SubtitleSource - Your source for subtitles">
|
131
|
+
<img src="http://www.subtitlesource.org/images/logo2.jpg" alt="SubtitleSource">
|
132
|
+
</a>
|
133
|
+
</div>
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
<div class="menu">
|
138
|
+
<div class="menu-left"></div>
|
139
|
+
<ul class="menu-links">
|
140
|
+
<li><a href="http://www.subtitlesource.org/latest" title="Latest subtitles">Latest</a></li>
|
141
|
+
<li><a href="http://www.subtitlesource.org/upload" title="Upload subtitles">Upload</a></li>
|
142
|
+
<li><a href="http://www.subtitlesource.org/request" title="Request subtitles">Request</a></li>
|
143
|
+
<li><a href="http://www.subtitlesource.org/forum/" title="Forum">Forum</a></li>
|
144
|
+
<li><a href="http://www.subtitlesource.org/help" title="FAQ">Help</a></li>
|
145
|
+
</ul>
|
146
|
+
<div class="menu-right"></div>
|
147
|
+
</div>
|
148
|
+
|
149
|
+
<div class="menu">
|
150
|
+
<div class="menu-left"></div>
|
151
|
+
<ul class="menu-links">
|
152
|
+
<li><a href="http://www.subtitlesource.org/forum/ucp.php?mode=login" title="Login at SubtitleSource">Login</a></li>
|
153
|
+
</ul>
|
154
|
+
<div class="menu-right"></div>
|
155
|
+
</div>
|
156
|
+
|
157
|
+
|
158
|
+
<div class="menu">
|
159
|
+
<div class="menu-left"></div>
|
160
|
+
<ul class="menu-links">
|
161
|
+
<li><a href="http://www.subtitlesource.org/tv" title="TV Schedule">TV</a></li>
|
162
|
+
</ul>
|
163
|
+
<div class="menu-right"></div>
|
164
|
+
</div>
|
165
|
+
|
166
|
+
</div>
|
167
|
+
|
168
|
+
|
169
|
+
|
170
|
+
<div id="search_div">
|
171
|
+
<form method="get" action="http://www.subtitlesource.org/search.php" />
|
172
|
+
<div>
|
173
|
+
<img src="http://www.subtitlesource.org/images/search_icon.png" id="search_icon" alt="search" />
|
174
|
+
<input type="text" name="q" id="search_field" autocomplete="off" />
|
175
|
+
<input type="submit" value="Search " id="search_button" />
|
176
|
+
</div>
|
177
|
+
</form>
|
178
|
+
<br class="clear" />
|
179
|
+
<div id="ajax_box"></div>
|
180
|
+
</div>
|
181
|
+
|
182
|
+
<div id="topbanner">
|
183
|
+
<!-- SubtitleSource_728x90_TOP -->
|
184
|
+
<script type="text/javascript">
|
185
|
+
GA_googleFillSlot("SubtitleSource_728x90_TOP");
|
186
|
+
</script>
|
187
|
+
<!-- END SubtitleSource_728x90_TOP -->
|
188
|
+
</div>
|
189
|
+
|
190
|
+
<br class="clear" />
|
191
|
+
|
192
|
+
<div id="content-container">
|
193
|
+
<div class="content-header"><div id="breadcrumb"><div style="width: 600px; height: 20px; overflow: hidden;float:left;text-align:left;word-wrap: break-word;"><a href="http://www.subtitlesource.org/title/tt0813715" title="Heroes subtitles">Heroes S04E19</a> » <a href="http://www.subtitlesource.org/release/30041/Heroes.S04E19.720p.HDTV.X264-DIMENSION" title="Heroes.S04E19.720p.HDTV.X264-DIMENSION ">Heroes S04E19 720p HDTV X264-DIMENSION</a></div><div><a href="http://www.subtitlesource.org/subs/57760/Heroes.S04E19.720p.HDTV.X264-DIMENSION" title="Heroes 4x19 DIMENSION undertexter English subtitles">
|
194
|
+
<img src="../../images/english.gif" alt="English" ></a> </div></div></div>
|
195
|
+
<div class="content"><div class="content-footer"></div></div><a href="http://www.subtitlesource.org/title/tt0813715" alt="Heroes" title="Heroes"><img src="http://www.subtitlesource.org/images/poster/0813715.jpg" id="poster"></a>
|
196
|
+
<div id="subtitle-information-box">
|
197
|
+
<div id="subtitle-information-top"></div>
|
198
|
+
<div id="subtitle-information-center">
|
199
|
+
<div id="subtitle-information-padding">
|
200
|
+
<script type="text/javascript"><!--
|
201
|
+
google_ad_client = "ca-pub-3456872095325034";
|
202
|
+
/* Subtitlesource-search */
|
203
|
+
google_ad_slot = "6254608855";
|
204
|
+
google_ad_width = 234;
|
205
|
+
google_ad_height = 60;
|
206
|
+
//-->
|
207
|
+
</script>
|
208
|
+
<script type="text/javascript"
|
209
|
+
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
|
210
|
+
</script>
|
211
|
+
<div id="download2"><a href="../../download/zip/58699" rel="nofollow" title="Ladda ner">
|
212
|
+
<img src="../../images/icon_download2.jpg" alt="Ladda ner" title="Ladda ner"></a><br><script type="text/javascript"><!--
|
213
|
+
google_ad_client = "ca-pub-3456872095325034";
|
214
|
+
/* Subtitlesource-search */
|
215
|
+
google_ad_slot = "6254608855";
|
216
|
+
google_ad_width = 234;
|
217
|
+
google_ad_height = 60;
|
218
|
+
//-->
|
219
|
+
</script>
|
220
|
+
<script type="text/javascript"
|
221
|
+
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
|
222
|
+
</script></br>
|
223
|
+
|
224
|
+
|
225
|
+
<!--/* OpenX Javascript Tag v2.8.2-rc25 */-->
|
226
|
+
|
227
|
+
<script type='text/javascript'><!--//<![CDATA[
|
228
|
+
var m3_u = (location.protocol=='https:'?'https://d1.openx.org/ajs.php':'http://d1.openx.org/ajs.php');
|
229
|
+
var m3_r = Math.floor(Math.random()*99999999999);
|
230
|
+
if (!document.MAX_used) document.MAX_used = ',';
|
231
|
+
document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
|
232
|
+
document.write ("?zoneid=94689&target=_blank");
|
233
|
+
document.write ('&cb=' + m3_r);
|
234
|
+
if (document.MAX_used != ',') document.write ("&exclude=" + document.MAX_used);
|
235
|
+
document.write (document.charset ? '&charset='+document.charset : (document.characterSet ? '&charset='+document.characterSet : ''));
|
236
|
+
document.write ("&loc=" + escape(window.location));
|
237
|
+
if (document.referrer) document.write ("&referer=" + escape(document.referrer));
|
238
|
+
if (document.context) document.write ("&context=" + escape(document.context));
|
239
|
+
if (document.mmm_fo) document.write ("&mmm_fo=1");
|
240
|
+
document.write ("'><\/scr"+"ipt>");
|
241
|
+
//]]>--></script>
|
242
|
+
|
243
|
+
|
244
|
+
</div>
|
245
|
+
|
246
|
+
<h1 id="subtitle-information"><span>Svenska undertexter</span> Heroes <span>4x19</span> </h1><h3 id="subtitle-information"><img src="http://www.subtitlesource.org/images/nfo.gif" alt="Release"> <a href="../../release/30041/Heroes.S04E19.720p.HDTV.X264-DIMENSION" title="Heroes.S04E19.720p.HDTV.X264-DIMENSION subtitles">Heroes.S04E19.720p.HDTV.X264-DIMENSION</a></h3>
|
247
|
+
</div></div><div id="subtitle-information-bottom"></div></div>
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
<div id="subtitle-information-box">
|
252
|
+
<div id="subtitle-information-top"></div>
|
253
|
+
<div id="subtitle-information-center">
|
254
|
+
<div id="subtitle-information-padding">
|
255
|
+
|
256
|
+
<img src="http://www.subtitlesource.org/images/nohi_small.gif" alt="No Hearing Impaired"> <img src="http://www.subtitlesource.org/images/swedish.gif" alt="Swedish" title="Swedish / svenska"> <strong><img src="http://www.subtitlesource.org/images/cd1.png"> 1 File(s)</strong><br /><ul id="files"><li id="file_d" onmouseover="this.className='tran'" onmouseout="this.className=''"><img src="http://www.subtitlesource.org/images/file.gif"> <a href="../../download/text/58699/1" title="Download Heroes.S04E19.720p.HDTV.X264-DIMENSION.srt" style="color: #666;font-size: 8pt;">Heroes.S04E19.720p.HDTV.X264-DIMENSION.srt</a> <a rel="shadowbox;width=210;height=450" class="option" title="Preview CD1" href="../../preview/58699/1">Preview CD1</a></li></ul></div></div><div id="subtitle-information-bottom"></div></div>
|
257
|
+
|
258
|
+
|
259
|
+
<div style="float:left;"><form action="../../request" method="POST" name="submit">
|
260
|
+
<input type="hidden" name="imdb" value="0813715">
|
261
|
+
<input type="hidden" name="rid" value="30041">
|
262
|
+
<select name="languageselect" onchange="this.form.submit();" style="margin-top: 4px;">
|
263
|
+
<option>Request</option><option value="Danish">Danish</option><option value="Norwegian">Norwegian</option><option value="Finnish">Finnish</option><option value="Icelandic">Icelandic</option><option value="Spanish">Spanish</option><option value="French">French</option> </select>
|
264
|
+
</form></div>
|
265
|
+
<div id="subtitle-information-box">
|
266
|
+
<div id="subtitle-information-top"></div>
|
267
|
+
<div id="subtitle-information-center">
|
268
|
+
<div id="subtitle-information-padding">
|
269
|
+
|
270
|
+
<table cellspacing=0px cellpadding=3px width=100%><tr><td><a href="http://www.subtitlesource.org/download/zip/58699" title="Download subtitle"><img src="http://www.subtitlesource.org/images/download.gif"></a> 69 downloads <img src="http://www.subtitlesource.org/images/time.gif" alt="Date uploaded"> 2010-03-12 21:48:17</td></tr><tr><td><img src="http://www.subtitlesource.org/images/author.png"> Dvarghamstern <img src="http://www.subtitlesource.org/images/comment2.gif"> <a href="http://www.SweSUB.nu" target="_blank" rel="nofollow">www.SweSUB.nu</a></td></tr></table>
|
271
|
+
</div></div><div id="subtitle-information-bottom"></div></div>
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
<br clear="both"><br clear="both">
|
276
|
+
|
277
|
+
<div style="float:right;padding-right: 8px;"><a href="http://www.swesub.nu/page.php?9" target="_blank"><img src="http://www.subtitlesource.org/images/ssg.jpg"></a></div>
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
<form method="post" name="comment" action="../58699/Heroes.S04E19.720p.HDTV.X264-DIMENSION" style="padding:0;margin:0;"><input type="text" size="12" maxlength="40" name="username" value="Anonymous" style="background: #fff;border:1px solid #bbb; "> Name<br />
|
282
|
+
<textarea name="text" COLS=34 ROWS=4></textarea><br />
|
283
|
+
|
284
|
+
<input type="hidden" name="url" style="visibility: hidden;">
|
285
|
+
|
286
|
+
<button onclick="document.comment.submit();">Add comment</button>
|
287
|
+
|
288
|
+
</form>
|
289
|
+
|
290
|
+
|
291
|
+
|
292
|
+
<br clear="both">
|
293
|
+
|
294
|
+
<br clear="both">
|
295
|
+
</div>
|
296
|
+
|
297
|
+
<div id="footerbanner">
|
298
|
+
<!-- PUT THIS TAG IN DESIRED LOCATION OF SLOT SubtitleSource_728x90_BOTTOM -->
|
299
|
+
<script type="text/javascript">
|
300
|
+
GA_googleFillSlot("SubtitleSource_728x90_BOTTOM");
|
301
|
+
</script>
|
302
|
+
<!-- END OF TAG FOR SLOT SubtitleSource_728x90_BOTTOM -->
|
303
|
+
</div>
|
304
|
+
|
305
|
+
<br class="clear" />
|
306
|
+
|
307
|
+
<ul id="tag-cloud"><li><a href="http://www.subtitlesource.org/search/Bad+Teacher" title="Bad Teacher subtitles" class="tag0">Bad Teacher</a></li>
|
308
|
+
<li><a href="http://www.subtitlesource.org/title/tt773262" title="Dexter subtitles" class="tag0">Dexter</a></li>
|
309
|
+
<li><a href="http://www.subtitlesource.org/title/tt1462059" title="Falling Skies subtitles" class="tag0">Falling Skies</a></li>
|
310
|
+
<li><a href="http://www.subtitlesource.org/title/tt1596343" title="Fast Five subtitles" class="tag0">Fast Five</a></li>
|
311
|
+
<li><a href="http://www.subtitlesource.org/search/Futurama" title="Futurama subtitles" class="tag0">Futurama</a></li>
|
312
|
+
<li><a href="http://www.subtitlesource.org/title/tt944947" title="Game of Thrones subtitles" class="tag1">Game of Thrones</a></li>
|
313
|
+
<li><a href="http://www.subtitlesource.org/title/tt480687" title="Hall Pass subtitles" class="tag0">Hall Pass</a></li>
|
314
|
+
<li><a href="http://www.subtitlesource.org/search/Harry+Potter" title="Harry Potter subtitles" class="tag1">Harry Potter</a></li>
|
315
|
+
<li><a href="http://www.subtitlesource.org/search/House" title="House subtitles" class="tag0">House</a></li>
|
316
|
+
<li><a href="http://www.subtitlesource.org/search/Ironclad" title="Ironclad subtitles" class="tag2">Ironclad</a></li>
|
317
|
+
<li><a href="http://www.subtitlesource.org/title/tt1564367" title="Just Go With It subtitles" class="tag0">Just Go With It</a></li>
|
318
|
+
<li><a href="http://www.subtitlesource.org/title/tt1103987" title="Leverage subtitles" class="tag0">Leverage</a></li>
|
319
|
+
<li><a href="http://www.subtitlesource.org/title/tt1219289" title="Limitless subtitles" class="tag1">Limitless</a></li>
|
320
|
+
<li><a href="http://www.subtitlesource.org/search/Paul" title="Paul subtitles" class="tag0">Paul</a></li>
|
321
|
+
<li><a href="http://www.subtitlesource.org/title/tt1192628" title="Rango subtitles" class="tag0">Rango</a></li>
|
322
|
+
<li><a href="http://www.subtitlesource.org/search/Rio" title="Rio subtitles" class="tag1">Rio</a></li>
|
323
|
+
<li><a href="http://www.subtitlesource.org/title/tt945513" title="Source Code subtitles" class="tag4">Source Code</a></li>
|
324
|
+
<li><a href="http://www.subtitlesource.org/search/South+Park" title="South Park subtitles" class="tag0">South Park</a></li>
|
325
|
+
<li><a href="http://www.subtitlesource.org/title/tt978764" title="Sucker Punch subtitles" class="tag0">Sucker Punch</a></li>
|
326
|
+
<li><a href="http://www.subtitlesource.org/title/tt460681" title="Supernatural subtitles" class="tag0">Supernatural</a></li>
|
327
|
+
<li><a href="http://www.subtitlesource.org/search/Top+Gear" title="Top Gear subtitles" class="tag0">Top Gear</a></li>
|
328
|
+
<li><a href="http://www.subtitlesource.org/title/tt485301" title="Torchwood subtitles" class="tag0">Torchwood</a></li>
|
329
|
+
<li><a href="http://www.subtitlesource.org/search/Transformers+3" title="Transformers 3 subtitles" class="tag0">Transformers 3</a></li>
|
330
|
+
<li><a href="http://www.subtitlesource.org/search/Transformers" title="Transformers subtitles" class="tag0">Transformers</a></li>
|
331
|
+
<li><a href="http://www.subtitlesource.org/title/tt844441" title="True Blood subtitles" class="tag2">True Blood</a></li>
|
332
|
+
<li><a href="http://www.subtitlesource.org/search/True+Grit" title="True Grit subtitles" class="tag0">True Grit</a></li>
|
333
|
+
<li><a href="http://www.subtitlesource.org/search/Unknown" title="Unknown subtitles" class="tag0">Unknown</a></li>
|
334
|
+
<li><a href="http://www.subtitlesource.org/title/tt439100" title="Weeds subtitles" class="tag0">Weeds</a></li>
|
335
|
+
<li><a href="http://www.subtitlesource.org/search/X-men+First+Class" title="X-men First Class subtitles" class="tag3">X-men First Class</a></li>
|
336
|
+
<li><a href="http://www.subtitlesource.org/search/X-men" title="X-men subtitles" class="tag0">X-men</a></li>
|
337
|
+
</ul>
|
338
|
+
<div id="footer">
|
339
|
+
<div style="float:left; padding-top: 5px;">
|
340
|
+
<script type="text/javascript">addthis_pub = 'Sorku';</script>
|
341
|
+
<a href="http://www.addthis.com/bookmark.php" onmouseover="return addthis_open(this, '', '[URL]', '[TITLE]')" onmouseout="addthis_close()" onclick="return addthis_sendto()" rel="nofollow">
|
342
|
+
<img src="http://s7.addthis.com/button1-share.gif" width="125" height="16" border="0" alt="" /></a>
|
343
|
+
<script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
|
344
|
+
</div>
|
345
|
+
|
346
|
+
<div style="font-size: 10px; position: float; float: right; padding-bottom: 10px; width: 400px; text-align: right; color: #ccc;">
|
347
|
+
<a href="http://addsubtitle.com/" title="add subtitle to movie" target="_blank">How to add subtitle to DVD</a> |
|
348
|
+
<a href="http://tellspell.com/" title="how to spell" target="_blank">spell checking</a> |
|
349
|
+
<a href="http://www.subtitlesource.org/help/legal" title="Privacy Policy" target="_blank">Privacy Policy</a><a href="http://nyheternadirekt.se" target="_top"> <strong>Dagens Nyheter</strong></a><a href="http://hblogg.se" target="_top"><strong> skapa en BLOGG</strong></a>
|
350
|
+
<span style="font-size: 10px; color: #888;">
|
351
|
+
© 2007-2010 <a href="http://www.subtitlesource.org/" title="Subtitles">SubtitleSource.org</a><br />
|
352
|
+
</span>
|
353
|
+
</div>
|
354
|
+
|
355
|
+
|
356
|
+
</div>
|
357
|
+
</div>
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
<!-- ca-pub-1765042858221475/SS-POP -->
|
362
|
+
<script type='text/javascript'>
|
363
|
+
GA_googleFillSlot("SS-POP");
|
364
|
+
</script>
|
365
|
+
</body>
|
366
|
+
</html>
|
367
|
+
|
368
|
+
http_version: "1.1"
|