Advertisement
Guest User

Untitled

a guest
Apr 16th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 5.23 KB | None | 0 0
  1. Podcast.destroy_all
  2. Episode.destroy_all
  3. ActiveRecord::Base.connection.execute("ALTER SEQUENCE podcasts_id_seq RESTART;")
  4. ActiveRecord::Base.connection.execute("ALTER SEQUENCE episodes_id_seq RESTART;")
  5.  
  6. def get_string_from_data(dataArr)
  7.   dataArr.each do |foo|
  8.     if foo.class == String
  9.       return foo
  10.     end
  11.   end
  12. end
  13.  
  14.   itunesTop = HTTParty.get('https://rss.itunes.apple.com/api/v1/us/podcasts/top-podcasts/all/100/explicit.json')
  15.   itunesTop["feed"]["results"].each do |item|
  16.     id = item["id"].to_i
  17.     itunesLookup = HTTParty.get("https://itunes.apple.com/lookup?id=#{id}")
  18.     responseFromLookup = Crack::JSON.parse(itunesLookup.parsed_response)
  19.     responseFromLookup["results"].each do |item|
  20.       rssUrl = item["feedUrl"]
  21.       begin
  22.         rssResponse = HTTParty.get(rssUrl)
  23.       rescue
  24.         begin
  25.         rssUrl = item["feedUr l"].delete(" ")
  26.         rssResponse = HTTParty.get(rssUrl)
  27.         rescue
  28.         rssUrl = item[" feedUrl"].delete(' ')
  29.         rssResponse = HTTParty.get(rssUrl)
  30.         end
  31.       end
  32.       if rssResponse["rss"]["channel"] != nil
  33.         if rssResponse["rss"]["channel"]["title"] == "Shane And Friends"
  34.           next
  35.         end
  36.         begin
  37.           docArr = [rssResponse["rss"]["channel"]["link"][0], rssResponse["rss"]["channel"]["link"][0]["href"]]
  38.         rescue
  39.           docArr = [rssResponse["rss"]["channel"]["link"][1]["href"]]
  40.         end
  41.         begin
  42.           feedUrlArr = [rssResponse["rss"]["channel"]["link"][1]["href"], rssResponse["rss"]["channel"]["link"][1], rssResponse["rss"]["channel"]["link"]]
  43.         rescue
  44.           feedUrlArr = [rssResponse["rss"]["channel"]["link"][0]["href"]]
  45.         end
  46.         begin
  47.           imageArr = [rssResponse["rss"]["channel"]["image"][0]["href"], rssResponse["rss"]["channel"]["image"][0]["url"]]
  48.         rescue
  49.           imageArr = [rssResponse["rss"]["channel"]["image"]["href"].to_s]
  50.         end
  51.         title = rssResponse["rss"]["channel"]["title"]
  52.         copyright = rssResponse["rss"]["channel"]["copyright"]
  53.         content = rssResponse["rss"]["channel"]["description"]
  54.         docs = get_string_from_data(docArr)
  55.         feed_url = get_string_from_data(feedUrlArr)
  56.         img = get_string_from_data(imageArr)
  57.         language = rssResponse["rss"]["channel"]["language"]
  58.         author = rssResponse["rss"]["channel"]["author"]
  59.         explicit = rssResponse["rss"]["channel"]["explicit"]
  60.  
  61.         podcast = Podcast.create(title: title, copyright: copyright, description: content, docs: docs, feed_url: feed_url, image_url: img, language: language, author: author, explicit: explicit)
  62.  
  63.         rssResponse["rss"]["channel"]["item"].each do |item|
  64.           if item["title"].class == Array
  65.             title = item["title"][1]
  66.           else
  67.             title = item["title"]
  68.           end
  69.           content = item["description"]
  70.           begin
  71.             length = item["enclosure"]["length"].to_i
  72.           rescue
  73.             length = 0
  74.           end
  75.           begin
  76.             type = item["enclosure"]["type"]
  77.           rescue
  78.             type = "audio/mpeg"
  79.           end
  80.           begin
  81.             url = item["enclosure"]["url"]
  82.           rescue
  83.             url = item["link"]
  84.           end
  85.           pubDate = item["pubDate"].to_datetime
  86.           guid = item["guid"]["__content__"]
  87.           duration = item["duration"].to_i
  88.           begin
  89.             explicit = item["explicit"]
  90.           rescue
  91.             explicit = "Unknown"
  92.           end
  93.           podId = podcast.id
  94.  
  95.           Episode.create(title: title, content: content, enclosure_length: length, enclosure_type: type, enclosure_url: url, pubdate: pubDate, guid: guid, duration: duration, explicit: explicit, podcast_id: podId )
  96.         end
  97.       else
  98.         response = Crack::XML.parse(rssResponse)
  99.         podcast = Podcast.create(title: response["rss"]["channel"]["title"], copyright: response["rss"]["channel"]["copyright"], description: response["rss"]["channel"]["description"], docs: response["rss"]["channel"]["link"], feed_url: response["rss"]["channel"]["itunes:new_feed_url"], image_url: response["rss"]["channel"]["image"]["url"], language: response["rss"]["channel"]["language"], author: response["rss"]["channel"]["itunes:author"], explicit: response["rss"]["channel"]["itunes:explicit"])
  100.         response["rss"]["channel"]["item"].each do |item|
  101.           begin
  102.             title = item["title"]
  103.             content = item["description"]
  104.             begin
  105.               length = item["enclosure"]["length"].to_i
  106.               type = item["enclosure"]["type"]
  107.               url = item["enclosure"]["url"]
  108.             rescue
  109.               length = 0
  110.               type = "audio/mpeg"
  111.               url = "No MP3 Found"
  112.             end
  113.             pubdate = item["pubDate"].to_datetime
  114.             guid = item["guid"]
  115.             duration = item["itunes:duration"].to_i
  116.             explicit = item["itunes:explicit"]
  117.           rescue
  118.             byebug
  119.           end
  120.  
  121.           Episode.create(title: title, content: content, enclosure_length: length, enclosure_type: type, enclosure_url: url, pubdate: pubdate, guid: guid, duration: duration, explicit: explicit, podcast_id: podcast.id)
  122.         end
  123.       end
  124.     end
  125.   end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement