tubedl 0.1.8 → 0.1.9
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.
- checksums.yaml +4 -4
- data/README.md +6 -3
- data/lib/tubedl.rb +15 -5
- data/lib/tubedl/playlist_parser.rb +6 -6
- data/lib/tubedl/version.rb +1 -1
- data/tubedl.gemspec +6 -2
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd2c1f4a4004fa14c561f8fd9265d24c9e37bc54
|
4
|
+
data.tar.gz: f4933c5b679f40fcd435e2f74dbe4accb6dcc7f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71ca7a08ff2eb693bf46abba4096b20bf8087ae57613f8d3e83fd8beb92b7fd40e9da66aaeaf4357e4108d9dea2bd26960f929b15fd1b7456779dc82d1619e2d
|
7
|
+
data.tar.gz: cdeb4fdb063c0f532882f43bbceb8223e6b0a71e7a5b6d1fb88f2059a4da3f236668725d5180397f9b97117971e32452c5807e2d6e16e74da4d61dcd44bb4dbb
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ Or install it yourself as:
|
|
24
24
|
|
25
25
|
```ruby
|
26
26
|
require 'tubedl'
|
27
|
-
metallica = Tubedl
|
27
|
+
metallica = Tubedl::Playlist.new 'https://www.youtube.com/playlist?list=PLJvQXRgtxlumAHceNRk3cx3P7MZVUCdBl'
|
28
28
|
|
29
29
|
first_song = metallica.video0001
|
30
30
|
object_instances = metallica.instance_variables
|
@@ -37,11 +37,14 @@ specific_resulation = Tubedl.set_quality(first_song_link, 'hd1080')
|
|
37
37
|
metallica.save_playlist
|
38
38
|
metallica.save_smplayer_playlist # That will create a smplayer playlist
|
39
39
|
# Also can pass path as argument
|
40
|
-
metallica.save_smplayer_playlist '/home/
|
41
|
-
metallica.save_playlist '/home/
|
40
|
+
metallica.save_smplayer_playlist '/home/[USERNAME]/Music'
|
41
|
+
metallica.save_playlist '/home/[USERNAME]/Music'
|
42
42
|
# Tubedl.load_playlist(path)
|
43
43
|
Tubedl.save_object(metallica)
|
44
44
|
|
45
|
+
# Also can save a yaml playlist as a smplayer playlist
|
46
|
+
Tubedl.yaml_to_smplayer('/home/[USERNAME]/Music/Playlist-19-8-2017.yml', '/home/[USERNAME]/Music')
|
47
|
+
|
45
48
|
# Rusults
|
46
49
|
puts first_song
|
47
50
|
puts first_songID
|
data/lib/tubedl.rb
CHANGED
@@ -6,7 +6,7 @@ require 'yaml'
|
|
6
6
|
|
7
7
|
module Tubedl
|
8
8
|
include PlaylistParser
|
9
|
-
|
9
|
+
|
10
10
|
QULITIES = {
|
11
11
|
hd1440: '?version=3&vq=hd1440',
|
12
12
|
hd1080: '?version=3&vq=hd1080',
|
@@ -15,7 +15,7 @@ module Tubedl
|
|
15
15
|
sd360: '?version=3&vq=medium',
|
16
16
|
sd240: '?version=3&vq=small'
|
17
17
|
}
|
18
|
-
|
18
|
+
|
19
19
|
def self.get_videoID(link)
|
20
20
|
link.match(PlaylistParser::YoutubeRegex)[5]
|
21
21
|
end
|
@@ -23,7 +23,7 @@ module Tubedl
|
|
23
23
|
def self.set_quality(str, quality)
|
24
24
|
str + QULITIES[quality.to_sym]
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
def self.get_page_data(url)
|
28
28
|
begin
|
29
29
|
doc = Nokogiri::HTML(open(url).read)
|
@@ -34,12 +34,22 @@ module Tubedl
|
|
34
34
|
end
|
35
35
|
doc
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def self.load_playlist(file_path)
|
39
39
|
YAML.load_file(file_path)
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
def self.save_object(object)
|
43
43
|
File.write("#{object}.yml", YAML.dump(object))
|
44
44
|
end
|
45
|
+
|
46
|
+
def self.yaml_to_smplayer(file, path_to_save = nil)
|
47
|
+
hash = YAML.load(File.read(file))
|
48
|
+
f = File.open("#{path_to_save || '.'}/smplayerPlaylist-#{@playlistID}-#{Time.now.to_a[3..5].join('-')}.m3u", "w+")
|
49
|
+
f.write("#EXTM3U\n")
|
50
|
+
hash.each_pair do |k, v|
|
51
|
+
f.puts("#EXTINF:0,#{k}\n#{v}\n")
|
52
|
+
end
|
53
|
+
f.close
|
54
|
+
end
|
45
55
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module PlaylistParser
|
2
2
|
YoutubeRegex = /(youtu\.be\/|youtube\.com\/(watch\?(.*&)?v=|(embed|v)\/))([^\?&"'>]+)/
|
3
|
-
|
3
|
+
|
4
4
|
class Playlist
|
5
5
|
attr_reader :playlistID, :playlist, :playlist_data
|
6
|
-
|
6
|
+
|
7
7
|
def initialize(link = nil)
|
8
8
|
counter = 'video0000'
|
9
9
|
link ||= link_generator
|
@@ -14,7 +14,7 @@ module PlaylistParser
|
|
14
14
|
self.class.send(:attr_reader, counter)
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def link_generator(ln = nil)
|
19
19
|
print 'Please Enter A Correct Playlist Link: ' unless ln || ARGV[0]
|
20
20
|
ln ||= ARGV[0] || gets.chomp
|
@@ -24,7 +24,7 @@ module PlaylistParser
|
|
24
24
|
link_generator
|
25
25
|
end
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def parse_page(page)
|
29
29
|
playlist_data = page.css('table.pl-video-table')
|
30
30
|
if playlist_data
|
@@ -34,13 +34,13 @@ module PlaylistParser
|
|
34
34
|
end
|
35
35
|
songs_hashes
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def is_playlist?(link)
|
39
39
|
link.include? 'list' && 'playlist'
|
40
40
|
end
|
41
41
|
|
42
42
|
|
43
|
-
|
43
|
+
|
44
44
|
def save_playlist(path_to_save = nil)
|
45
45
|
File.write("#{path_to_save || '.'}/Playlist-#{Time.now.to_a[3..5].join('-')}.yml", @playlist_data.to_yaml)
|
46
46
|
end
|
data/lib/tubedl/version.rb
CHANGED
data/tubedl.gemspec
CHANGED
@@ -12,11 +12,15 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.summary = %q{This gem parses youtube playlists to an object with an instance that named as playlist_data(hash: video_names => links)
|
13
13
|
also can save that instance as yaml, can check a video link format with regex, can create link to specific resulation
|
14
14
|
can take whole page data of a link, can take video ID from link and can save object as yaml and also can save a smplayer
|
15
|
-
compatible playlist file. Now user can pass path to save playlist for yaml and
|
15
|
+
compatible playlist file. Now user can pass path to save playlist for yaml and smpalyer playlists. SMPlayer can play youtube
|
16
|
+
and other online videos and while playing a plistlist it ill continue from previous session item and time so i hope
|
17
|
+
it will helpful for tutorial kind videos. }
|
16
18
|
spec.description = %q{This gem parses youtube playlists to an object with an instance that named as playlist_data(hash: video_names => links)
|
17
19
|
also can save that instance as yaml, can check a video link format with regex, can create link to specific resulation
|
18
20
|
can take whole page data of a link, can take video ID from link and can save object as yaml can save a smplayer
|
19
|
-
compatible playlist file. Now user can pass path to save playlist for yaml and
|
21
|
+
compatible playlist file. Now user can pass path to save playlist for yaml and smplayer playlists. SMPlayer can play youtube
|
22
|
+
and other online videos and while playing a plistlist it will continue from previous session item and time so i hope
|
23
|
+
it will helpful for tutorial kind videos.}
|
20
24
|
spec.homepage = "https://github.com/cptangry/tubedl"
|
21
25
|
spec.license = "MIT"
|
22
26
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tubedl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gökhan Çağlar
|
@@ -70,7 +70,9 @@ description: |-
|
|
70
70
|
This gem parses youtube playlists to an object with an instance that named as playlist_data(hash: video_names => links)
|
71
71
|
also can save that instance as yaml, can check a video link format with regex, can create link to specific resulation
|
72
72
|
can take whole page data of a link, can take video ID from link and can save object as yaml can save a smplayer
|
73
|
-
compatible playlist file. Now user can pass path to save playlist for yaml and
|
73
|
+
compatible playlist file. Now user can pass path to save playlist for yaml and smplayer playlists. SMPlayer can play youtube
|
74
|
+
and other online videos and while playing a plistlist it will continue from previous session item and time so i hope
|
75
|
+
it will helpful for tutorial kind videos.
|
74
76
|
email:
|
75
77
|
- caglar.gokhan@gmail.com
|
76
78
|
executables: []
|
@@ -129,5 +131,7 @@ summary: 'This gem parses youtube playlists to an object with an instance that n
|
|
129
131
|
can check a video link format with regex, can create link to specific resulation
|
130
132
|
can take whole page data of a link, can take video ID from link and can save object
|
131
133
|
as yaml and also can save a smplayer compatible playlist file. Now user can pass
|
132
|
-
path to save playlist for yaml and
|
134
|
+
path to save playlist for yaml and smpalyer playlists. SMPlayer can play youtube
|
135
|
+
and other online videos and while playing a plistlist it ill continue from previous
|
136
|
+
session item and time so i hope it will helpful for tutorial kind videos.'
|
133
137
|
test_files: []
|