Python 使用 “漫威 API” 探索漫威宇宙

pythondict發表於2020-05-15

在看漫威系列電影的時候,你是不是經常會對一些角色感到好奇,想知道每個角色的關聯關係和出場的事件,但是卻無從下手?

現在,我們有很好的來幫助我們實現這些想法了!Marvel Comics API 允許各地的開發人員訪問漫威70年來龐大的漫畫資訊。接下來就來告訴大家怎麼使用這個漫威

python 漫威api

1.註冊賬號獲得API訪問許可權

訪問下面的連結註冊一個漫威開發者

developer.marvel.com/signup

跟著步驟走,接受它的使用條款後就能得到public key(公鑰)和 private key(私鑰)了:

2.pip安裝相應的第三方工具

在pip中輸入以下命令安裝marvel包(預設你已經安裝好了python和pip哦,如果你還沒有安裝,建議閱讀這個教程:python安裝)

pip install marvel

這個包是這個漫威API的封裝器,裡面封裝了許多查詢工程,方便我們使用,我們不需要理解怎麼傳送post請求向漫威api呼叫資料,僅僅使用一個語句,將我們剛剛獲得的公鑰和私鑰傳入進去,就可以拿到資料。

公鑰祕鑰示例

獲取所有角色:


import marvel

PUBLIC_KEY = '你的公鑰'

PRIVATE_KEY = '你的私鑰'

m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)

characters = m.characters

all_characters = characters.all()

print(all_characters)

獲取單個角色:


import marvel

PUBLIC_KEY = '你的公鑰'

PRIVATE_KEY = '你的私鑰'

m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)

characters = m.characters

character = characters.get(1011334)

print(character)

獲取一些角色的漫畫:


import marvel

PUBLIC_KEY = '你的公鑰'

PRIVATE_KEY = '你的私鑰'

m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)

characters = m.characters

comics = characters.comics(1011334)

print(comics)

同樣,您可以將相同的邏輯應用於不同的物件,例如:


import marvel

PUBLIC_KEY = '你的公鑰'

PRIVATE_KEY = '你的私鑰'

m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)

stories = m.stories

all_stores = stories.all()

story = stories.get(id)

events = stories.events(id)

print(stories, all_stores, story, events)

最後,每個物件具有的子資源如下:

  • 人物

  • allgetcomicseventsseriesstories

  • 漫畫

  • allgetcharacterscreatorseventsstories

  • 創作者

  • allgetcomicseventsseriesstories

  • 活動

  • allgetcharacterscomicscreatorsseriesstories

  • 系列

  • allgetcharacterscomicscreatorseventsstories

  • 故事

  • allgetcharacterscomicscreatorseventsseries

3. 使用API找到雷神出現過的漫畫

想要使用API查詢滅霸出現過的所有漫畫,你就得先知道雷神的角色ID(character ID), 我們通過角色名字得到角色對應的ID:


import marvel

PUBLIC_KEY = '你的公鑰'

PRIVATE_KEY = '你的私鑰'

m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)

characters = m.characters

def get_hero_id(characters, name):

all_characters = characters.all(nameStartsWith=name)

# 根據名字獲得角色資訊,僅支援英文

ids = [i['id'] for i in all_characters['data']['results']]

names = [i['name'] for i in all_characters['data']['results']]

return ids,names

ids, names = get_hero_id(characters, 'thor')

結果:


_**(base) ckenddeMacBook-Pro:20190925 ckend$ python 1.py

**_[1009664, 1017576, 1017106, 1017315, 1017328, 1017302, 1011025, 1010820] ['Thor', 'Thor (Goddess of Thunder)', 'Thor (MAA)', 'Thor (Marvel Heroes)', 'Thor (Marvel War of Heroes)', 'Thor (Marvel: Avengers Alliance)', 'Thor (Ultimate)', 'Thor Girl']

可以看到我們好像得到了不同系列下的雷神,以1009664為例,獲得雷神出現過的漫畫。


import marvel

PUBLIC_KEY = '你的公鑰'

PRIVATE_KEY = '你的私鑰'

m = marvel.Marvel(PUBLIC_KEY, PRIVATE_KEY)

characters = m.characters

def get_hero_id(characters, name):

all_characters = characters.all(nameStartsWith=name)

# 根據名字獲得角色資訊,僅支援英文

ids = [i['id'] for i in all_characters['data']['results']]

names = [i['name'] for i in all_characters['data']['results']]

return ids,names

ids, names = get_hero_id(characters, 'thor')

comics = characters.comics(ids[0])

# ids[0]1009664

print([i['title'] for i in comics['data']['results']])

結果如下:


**(base) ckenddeMacBook-Pro:20190925 ckend$ python 1.py

**['THOR VOL. 2: ROAD TO WAR OF THE REALMS TPB (Trade Paperback)', 'Marvel Masterworks: The Mighty Thor Vol. 18 (Hardcover)', 'King Thor (2019) #1', 'Thor Epic Collection: The Black Galaxy (Trade Paperback)', 'Thor (2018) #16', 'THOR & LOKI: BLOOD BROTHERS GALLERY EDITION HC (Hardcover)', 'Thor Of The Realms (Trade Paperback)', 'War Of The Realms Omega (2019) #1', 'Thor (2018) #15', 'The Unbeatable Squirrel Girl (2015) #46', 'Kirby Is… Mighty! King-Size (Hardcover)', 'Thor (2018) #14', 'War of the Realms (2019) #5', 'MARVEL ACTION CLASSICS: SPIDER-MAN TWO-IN-ONE 1 (2019) #1', 'Thor (2018) #13', 'Moon Girl and Devil Dinosaur (2015) #43', "Decades: Marvel in The '80s - Awesome Evolutions (Trade Paperback)", 'War of the Realms (2019) #3', 'The Art of War of the Realms (Trade Paperback)', 'Mighty Thor 3D (2019) #1']

可以看到,雷神一共在十九部作品裡出現過哦。怎麼樣,是不是特別方便的工具

我們的文章到此就結束啦,如果你希望我們今天的Python 教程,請持續關注我們,如果對你有幫助,麻煩在下面點一個贊/在看哦,有任何問題都可以在下方留言區留言,我們都會耐心解答的!


Python實用寶典 (pythondict.com)

不只是一個寶典

歡迎關注公眾號:Python實用寶典

原文出自Python實用寶典Python 漫威宇宙

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Python實用寶典, pythondict.com

相關文章