leo_mp3_parser 0.0.04

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/leo_mp3_parser.rb +51 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8c0d9083e376be708569526c7135112850d111ab
4
+ data.tar.gz: e0387284b726162da9033b55a86f3c2bc0d9d081
5
+ SHA512:
6
+ metadata.gz: cf23f9a9b6ef38f99e0d9e1e23637f27932840bf1d1ea17beec5e562c207a3c3afa17e1673de72bce376937fd81b10f685f0ff542dc876bf3c09d394a3de1066
7
+ data.tar.gz: 272035151f1bfb341661d97ce86cfc5287bcddc2f83e6076f411c9d75ee0ef6055776c9b0fcf93db3fe501d6c7d07861e169b51705c33499ca95f8111bf591e8
@@ -0,0 +1,51 @@
1
+ require 'pry-byebug'
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+ class LeoMp3Parser
5
+ # attr_accessor :language_and_term
6
+ # def initialize(language_and_term = {})
7
+ # validate_arguments(language_and_term)
8
+ # @language_and_term = language_and_term
9
+ # end
10
+
11
+ def validate_arguments(language_and_term)
12
+ raise ArgumentError.new('argument must be a Hash') unless language_and_term.is_a? Hash
13
+ raise ArgumentError.new('Keys must be :language and :term') unless (language_and_term.keys.include?(:language) && language_and_term.keys.include?(:term))
14
+ language_and_term.values.map do |value|
15
+ raise ArgumentError.new('Values must be Strings') unless value.is_a? String
16
+ end
17
+ language_and_term.values.map do |value|
18
+ raise ArgumentError.new('Values can not be emtpy') if value.empty?
19
+ end
20
+ raise ArgumentError.new('Language must be set to ende, esde or frde') unless (language_and_term[:language].include?('ende') || language_and_term[:language].include?('esde') || language_and_term[:language].include?('frde'))
21
+ end
22
+
23
+ def get_audio_url(language_and_term)
24
+ validate_arguments(language_and_term)
25
+ url = compose_query(language_and_term)
26
+ compose_url(url)
27
+ end
28
+
29
+ def compose_query(language_and_term)
30
+ url = 'https://dict.leo.org/dictQuery/m-vocab/' << language_and_term[:language]
31
+ url << '/query.xml?tolerMode=nof&lp=ende&lang=en&rmWords=off&rmSearch=on&directN=0&search='
32
+ url << language_and_term[:term]
33
+ url << '&searchLoc=0&resultOrder=basic&multiwordShowSingle=on&sectLenMax=16'
34
+ end
35
+
36
+ def instantiate_nokogiri_object(url)
37
+ Nokogiri::XML(open(url))
38
+ rescue
39
+ :danger
40
+ end
41
+
42
+ def parse_audio_identifier(url)
43
+ instantiate_nokogiri_object(url).at_css('pron').first[1]
44
+ rescue
45
+ :danger
46
+ end
47
+
48
+ def compose_url(url)
49
+ "https://dict.leo.org/media/audio/#{parse_audio_identifier(url)}.mp3"
50
+ end
51
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: leo_mp3_parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.04
5
+ platform: ruby
6
+ authors:
7
+ - 'Maximilian Maintz, alias: Netznarkose'
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple leo mp3 parser
14
+ email: mmaintz@posteo.de
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/leo_mp3_parser.rb
20
+ homepage: https://github.com/Netznarkose
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.6.10
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: identifies urls to audiofiles on leo dictionary
44
+ test_files: []