Utilisateurs d'iPhone et d'iPad, connaissez-vous une application appelée Pythonista3 qui vous permet de développer en Python sur les appareils iOS? Si vous souhaitez simplement exécuter Python, je recommande personnellement Carnets --Jupyter. Avec Pythonista3, vous pouvez également développer des fonctions utilisables depuis l'extérieur d'Abri, telles que divers raccourcis et widgets, et créer des jeux.
Cette fois, en utilisant un tel Pythonista 3 ** Un widget qui affiche les tendances Qiita et ouvre la page dans Safari lorsque vous cliquez dessus ** J'ai créé, je voudrais donc le présenter.
Dans le cas de ce widget, le contenu de Launcher.py
sous ʻExample / Widget` peut être utilisé presque tel quel, donc basé sur cela,
・ Possibilité d'obtenir des titres de tendances et des URL à partir de la page d'accueil de Qiita ・ Une fonction pour sauvegarder temporairement les informations acquises ・ Une fonction pour accéder à nouveau à Qiita et mettre à jour les informations si un certain temps s'est écoulé depuis l'acquisition des informations précédentes.
Ajoutée.
Le nombre de colonnes, le nombre de lignes à l'état plié et les variables de taille de police sont résumés après l'instruction d'importation, vous pouvez donc ajuster la mise en page à votre guise. Il sera exigu et difficile à pousser, mais si vous définissez le nombre de lignes à 5 ou plus, vous pouvez afficher toutes les tendances quotidiennes (30 cas).
qiita_trends_widget.py
import re
import requests
import appex, ui
import os
from math import ceil, floor
import webbrowser
import pickle
import time
COLS = 1
ROWS = 3
fontsize = 12
def get_trend():
trends = []
text = requests.get( 'https://qiita.com/').text
titles = re.findall('title":".{10,100}?",',text)
urls = re.findall('uuid":".{10,50}?",',text)
for i in range(30):
trends.append({'title':'', 'url':''})
trends[i]['title'] = titles[i][18:-7]
trends[i]['url'] = 'https://qiita.com/items/'+urls[i][17:-7]
trends.append({'lastUpdate':time.time()})
with open("trends.pickle", "wb") as f:
pickle.dump(trends, f)
return trends
class LauncherView (ui.View):
def __init__(self, shortcuts, *args, **kwargs):
row_height = 110 / ROWS
super().__init__(self, frame=(0, 0, 300, ceil(len(shortcuts[:-1]) / COLS) * row_height), *args, **kwargs)
self.buttons = []
for s in shortcuts[:-1]:
btn = ui.Button(title=' ' + s['title'], name=s['url'], action=self.button_action, bg_color='#73c239', tint_color='#fff', corner_radius=7, font=('<System-Bold>',fontsize))
self.add_subview(btn)
self.buttons.append(btn)
def layout(self):
bw = (self.width - 10) / COLS
bh = floor(self.height / ROWS) if self.height <= 130 else floor(110 / ROWS)
for i, btn in enumerate(self.buttons):
btn.frame = ui.Rect(i%COLS * bw + 5, i//COLS * bh, bw, bh).inset(2, 2)
btn.alpha = 1 if btn.frame.max_y < self.height else 0
def button_action(self, sender):
webbrowser.open(sender.name)
def main():
widget_name = __file__ + str(os.stat(__file__).st_mtime)
v = appex.get_widget_view()
if v is None or v.name != widget_name:
try:
with open("trends.pickle", "rb") as f:
SHORTCUT = pickle.load(f)
except:
SHORTCUT = [{'lastUpdate':time.time() - 86400}]
with open("trends.pickle", "wb") as f:
pickle.dump(SHORTCUT, f)
SHORTCUTS = get_trend() if time.time() - SHORTCUT[-1]['lastUpdate'] > 1800 else SHORTCUT #1800 secondes depuis la dernière fois(Une demi-heure)Mettre à jour après ce qui précède
v = LauncherView(SHORTCUTS)
v.name = widget_name
appex.set_widget_view(v)
if __name__ == '__main__':
main()
** Pythonista3 est bon ** (j'espère que plus de packages pourront être utilisés ...)
Recommended Posts