1

I have an app that will show images from reddit. Some images come like this https://i.stack.imgur.com/LKuXA.jpg, when I need to make them look like this https://i.stack.imgur.com/yfiH1.jpg. Just add an (i) at the beginning and (.jpg) at the end.

gallly
  • 1,201
  • 4
  • 27
  • 45

3 Answers3

3

You can use a string replace:

s = "http://imgur.com/Cuv9oau"
s = s.replace("//imgur", "//i.imgur")+(".jpg" if not s.endswith(".jpg") else "")

This sets s to:

'http://i.imgur.com/Cuv9oau.jpg'
jh314
  • 27,144
  • 16
  • 62
  • 82
2

This function should do what you need. I expanded on @jh314's response and made the code a little less compact and checked that the url started with http://imgur.com as that code would cause issues with other URLs, like the google search I included. It also only replaces the first instance, which could causes issues.

def fixImgurLinks(url):
    if url.lower().startswith("http://imgur.com"):
        url = url.replace("http://imgur", "http://i.imgur",1) # Only replace the first instance.
        if not url.endswith(".jpg"):
            url +=".jpg"
    return url

for u in ["http://imgur.com/Cuv9oau","http://www.google.com/search?q=http://imgur"]:
    print fixImgurLinks(u)

Gives:

>>> http://i.imgur.com/Cuv9oau.jpg
>>> http://www.google.com/search?q=http://imgur
  • Thanks every one, I ended up using this version. Sometimes I still get page load errors because there is no image, I click on the url and it says page not found or something different. Is there a way to add a check for the image and if its not found, than skip it – gallly Jul 11 '13 at 03:53
  • That URL has an extra `/` at the end, so it is an invalid URL. You can check the URL is valid during transformation, but you'd be better the ask a new question for that. –  Jul 11 '13 at 03:58
  • thanks I added code to remove it and so far its been working! – gallly Jul 11 '13 at 04:05
1

You should use Python's regular expressions to place the i. As for the .jpg you can just append it.

Community
  • 1
  • 1
eebbesen
  • 5,070
  • 8
  • 48
  • 70