subtitle_source 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|