class YtDownloader::Parser::Chrome
Constants
- LINUX_OS
- MAC_OSX
Public Class Methods
call(bookmark_tabs, bookmark_path)
click to toggle source
@param [Array] bookmark_tabs @param [String] bookmark_path
# File lib/yt_downloader/parser/chrome.rb, line 15 def self.call(bookmark_tabs, bookmark_path) bookmark_path ||= bookmark_json_path bookmark_json = JSON.parse(File.read(bookmark_path), { symbolize_names: true }) bookmarks = bookmark_json.dig(:roots, :bookmark_bar, :children) extract_urls(bookmarks, bookmark_tabs) end
Private Class Methods
aggregate_bookmarks(bookmark)
click to toggle source
@param [Hash] bookmark @return [Array]
# File lib/yt_downloader/parser/chrome.rb, line 55 def self.aggregate_bookmarks(bookmark) return [] if bookmark[:children].nil? bookmark[:children].map { |b| Bookmark.new(*(b.values_at(:url, :name) << bookmark[:name])) } end
bookmark_json_path()
click to toggle source
@return [String]
# File lib/yt_downloader/parser/chrome.rb, line 42 def self.bookmark_json_path case os when LINUX_OS "/home/#{whoami}/.config/google-chrome/Default/Bookmarks" when MAC_OSX "/Users/#{whoami}/Library/Application Support/Google/Chrome/Default/Bookmarks" else raise "Unsupported #{os} os!" end end
extract_urls(bookmarks, tabs)
click to toggle source
@param [Array] bookmarks @param [Array] tabs
# File lib/yt_downloader/parser/chrome.rb, line 27 def self.extract_urls(bookmarks, tabs) bookmarks.inject([]) do |acc, bookmark| if tabs.empty? acc.concat(aggregate_bookmarks(bookmark)) else tabs.each do |tab| acc.concat(aggregate_bookmarks(bookmark)) if bookmark[:name] == tab end end acc end end
os()
click to toggle source
NOTE: Stub methods for testing
@return [String]
# File lib/yt_downloader/parser/chrome.rb, line 65 def self.os `echo $(uname -s)`.strip end
whoami()
click to toggle source
@return [String]
# File lib/yt_downloader/parser/chrome.rb, line 70 def self.whoami `whoami`.strip end